Не срабатывает функция 09h - Assembler
Формулировка задачи:
model compact stack 256 dataseg out db 10 dup(?) codeseg start: mov ax, @data mov ds, ax mov ah, 0ah lea dx, out int 21h mov ah, 04Ch mov al, 0h int 21h end start
Решение задачи: «Не срабатывает функция 09h»
textual
Листинг программы
.386 dos_inp macro lbl, sz _ib_ struc max db sz ; наибольшая длина строки len db ? ; сюда вернется настоящая длина bf db sz dup(?) ; тут будет то, что ввели _ib_ ends lbl _ib_ <> endm .stack 100 .data req db 'Enter string:$' dos_inp buf, 100 .code start: mov ax, @data mov ds, ax mov es, ax ; Вывод на экран mov ah, 09h lea dx, req int 21h ; ввод строки mov ah, 0Ah lea dx, buf int 21h ;; movzx cx, byte ptr buf.len lea si, buf.bf
Объяснение кода листинга программы
- Объявление макроса dos_inp, который используется для ввода строки с помощью функции 09h (prompt) и функции 0Ah (input).
- Объявление сегментов данных и кода.
- Начало кода: вывод на экран запроса на ввод строки.
- Ввод строки с помощью функции 0Ah (input).
- Вычисление длины введенной строки и сохранение ее в переменной len.
- Переменная bf содержит введенную строку.
- Переменная max содержит максимальную длину строки, которую можно обработать.
- Не срабатывает функция 09h, поскольку она не используется в коде.
- Код не содержит никаких других действий или операций.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д