Wie kann ich DB eingeben?
-
Ich habe folgendes Problem.
Und zwar habe ich zwei vorgegebene Arrays, mit denen gearbeitet wird.
bzw. mit den Zahlen dadrinnen.Es schaut ungefähr so aus.
array db 1, 3, 4, 5
array2 db 3, 4, 5, 6Ich möchte diese aber selbst per Eingabe setzen, quasi die Zahlen wie oben selber setzen - und das per Interrupt.
Ich habs schon mit
mov dx, offset array
mov ah, 08h
int 21hProbiobiert, wo ich nach aufforderung eben die zahlen wie z.b: 3, 6, 7, 8 eingebe. Aber die übernimmt er nicht.
Was mache ich falsch?
-
Google mal nach Ralf Brows Interrupt List.
bzw. Strings kann man einlesen mit:
mov ah,7 int 21h
-
Moin.
Alternativ kann auch der "BUFFERED INPUT" verwendet werden, womit die Anzahl der Eingabe begrenzt werden kann.
RBIL->inter61b.zip->INTERRUP.F--------D-210A------------------------------- INT 21 - DOS 1+ - BUFFERED INPUT AH = 0Ah DS:DX -> buffer (see #01344) Return: buffer filled with user input Notes: ^C/^Break are checked, and INT 23 is called if either detected reads from standard input, which may be redirected under DOS 2+ if the maximum buffer size (see #01344) is set to 00h, this call returns immediately without reading any input SeeAlso: AH=0Ch,INT 2F/AX=4810h Format of DOS input buffer: Offset Size Description (Table 01344) 00h BYTE maximum characters buffer can hold 01h BYTE (call) number of chars from last input which may be recalled (ret) number of characters actually read, excluding CR 02h N BYTEs actual characters read, including the final carriage return
Speicherbereich reservieren:
DOSinputbuffer DB Anzahl_1 dup (30h) array DB Anzahl_2 dup (0EEh) array2 DB Anzahl_3 dup (0FFh)
Danach muss vom ASCII-Wert aber auch noch 30h abgezogen werden, weil im Array sollen vermutlich wohl keine ASCIIs reingeschrieben werden. Im Falle sich ein Wert aus zwei, oder mehreren ASCII-Ziffern zusammensetzt, dann müssen die einzelnen Ziffern je nach Position im Dezimal-System nach Abzug von 30h jeweils mit 10 multipliziert und dann zusammen gefügt werden.
Dirk
-