所以我開始寫一個「內核」這樣說,我正在嘗試讀取一個字符串並將其打印回我。問題出現在我執行它時,它只是打印3個相同的字符,而不是我在線上寫的內容。我的讀寫字符串函數吐出了%%%,而不是我放入的3個字符
read_string:
call newline
mov si, read_attempt
call print
call newline
push bx
mov ah, 0x03
int 0x10
mov dl, 0
int 0x10
;read 1st char
mov ah, 0x08
int 0x10
mov bl, al
pop bx
;read 2nd char
mov ah, 0x03
int 0x10
add dl, 1
int 0x10
mov ah, 0x08
int 0x10
mov bl, al
pop bx
;read 3rd char
mov ah, 0x03
int 0x10
add dl, 1
int 0x10
mov ah, 0x08
int 0x10
mov bl, al
pop bx
;try to write all 3 chars
call newline
mov si, write_attempt
call print
call newline
push bx
mov al, bl
call printchar
push bx
mov al, bl
call printchar
push bx
mov al, bl
call printchar
call newline
mov si, read_write_success
call print
call newline
ret
請記住,之前的所有「第二部門」在2個月前寫的一切後,已被寫入在過去2天。我也使用NASM來組裝代碼。
這裏是它在做什麼imgur
我不認爲詮釋10h,啊= 08h做你認爲它的確如此。我建議你閱讀關於int 10h的內容,然後更詳細地描述你正在嘗試做什麼。 – prl
做int 10h和ah = 08h應該「讀取光標位置的字符和屬性」並將char放入al中,這樣我就可以執行一個mov bl,al並將它推入堆棧供以後使用 – Psaidiwd
這是正確的;光標位置處的字符是什麼?另外,int 10h的其他要求是什麼? – prl