使用LODS指令以实模式输出字符串



我需要编写一个函数,它在真实模式下输出一个字符串。有一个代码:

;; 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不会增加。(不过汇编程序确实会发出警告,是吗?(

最新更新