Войти

Показать полную графическую версию : Assembler


Guest
08-11-2002, 18:36
Всем привет, кто-нибудь знает как написать эту рограмму на Assemblere. Мучаюсь уже несколько дней и ничего не получается.Помогите кто может, заранее спасибо.
Написать программу формирования сжатой строки символов. Сжатие заключается в удалении пробелов из исходной строки при просмотре её слева направо.

Dexter
24-11-2002, 14:13
Перешли полное содержание задачи попробую помочь
:)

BSurin
18-07-2003, 16:39
Можно так. Если что не ясно, то пиши 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




© OSzone.net 2001-2012