Assembly 我的程序正在打印所有的可能性
我的程序正在打印所有的可能性,它是在汇编中编写的。我正在使用cmp助记符和写系统调用(Linux)。如果我使用printf,一切都正常工作,所以我认为问题在于我的系统调用,而不是跳转Assembly 我的程序正在打印所有的可能性,assembly,x86,printf,system-calls,Assembly,X86,Printf,System Calls,我的程序正在打印所有的可能性,它是在汇编中编写的。我正在使用cmp助记符和写系统调用(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 glo
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
您的
msg1\u len:eq$-msg1
行位于msg2
之后的错误位置,因此它也包括msg2
的长度
学习使用调试器
PS:另外,您可能希望消息使用
db
而不是dw
,并且系统调用不需要终止零。有一天,人们可能会意识到x86只是一种可以编写汇编代码的体系结构。