Как использовать код сборки x86 для сравнения целых чисел? - PullRequest
0 голосов
/ 24 марта 2020

Я пытаюсь заставить эту программу кода ассемблера сравнивать три целых числа и возвращать наибольшую переменную, я считаю, что этот код должен работать, однако моя печать дает мне целые числа 6 и 9. Три переменные установлены в 3, 6 и 9 в ASCII

Вот мой код:

section .data

str: db 'Hello world!', 0Ah
var1: dw 51 
var2: dw 54
var3: dw 57
result: dw 00h

section .text

global _start

_start:

       mov eax, dword [var1]
       mov ebx, dword [var2]

       cmp eax, ebx

       jge nextstate

       mov dword [result], ebx

       jmp print


nextstate:

       mov eax, dword [var1]
       mov ebx, dword [var3]

       cmp eax, ebx

       jge finalstate

       mov dword [result], ebx

finalstate:

       mov dword [result], eax

print:

       mov eax, 4
       mov ebx, 1
       mov ecx, result
       mov edx, 13
       int 80h

       mov eax, 1
       mov ebx, 0
       int 80h
...