Meine Informationen stammen aus here. Die Zuweisung fragt nach einem Programm, das nicht mehr als 20 Zeichen einliest, diese Zeichen in Großbuchstaben umwandelt und die Eingabe dann als Großbuchstaben druckt.Ich verstehe nicht, wie Interrupt 21 zu verwenden, AH = 0ah
Ich habe keine Ahnung, wie Sie auf die Eingabe von int21/AH = 0ah zugreifen. Ich kann wirklich keine genauere Frage stellen, wenn ich nicht verstehe, was oben verlinkt ist. Kann jemand das erklären? Außerdem verwende ich TASM, wenn das einen Unterschied macht. Außerdem teste ich das auf Freedos.
UPDATE1:
Ordnung, dank Ihrer Hilfe, ich glaube, ich verstehe, wie die Interrupt eingerichtet werden, muss und verhält.
Setup: I mit einem DS bezeichnen muss: dx, wo ich diese Puffer will
I ds setzen müssen existieren: dx bis 20 (die die maximale Anzahl von Zeichen setzt der Puffer halten kann)
ich habe ds einzustellen: dx + 1 bis 0 (was ich denke, irgendwie eine min Anzahl von Zeichen auf lesen)
Eigentlich nennen INT21/AH = 0Ah, die ds gehen: dx und interpretieren Sie die voreingestellten Bytes. Es wird das Programm zu stoppen, während es für die Eingabe wartet
INT21/AH = 0Ah von ds füllen wird: dx + 2 + n mit meinem Eingang (wobei n die Anzahl der eingegebenen Zeichen einschließlich ‚\ r‘)
Meine Frage ist jetzt, wie mache ich das. Ich habe gerade die x86 Assembly Language Reference erneut durchgesehen, konnte aber noch nichts hilfreiches finden.
-Code Ich habe bisher bekam
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
Dann verhält es sich wie int21/AH = 1h, die in einem einzelnen Zeichen liest. Ich weiß, dass dieser Interrupt das Zeichen in das Register AL bringt. Wie würde ich herausfinden, wo der Puffer von Charakteren wäre? –
Auch habe ich gerade realisiert. Die Offset-Tabelle bedeutet, dass die tatsächlichen Zeichendaten bei zwei Bits oder Bytes (wahrscheinlich Bytes) beginnen, von wo die Rückkehrdaten im Speicher existieren. Gedanken? –
Ja, die tatsächliche Eingabe beginnt bei DS: DX + 2. Diese Datei ignoriert jedoch diese Eingabe und verwendet diese Funktion nur, um die Ausführung anzuhalten. –