注册 登录
编程论坛 汇编论坛

求指点迷津——带进位任意位加法的问题

丶wist 发布于 2014-10-23 09:44, 4678 次点击
之前已经做过固定两个5位数12345和67890带进位相加,现在深入做由键盘输入要相加的两个数,而且是任意位的,目前是想设置一个段,存放“xx+xxxx=”当判断到为“+”号时第一个数输入完毕,为“=”时第二个数输入完毕,然后相加输出,可是,可是具体操作起来捉襟见肘呀,希望前辈们能指点迷津!
4 回复
#2
wp2319572014-10-23 10:23
这个还是使用高级语言做比较适合
#3
丶wist2014-10-23 16:21
回复 2 楼 wp231957
高级语言当然没这么费劲了,可现在在学汇编,得用汇编来的,脑大了
#4
hu9jj2014-10-23 17:03
从键盘缓冲区中逐个读入字符码,遇到“+”则结束被加数读入,继续读入加数,遇到“=”则进行运算。若读到除0-9,+,-之外的字符则结束程序。
#5
丶wist2014-10-24 16:37
回复 4 楼 hu9jj
DATAS SEGMENT
    X DB 100 DUP(0)
      DB ?
    Y DB 10 DUP(0)      
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
   
    MOV BX,0 ;
    MOV SI,0 ;
   
 X3:  
    MOV AH,01H
    INT 21H
    CMP AL,2BH ;
    JZ X1 ;等于+号时转移到X1
    MOV X[BX],AL
    INC BX
    INC SI
    JMP X3
   
 X1:
    INC SI;加上+号位长度
    MOV AH,01H
    INT 21H
    CMP AL,3DH
    JZ X2 ;等于=号时转移到X2
    MOV X[SI],AL
    INC BX
    INC SI
    JMP X1
   
 X2:
    INC SI; 加上=号位长度        
   
   
   
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START


初步代码如上,但是在做到相加时出现了麻烦,因为位数不一样加起来会比较复杂,设两个数123+45678,于是想到,123放到段底,45678也放到另一个段底,这样其余存储单元都为零之后依次加起来
1