Вывести сообщение в зависимости от длины строки - Assembler

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Начал недавно изучать ассемблер, но всё еще не могу понять его. Помогите, пожалуйста, вот с такой задачей: "Необходимо ввести с клавиатуры строку, а программу должна вывести следующие слова :длинное, если кол-во символов>10, короткое, если <10 и ноль, если ничего не введено".

Решение задачи: «Вывести сообщение в зависимости от длины строки»

textual
Листинг программы
.data
buf db 255,?,dup 255(?)
;сообщения для вывода
 
.code
Start:
mov ax,@data
mov ds,ax
lea dx,buf
mov ah,0Ah
int 21h
 
mov ah,9
cmp buff[1],0 
je outzero ;если длина 0
cmp buf[1],10
jb outshort ;если длина < 10
lea dx,msglong ;в иных случаях длинная
jmp output
outshort:
lea dx,msgshort
jmp output
lea dx,msgzero
output: 
int 21h
exit:   
mov ax,4c00h
int 21h
end start

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. Переменная buf инициализируется значением 255, следующим за ним неизвестным значением (предположительно это длина строки), и далее 255(предположительно это сама строка).
  2. Код переходит к метке Start.
  3. Переменная ax получает значение 255 (предположительно это сегмент данных).
  4. Переменная ds получает значение ax, т.е. сегмент данных.
  5. Код переходит к метке outzero.
  6. Если значение первого байта строки (представленное в регистре al) равно 0, то код переходит к метке outzero.
  7. Если значение первого байта строки (представленное в регистре al) меньше или равно 10, то код переходит к метке outshort.
  8. В противном случае, когда значение первого байта строки больше 10, код переходит к метке outlong.
  9. Если значение первого байта строки равно 0, то выводится сообщение Сообщение для случая, когда длина строки равна 0.
  10. Если значение первого байта строки меньше или равно 10, то выводится сообщение Сообщение для случая, когда длина строки меньше или равна 10.
  11. В противном случае, когда значение первого байта строки больше 10, выводится сообщение Сообщение для случая, когда длина строки больше 10.
  12. Код переходит к метке exit.
  13. Переменная ax получает значение 4C00h (предположительно это код завершения работы программы).
  14. Код вызывает функцию окончания работы программы с помощью команды int 21h.
  15. Код завершается.

Оцени полезность:

5   голосов , оценка 4 из 5