我在程序集内部编写了一个简单的程序来比较两个数字。出于某种原因,当数字相等时,程序按预期工作。但是,当数字不相等时,会出现分段错误。
这是我的代码:
1 section .data
2 entermsg db 'Enter a Number: '
3 lenenter equ $-entermsg
4
5 equalmsg db 'The two numbers are equal'
6 lenequal equ $-equalmsg
7
8 nemsg db 'The two numbers ARE NOT equal '
9 lennemsg equ $-nemsg
10
11 section .text
12 global _start
13
14 _start:
15 mov ax, 1
16 mov bx, 4 ; When values inside ax and bx are equal, the program works
17
18 cmp ax,bx
19 je equal
20
21 cmp ax,bx
22 jne unequal
23
24 mov eax, 1
25 int 0x80
26
27 equal:
28 mov eax, 4
29 mov ebx, 1
30 mov ecx, equalmsg
31 mov edx, lenequal
32 int 0x80
33
34 mov eax, 1
35 int 0x80
36
37 unequal:
38 mov eax, 4
39 mov ebx, 1
40 mov ecx, nemsg
41 mov edx, lennemsg
42 int 0x08
43
44 mov eax, 1
45 int 0x80
我在Ubuntu 16.04LTS上使用NASM和链接器
任何帮助表示赞赏! 感谢