使用 LODS 指令在实模式下输出字符串
String Output in Real-Mode by using LODS instruction
我需要写一个函数,在实模式下输出一个字符串。
有那个代码:
;; 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寄存器定义),a.e。 SI 寄存器不增加。
是哪里出错了?
lods
不是有效的指令助记符;你可能是说 lodsb
.
在我的汇编程序 (nasm) 上,不是有效助记符的标记被解析为标签,因此不会发出任何代码。因此,您的 lods
实际上是 no-op,所以难怪 SI 不会递增。 (不过,汇编器确实会发出警告,你的呢?)
我需要写一个函数,在实模式下输出一个字符串。 有那个代码:
;; 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寄存器定义),a.e。 SI 寄存器不增加。 是哪里出错了?
lods
不是有效的指令助记符;你可能是说 lodsb
.
在我的汇编程序 (nasm) 上,不是有效助记符的标记被解析为标签,因此不会发出任何代码。因此,您的 lods
实际上是 no-op,所以难怪 SI 不会递增。 (不过,汇编器确实会发出警告,你的呢?)