所以我开始写一个“内核”这样说,我正在尝试读取一个字符串并将其打印回我。问题出现在我执行它时,它只是打印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