我需要编写一个函数,它在真实模式下输出一个字符串。有一个代码:
;; ds:si - string address, cx - length of string
cld
putc:
lods
mov ah, 0x0E
xor bh, bh
int 0x10 ;; display character, advancing cursor and scrolling screen
;; as necessary
loop putc
但它只输出第一个字符几次(由CX寄存器定义(,也就是说,SI寄存器不会增加。哪里有错误?
lods
不是有效的指令助记符;你可能是指lodsb
。
在我的汇编程序(nasm(中,一个不是有效助记符的标记会被解析为标签,因此不会发出任何代码。因此,您的lods
实际上是一个无操作,所以难怪SI不会增加。(不过汇编程序确实会发出警告,是吗?(