我很抱歉打扰了我的导师。过去几天我发布了一些问题。他们伸出援助之手。 通过在x86机器上使用Ubuntu11.04中的NASM,最近我发现了工作中的另一个混乱。它是“如何打印8位值”? 假设我的代码片段如下:
section .data
var db "string"
section .text
global main
main:
nop
xor ebx,ebx
mov dl,byte[var+ebx]
mov al, dl ; setting to AL the ASCII character to write
mov bh, 0 ; setting the page number to 0 (all in the same page)
mov bl, 7 ; setting to bl the foreground pixel color
mov ah, 0xE ; INT10 E sub mode --> Write Text in Teletype Mode
int 10 ; "calling" to the interrupt.
nop
现在,我想只打印dl。上面的代码使用了@Shmil The Cat的提示。它会引起分段错误。我们如何解决这个问题?
提前感谢你。
答案 0 :(得分:1)
在linux上你可以使用putchar:
global main
extern putchar
section .data
var db "string"
section .text
main:
mov ebx, 0 ; index
mov dl, [var + ebx]
push edx
call putchar
add esp, 4
ret
要调用一个需要char的函数,你可以推送一个完整的单词。该函数将使用最低有效字节。