Удалить пробелы из строки - Assembler
Формулировка задачи:
Программа выводит введенные в строку цифры в столбик в двоичной СС, на месте пробела ставит нули, коих хотелось чтобы не было(просто пустая строка). Может подкинет кто идею? Спасибо.
include 'emu8086.inc'
data segment
in_str db 80,?,82 dup (?)
out_str db 80 dup (?)
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax,@data
mov ds,ax
mov es,ax
cld
lea dx, in_str
mov ah, 0ah
int 21h
xor cx, cx
;-----------BBoD--------------------
mov cl, byte ptr [in_str+1]
lea si, in_str+2
lea di, out_str
;--------BblBoD B CTOJlbuk----------
mov ah,02h
gotoxy 0,1
ckl:
mov dl,in_str[si]
and dl, 0fh
push dx
inc si
mov dl,13
int 21h
mov dl,10
int 21h
;---------------Tyna nepeBoD--------------
pop dx
push cx
mov bl,dl
mov cx,8
ob1:
shl bl,1
jc ob2
mov dl,'0'
jmp ob3
ob2:
mov dl,'1'
ob3:
mov ah,2
int 21h
loop ob1
pop cx
loop ckl
mov ax, 4c00h
int 21h
ends
end startРешение задачи: «Удалить пробелы из строки»
textual
Листинг программы
cmp al,'0' jb error cmp al,'9' ja error cmp al, ' ' jz error
Объяснение кода листинга программы
- Создается переменная
alдля хранения текущего символа. - Выполняется сравнение значения переменной
alс символом '0'. - Если значение
alменьше '0', происходит переход к меткеerror. - Выполняется сравнение значения переменной
alс символом '9'. - Если значение
alбольше '9', происходит переход к меткеerror. - Выполняется сравнение значения переменной
alс символом пробела ' '. - Если значение
alравно пробелу, происходит переход к меткеerror.