首页 > 解决方案 > 如何比较输入并检查数字是负数、正数还是零

问题描述

我为这个问题编写了初始代码,但我希望能够-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

标签: assemblyemu8086

解决方案


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


推荐阅读