В исходной строке оставить между словами лишь по одному пробелу, удалив лишние - Assembler
Формулировка задачи:
Выручьте пожалуйста студента с контрольной по Assembler, есть 6 заданий, может у кого какие примеры похожие есть, киньте, а я разберусь как-нибудь, ничего в голову не лезет ввиду не изучения этого языка (Assembler) в принципе. Заранее благодарен...
Задана строка слов. Словом считается последовательность символов, разделенная пробелами,В исходной строке оставить между словами лишь по одному пробелу, удалив лишние.
Решение задачи: «В исходной строке оставить между словами лишь по одному пробелу, удалив лишние»
textual
Листинг программы
;================================================================ MOV SI,buff+2 ; адрес строки XOR BX,BX ; BL = предыдущий символ printf: LODSB ; читаем байт CMP AL,13 ; это ENTER? (маркер конца в буфере) JZ exit ; да - выходим CMP AL,BL ; это предыдущий символ? JZ printf ; да - читаем сл.символ MOV BL,AL ; сохраняем введённый символ INT 29h ; выводим его на экран JMP printf ; следующий символ ;================================================================
Объяснение кода листинга программы
В данном коде выполняется следующая последовательность действий:
- MOV SI, buff+2; адрес строки
- XOR BX, BX; BL = предыдущий символ
- printf:
- LODSB; читаем байт
- CMP AL, 13; это ENTER? (маркер конца в буфере)
- JZ exit; да - выходим
- CMP AL, BL; это предыдущий символ?
- JZ printf; да - читаем предыдущий символ
- MOV BL, AL; сохраняем введённый символ
- INT 29h; выводим его на экран
- JMP printf; следующий символ
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д