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