新人在這裏,我已經有一個問題。輸出數據在NASM的註冊值
我正在修改Jeff Duntemann的組裝書中使用的示例代碼,並且我想打印出存儲在數據寄存器中的整數值給終端?
什麼下面的下面的代碼確實是,它打印出好琴絃,在ECX推動價值不錯,但是當它到達了以下內容:
pop ecx
mov eax,4
mov ebx,1
mov edx, ecx
int 80h
它不上顯示EDX的內容終端,雖然我認爲我告訴它與mov eax,4等。
任何人都能夠給我任何「指針」(雙關語意)?參考
守則(修訂爲的17/06/2012):
SECTION .data
submessage: db "I am subtracting 5 from 10!", 10
msglen: equ $-submessage
ansmsg: db "Answer is:", 10
msglen2: equ $-ansmsg
EOL: db 10
SECTION .bss
msg: resd 2 ; reserve space for 2 dwords
SECTION .text
global _start
_start: nop
;Displays test on shell
mov eax,4 ;print to terminal
mov ebx,1
mov ecx, submessage
mov edx, msglen
int 80h ;"I am subtracting 5 from 10!"
mov eax,4 ;print to terminal
mov ebx,1
mov ecx, ansmsg
mov edx, msglen2
int 80h ;"Answer is..."
;Subtraction operation below:
mov edx, 10
sub edx, 5
mov [msg], edx ; store 5 in msg
; now we need to print msg to terminal
mov eax, 4 ;print to terminal
mov ebx, 1
mov dword [msg+1], 0xa ;helps prints something out!
;Encountered problem here= prints out 'Answe' instead of integer '5'
push dword 2 ; store size of msg
push dword [msg] ; push to stack contents of msg
int 80h
add esp, 3 ;clean stack (2 push calls *4)
int 80h
; I like labels :)
sys_exit: mov eax,1 ;exit status
mov ebx,0
int 80h
nop
PS-如果我行縮進很爛,我想知道我怎麼能改善它;恕我直言學習大會得到更多的吸引力,一旦你瞭解了最初的學習「駝峯」:)
是的!我嘗試了你的方法(你一直都在談論ASCII問題;程序最初解釋爲ASCII 5而不是整數5,當它將數值輸出到屏幕上時) 我做了一個類似的程序,它接受一個整數作爲輸入存儲到一個變量,我申請你的解決方案,截至目前該程序輸出正確的值,我是一個快樂的小兔子,謝謝! – Halodude
很高興聽到,特別是因爲我還沒有找到時間通讀你的後續行動。 :-) –