Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Название темы: Assembler
Показать сообщение отдельно
BSurin


Сообщения: n/a

Профиль | Цитировать


Можно так. Если что не ясно, то пиши bsurin@mail.ru

.model tiny
.code
org 100h
start:
; вывод исходной строки
lea dx, mes
mov ah, 09
int 21h
; сжатие
cld; флаг направления - просмотр слева направо
mov si, offset mes ; ES:SI - начало строки
push si
pop  di
@@1:
lodsb ; загрузить в AL символиз DS:SI
cmp al, '$'; это символ конца строки ?
je @exit; "ДА" - выход
cmp al, ' '; это пробел ?
je  @@1; "ДА" - перейти к следующему
stosb; записать по адресу ES:DI
jmp@@1; следующий символ
@exit:
stosb; записать символ конца строки
; для ясности перейдем на новую строку
; с помощью ф-ии ДОС
mov ah, 2
mov dl, 0Dh; переход в начало строки
int 21h
mov dl, 0Ah; переход на след.строку
int 21h

;вывод сжатой
lea dx, mes
mov ah, 9
int 21h

ret
mes db 'Это строка для сжатия$'

end start

Отправлено: 16:39, 18-07-2003 | #3

Название темы: Assembler