Как сравнить входные данные и проверить, является ли число отрицательным, положительным или нулевым - PullRequest
0 голосов
/ 09 ноября 2018

Я написал исходный код для этой проблемы, но хочу иметь возможность принять -1 в качестве ввода. Сейчас требуется только один вход 1 или -, а затем отображается результат.

Я новичок, когда дело доходит до ассемблера и emu8086, поэтому мне бы очень помогло, если бы кто-то помог мне решить эту проблему.

Вот код на данный момент:

.model small
.stack 100h
.data
msg db 0ah,0dh,'negative$'
msg1 db 0ah,0dh,'positive$'
msg2 db 0ah,0dh, 'zero$'
.code
main proc
    mov ax,@data
    mov ds,ax

    mov ah,1
    int 21h
    mov bl,al

    mov cl,30h


    cmp bl,cl
    jl negative
    je zero
    jg positive


    negative:
    lea dx,msg
    mov ah,9
    int 21h 
    jmp END

    zero:
    lea dx,msg2
    mov ah,9
    int 21h
    jmp END

    positive:
    lea dx,msg1
    mov ah,9
    int 21h


    END: 
    mov ah,4ch
    int 21h
    main endp
end main

1 Ответ

0 голосов
/ 09 ноября 2018

Если ваш ввод представляет собой строку цифр, с дополнительным префиксом -, вам следует проверить наличие необязательного - вместо проверки, является ли код ASCII> или <чем <code>30h. Если вы поддерживаете только однозначные числа, то, увидев -, вы должны прочитать ровно еще 1 байт.

...