Misaki_526 发表于 2014-5-24 00:46:45

关于汇编验证整数问题

怎么样才能判断,从键盘输入的数是否是一个合法的整数?而且能判断出来(浮点数不是整数,负整数也算整数)???
应该怎么用汇编代码实现呢??求助!!!

fayisan 发表于 2014-5-24 01:52:15

思路是:输入的是不是数;不是,请再输入正确的数,是,OK进入下一层判断。
再判断是不是各种类型的数,如果是其中一种就BINGO!显示你输的是什么数。
很简单,多训练下逻辑思维。。。
另外去看看这篇文章:
提问的艺术

Misaki_526 发表于 2014-5-25 11:34:21

fayisan 发表于 2014-5-24 01:52 static/image/common/back.gif
思路是:输入的是不是数;不是,请再输入正确的数,是,OK进入下一层判断。
再判断是不是各种类型的数,如 ...

恩。。那个,判断负整数和浮点数应该怎么实现呢?

oggplay 发表于 2014-5-26 00:39:36

奇怪了,8086CPU没有浮点指令好吧,到8087才有。建议LZ 先看看IEEE浮点表示法。

sy110054455 发表于 2014-5-26 03:05:18

接收到的是字符 你得自己算整数就包括0-9和-号 不在这范围内就可以判定不是整数
这是我写的我也是新手 写的比较乱:sad
sseg         segment para stack
        db 1024 dup(?)
sseg         ends

dseg         segment
buff        db 'Hello Word!',13,10,'$'
inte        db10 dup(?)
dseg         ends

cseg         segment
        assume cs:cseg,ds:dseg,ss:sseg
start:        mov ax,dseg
        mov ds,ax
        mov si,0
        mov dx,offset buff
        mov ah,9
        int 21h
       
get:        mov ah,1
        int 21h
        cmp al,13
        jecheck
        mov inte,al
        inc si
        jmp get

check:        mov al,'$'
        mov inte,al
        xor si,si
        cmp al,inte
        je exit
        mov al,'-'
        cmp inte,al
        jne check2
        inc si
       
check2:        cmp inte,30H
        jlcheck3
        cmp inte,39H
        jgexit
        inc si
        jmp check2
check3:        cmp inte,'$'
        jeprint
        jne exit
               
print:        xor dx,dx
        mov dl,10
        mov ah,2
        int 21h       
        mov dx,offset inte
        mov ah,9
        int 21h
       
        mov ah,1
        int 21h       
exit:       
        mov ax,4c00h
        int 21h
cseg         ends
        end start
页: [1]
查看完整版本: 关于汇编验证整数问题