section .data
msg db 'Largest number :: '
len equ $ - msg
num1 dd '47'
num2 dd '51'
num3 dd '22'
section .bss
largest resb 2
section .text
global _start
_start:
mov ecx, [num1]
cmp ecx, [num2]
jg check_third
mov ecx, [num2]
check_third:
cmp ecx, [num3]
jg _exit
mov ecx, [num3]
_exit:
mov [largest], ecx
mov edx, len
mov ecx, msg
mov ebx, 1
mov eax, 4
int 0x80
mov edx, 2
mov ecx, largest
mov ebx, 1
mov eax, 4
int 0x80
mov eax, 1
int 0x80
回答是47,而它必须是51
答案 0 :(得分:0)
您已将数字声明为一串字符串。删除引号以使比较正确:
num1 dd 47
num2 dd 51
num3 dd 22
请记住,当您想要打印结果时,您必须将结果转换为字符串。
要理解为什么将数字作为字符串没有意义,请考虑这些字符串如何存储在内存中:'51
'由字符序列'5','1'
组成(即'5'
存储在'1'
之前,因为它是字符串的第一个字符)。 '5','1'
与0x35,0x31
相同,与0x3135
相同
如果我们以'47'
的相同方式查看0x3734
,现在应该清楚cmp
这些内容不会起作用。