Я не понимаю, как использовать прерывание 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