Ich verstehe nicht, wie man Interrupt 21 verwendet, AH = 0ah

Meine Informationen kommen vonHier. Bei der Zuweisung wird nach einem Programm gefragt, das nicht mehr als 20 Zeichen einliest, diese Zeichen in Großbuchstaben umwandelt und die Eingabe dann als Großbuchstaben druckt.

Ich habe keine Ahnung, wie ich auf die Eingabe von int21 / AH = 0ah zugreifen soll. Ich kann wirklich keine genauere Frage stellen, wenn ich nicht verstehe, was oben verlinkt ist. Kann das jemand erklären? Außerdem benutze ich TASM, wenn das einen Unterschied macht. Außerdem teste ich das auf freedos.

UPDATE1:

Okay, dank Ihrer Hilfe glaube ich zu verstehen, wie der Interrupt eingerichtet werden muss und wie er sich verhält.

Konfiguration: Ich muss ein ds: dx angeben, in dem dieser Puffer vorhanden sein soll

Ich muss ds: dx auf 20 setzen (was die maximale Anzahl von Zeichen festlegt, die der Puffer halten kann)

Ich muss ds: dx + 1 auf 0 setzen (was meiner Meinung nach eine minimale Anzahl von einzulesenden Zeichen bedeutet)

Rufe tatsächlich int21 / AH = 0ah auf, was zu ds: dx geht und die voreingestellten Bytes interpretiert. Das Programm wird angehalten, während auf die Eingabe gewartet wird

int21 / AH = 0ah wird von ds: dx + 2 + n mit meiner Eingabe gefüllt (wobei n die Anzahl der eingegebenen Zeichen einschließlich '\ r' ist)

Meine Frage ist jetzt, wie mache ich das? Ich habe gerade die x86-Assembler-Referenz noch einmal durchgesehen, konnte aber noch keine hilfreichen Informationen finden.

Code, den ich bisher habe

           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

Antworten auf die Frage(3)

Ihre Antwort auf die Frage