Сборка NASM x86 - Сравнение входных данных с целочисленными значениями - PullRequest
1 голос
/ 02 апреля 2012

Я пытаюсь сравнить входные данные с целочисленным значением

здесь базовый код, который я использую

section .bss
    input resb 2

section .text
global _start
_start:
    mov eax, 3
    mov ebx, 1
    mov ecx, input
    mov edx, 5
    int 0x80
    mov eax, [input]
    cmp eax, 20 // This is what I cannot get to work, it never compares it to 20 even if i enter 20 as input
    je next

Все, что я действительно хочу знать, это как сделать оператор Ifв сборке для сравнения ввода с целым числом.

Я бы очень признателен за любую помощь с этим, спасибо.

Ответы [ 2 ]

2 голосов
/ 02 апреля 2012

Вы сравниваете eax (первый байт ввода ) with the integer 20`. Это управляющий символ DC4, который почти наверняка не является вашим вводом.

Если вы хотите сравнить с числом20, тогда вам нужно сначала преобразовать ввод в число (и принять более одного символа ввода).

0 голосов
/ 04 февраля 2013

Попробуйте использовать этот код ...

section .bss
    input resb 2

section .text
global _start
_start:
    mov eax, 3
    mov ebx, 1
    mov ecx, input
    mov edx, 5
    int 0x80
    mov eax, dword[input];dword is require for double word size
    cmp eax, 20 
    je next
...