【发布时间】:2014-03-31 12:49:48
【问题描述】:
我的程序正在打印所有可能性,它是用汇编编写的,我正在使用 cmp 助记符和 write 系统调用 (Linux)。如果我使用 printf,一切正常,所以我认为问题出在我的系统调用上,而不是在跳转中。
section .data
msg1: dw "Y > X",10,0
msg2: dw "X > Y",10,0
msg1_len: equ $-msg1
msg2_len: equ $-msg2
section .text
;extern printf
global main
main:
mov ebx, 10
mov ecx, 20
cmp ebx, ecx
jc .xGreater
.xGreater:
mov eax, 4
mov ebx, 1
mov ecx, msg1
mov edx, msg1_len
int 0x80
jmp .done
.yGreater:
mov eax, 4
mov ebx, 1
mov ecx, msg2
mov edx, msg2_len
int 0x80
jmp .done
.done:
mov eax, 1
mov ebx, 0
int 0x80
【问题讨论】:
-
有一天,人们可能会意识到 x86 只是一种可以编写汇编代码的架构。
标签: assembly x86 printf system-calls