Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .MODEL small ;отводим под стек и под данные по 64Кб
- .STACK 100h ;отмечаем начало сегмента стека
- .DATA ;отмечаем начало сегмента данных
- NL db 0Ah, 0Dh, '$'
- Buf DB 255, 0, 256 DUP (0) ;
- .CODE ;отмечаем начало сегмента кодов
- main PROC
- mov ax,@data ;копируем адрес
- mov ds,ax ;сегмента данных
- mov dx,offset Buf ;считываемстроку с клавиатуры
- mov ah,0Ah
- int 21h
- xor cx,cx
- mov al,[Buf+1] ;если считано 0 байт, то выход из
- mov cl,al ;задаем количествоповторений (длина строки)
- test al,al ;программы
- jz Exit
- mov ah,09h
- mov dx,offset NL ; перейти на следующую строку
- int 21h
- mov si,offset Buf+2
- mov dh,0Dh ;подготовка - суёмв регистр символ,
- ;которого не можетбыть вовведённой строке
- Cycle:
- mov dl,[si] ;считать символ
- cmp dl,' ' ;сравнить с пробелом
- jne Print ;если не пробел - вывести
- cmp dx,' ' ;аесли пробел - то предыдущий былпробел или нет?
- je NextChar ;если два пробела подряд -не печатаем
- Print:
- mov ah,02h ;выбор функции 2
- int 21h ;вызов DOS
- NextChar:
- mov dh,dl ;сохранитьтекущийсимвол для теста на следующем витке
- inc si ;перейти кследующему символу
- loop Cycle
- Exit:
- mov AX,4C00h ;выход
- int 21h ;из программы
- main ENDP
- END main
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement