Я пытаюсь создать программу, которая сравнивает два числа x и y (предопределено в коде) и выводит сообщение «Самое большое число», а затем большее. Тем не менее, это довольно странная ошибка, которую трудно объяснить.
- Если выводится сообщение «Самое большое число», оно ВСЕГДА принимает x как самое большое число и выдает его. Он также выводит h перед сообщением, поэтому он говорит: «hНаибольшее число - x»
- Если я добавлю какой-либо символ перед T в «The», он ВСЕГДА принимает y как самый большой и по-прежнему выводит h перед сообщением, например «hdСамое большое число - y»
Конечно, если я добавлю другие символы в сообщение, оно также все испортит. Вот мой код:
section .text
global _start
_start:
mov eax, [x]
sub eax, '0'
mov ebx, [y]
sub ebx, '0'
cmp eax, ebx
ja case1
case2: add ebx, '0'
mov [big], ebx
jmp next
case1: add eax, '0'
mov [big], eax
next: mov ecx, msg
mov edx, len
call cout
mov ecx, big
mov edx, 1
call cout
mov eax, 1
int 0x80
cout: mov ebx, 1
mov eax, 4
int 0x80
ret
section .data
big db 0
x db '9'
y db '8'
msg db "The biggest number is "
len equ $ - msg
segment .bss
sum resb 1