0
我正在學習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
我正在學習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 –