Assembly 如何在NASM中打印8位值
很抱歉打扰我的导师们。最近几天我发布了一些问题。他们伸出了手来帮助我。 通过在x86机器上使用Ubuntu11.04中的NASM,最近我在工作中发现了另一个困惑。它是“如何打印8位值”? 假设我的代码片段如下所示:Assembly 如何在NASM中打印8位值,assembly,x86,nasm,Assembly,X86,Nasm,很抱歉打扰我的导师们。最近几天我发布了一些问题。他们伸出了手来帮助我。 通过在x86机器上使用Ubuntu11.04中的NASM,最近我在工作中发现了另一个困惑。它是“如何打印8位值”? 假设我的代码片段如下所示: section .data var db "string" section .text global main main: nop xor ebx,ebx mov dl
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提示。这就产生了分割错误。我们如何解决这个问题
提前感谢您。在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
要调用需要一个字符的函数,需要推送一个完整的字。该函数将使用最低有效字节。在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
要调用需要一个字符的函数,需要推送一个完整的字。该函数将使用最低有效字节。您可以使用C运行时函数吗?@ShmilTheCat:不。我知道我不能在这里使用,也可以使用。出于这个原因,我在问help@AntoineMathys:你好,先生!我既不在dos下工作,也不在windows下工作。我在用Ubuntu11.04。你能使用C运行时函数吗?@ShmilTheCat:不,我知道我不能在这里使用它。出于这个原因,我在问help@AntoineMathys:你好,先生!我既不在dos下工作,也不在windows下工作。我正在使用Ubuntu11.04。我想部分问题是没有使用C运行时函数。。。见评论above@Antoine马蒂斯:非常感谢你,导师。它解决了我的问题。我真的很感谢你。我认为问题的一部分不是使用C运行时函数。。。见评论above@Antoine马蒂斯:非常感谢你,导师。它解决了我的问题。我真的很感谢你