任意两个10位以内十进制数求和 显示结果

任意两个10位以内十进制数求和 显示结果

 

 

汇编语言编程 悬赏分:20 - 离问题结束还有 11 天 1 小时

从键盘上键入2个10位数以内(位数可变)十进制值数,对其求和并显示结果,
程序运行时提示请输入加数和被加数,求完和显示结果后,显示继续和退出。
提问者: mowenyi108 - 一级

code segmentassume cs:code,ds:code
    org 100h;标准COM格式
start:
     mov ax,3;文本模式
     int 10h
     push cs
     pop ds
     push ds
     pop es
Again:
     lea dx,mes1;提示
     mov ah,9
     int 21h
mov di,30fh
     call input;接收 数A
     lea dx,mes2;提示
     mov ah,9
     int 21h
mov di,31fh
     call input;接收 数B
     call count;求和
     lea dx,mes3
     mov ah,9
     int 21h
;*** 输出十进制的结果 ***
     call crt
     lea dx,mes4
     mov ah,9
     int 21h
     mov ah,0;暂停
     int 16h
     cmp ah,15h ;"Y(y)"继续
     jz Again;计算下一题
     mov ah,4ch;结束
     int 21h
input:
   mov cx,10
T1:mov ah,0;接收数字
   int 16h
   cmp al,0dh
   jz ok
   cmp al,'0';数据校验
   jb T1
   cmp al,'9'
   ja t1
yes:
   mov ah,0eh ;显示有效数据
   int 10h
w2:push ax ;压入堆栈
   loop T1
ok:mov bp,cx
   inc bp
   mov cx,11
   sub cx,bp
   std
   jcxz u3
u1:pop ax
   stosb
   loop u1
u3:mov al,'0'
   mov cx,bp
u2:stosb
   loop u2
   ret

count:mov si,30fh
      mov di,31fh
      xor dx,dx;清进位
      mov cx,11;改变此值,可实现超大数相加
T3:   call subs_c;逐位累加
      dec si
      dec di
      loop T3
      ret

subs_c: ;[原创]多位加法核心子程序
     mov al,[si];最低位对齐
     mov ah,[di]
     and ax,0f0fh
     add al,ah;自加
     add al,dl;加后面进位
     aam;二化十
     mov dl,ah;存进位位
     or al,30h
     mov [SI],al;保存1位和值
     ret

crt:cld
xor bp,bp
mov si,305h
mov cx,10
cr3:
mov al,[si]
cmp al,'0'
jnz cr0
inc bp
inc si
loop cr3
cr0:
mov cx,11
sub cx,bp
mov si,305h
add si,bp
cr1:lodsb
mov ah,0eh
int 10h
loop cr1
ret

mes1 db 0dh,0ah,09,'Input A(0-9,999,999,999): $'
mes2 db 0dh,0ah,09,'Input B(0-9,999,999,999): $'
mes3 db 0dh,0ah,09,'Sum A+B= $'
mes4 db 0dh,0ah,09,'Continue Y(y)? $'

code ends
end start

 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值