Не срабатывает функция 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

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

  1. Объявление макроса dos_inp, который используется для ввода строки с помощью функции 09h (prompt) и функции 0Ah (input).
  2. Объявление сегментов данных и кода.
  3. Начало кода: вывод на экран запроса на ввод строки.
  4. Ввод строки с помощью функции 0Ah (input).
  5. Вычисление длины введенной строки и сохранение ее в переменной len.
  6. Переменная bf содержит введенную строку.
  7. Переменная max содержит максимальную длину строки, которую можно обработать.
  8. Не срабатывает функция 09h, поскольку она не используется в коде.
  9. Код не содержит никаких других действий или операций.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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