如何比较输入并检查数字是负数,正数还是零

时间:2018-11-09 09:50:20

标签: assembly emu8086

我为此问题编写了初始代码,但我希望能够以-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 :(得分:0)

如果输入的是数字字符串,可选地以-为前缀,则应检查可选的-,而不是检查ASCII码是大于还是小于30h。如果您仅支持一位数字,那么看到-意味着您还需要再读取1个字节。