Я не понимаю, как использовать прерывание 21, AH = 0ah

Моя информация исходит отВот, Присвоение запрашивает программу, которая читает не более 20 символов, преобразует эти символы в верхний регистр и затем печатает ввод заглавными буквами.

Я понятия не имею, как получить доступ к вводу от int21 / AH = 0ah. Я действительно могуне могу задать более точный вопрос, если я не понимаю, что связано выше. Может кто-нибудь объяснить? Также я'Я использую TASM, если это имеет значение. Также я'Я проверяю это на свободе.

Update1:

Хорошо, благодаря вашей помощи, я считаю, что понимаю, как прерывание должно быть настроено и ведет себя.

Настроить: Я должен указать ds: dx, где я хочу, чтобы этот буфер существовал

Я должен установить ds: dx на 20 (который устанавливает максимальное количество символов, которое может содержать буфер)

Я должен установить ds: dx + 1 в 0 (который, я думаю, как-то устанавливает минимальное количество символов для чтения)

На самом деле вызовите int21 / AH = 0ah, который перейдет к ds: dx и интерпретирует предустановленные байты. Это остановит программу, пока она ждет ввода

int21 / AH = 0ah будет заполнять из ds: dx + 2 + n моим вводом (где n - количество введенных символов, включая '\р')

Мой вопрос сейчас, как мне это сделать. Я'Я только что снова просмотрел справочник по языку сборки x86, но покаЯ не смог найти ничего полезного.

Код I 'у нас так далеко

           assume          cs:code,ds:code
code       segment
start:

           mov  ax,code ;moves code segment into reg AX
           mov  ds,ax   ;makes ds point to code segment

           mov  ah,0ah
           int  21h
           mov  ax,1234h  ;breakpoint

           mov  ah,9
           mov  dx,offset message
           int  21h

endNow:
           ;;;;;;;;;;ends program;;;;;;;;;;
           mov  ah,0  ;terminate program
           int  21h   ;program ends

message    db   'Hello world!!!',13,10,'
code       ends
           end  start

Ответы на вопрос(3)

Ваш ответ на вопрос