如何在组件中打印DWord?
问题描述:
我正在学习Assembly,对于我来说能够输出一个数字到屏幕而不是一串文本会很好。我知道如何使用mov eax, 1
来打印字符,但这对DWords不起作用。如何在组件中打印DWord?
我正在使用64位Ubuntu。
的Makefile:
all:
nasm -f elf64 asm.s -o asm.o
ld asm.o -o asm
rm asm.o
答
一个简单的方法来打印的东西将只使用printf
,你问如何打印DWORD,很简单:
extern _printf
SECTION .data
msg: db "Printing a dword: %d",10,0
number: dd 123456789
SECTION .text
global start
start:
push dword [number]
push dword msg
call _printf
add esp, 8
mov eax, 0
ret
生成文件不会帮助任何人没有看到你的代码。向我们展示您已经撰写的内容,并具体描述您收到的错误以及您尝试解决错误的方式。 –
嗨,我没有任何代码,我只是想知道如何打印出一个dword而不是一个ascii字符串。我很抱歉发布makefile,我认为这对汇编器和配置的知道会很有用。我的错。 –
你必须编写一个函数/代码将数字(如双字值)转换为字符串,然后用系统调用打印字符串。更简单的方法是使用_GCC_进行链接,使用函数'main'而不是'_start',然后调用_c_库函数,如'printf'来打印格式化文本。本教程/代码可能有所帮助:https://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml#printf1_64.asm –