Ввести строку из 5 символов, заменить все цифры символом '#' (TASM) - Assembler

Узнай цену своей работы

Формулировка задачи:

Задание: Ввести строку из 5 символов, заменить все цифры символом '#' и вывести рез. на экран. Вот мои попытки, но пока без успешно, много мыслей в голове, но к нужному результату не приводят. Кто сможет подсказать, просто в переходах и ветвлениях еще не совсем разобрался.
CRLF MACRO
mov ah,02h
mov dl,10
int 21h
mov dl,13
int 21h
endM
STAK segment stack
db 512 dup  (?)
STAK ends
DATA segment
stroka db 6,0,7 dup  ('$'), '$'
stroka2 db 6 dup ('$'), '$'
DATA ends
CODE segment
assume cs:CODE, ds:DATA, ss:STAK
start:
xor ax,ax
mov ax,DATA 
mov ds,ax
 
mov dx, offset stroka
mov ah, 0ah
int 21h
CRLF
mov SI, offset stroka+2
MOV CX,5
go:
mov AX,[SI]
cmp ax, 30h
JB M1
cmp ax,39h
JBE M2
 
M1:
mov di, offset stroka2
mov [DI],ax

M2:
mov di, offset stroka2
mov [dI],ax
mov [di],'#'
inc si
inc di
loop go

mov dx, offset stroka2
mov ah, 09h
int 21h
 
mov  ah,4ch
int 21h
CODE ends
end start

Решение задачи: «Ввести строку из 5 символов, заменить все цифры символом '#' (TASM)»

textual
Листинг программы
mov di, offset stroka2 
mov SI, offset stroka+2
MOV CX,5
go:
mov AL,byte ptr [SI] ;считываем байты ,а не слова
cmp al, 30h          ;впрочем сравнивать влюбом случае надо байты,если AH != 0
JB M1
cmp al,39h
JA M1                   ;переход по метке если это не цифры
;иначе заменить на '#'
mov al,'#'  
M1:
mov byte ptr [DI],al
inc si
inc di
loop go

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы