搜索
首页 电脑/网络 程序设计 汇编语言

汇编语言中多位十进制数相加如何实现?

全部回答

2018-06-30

57 0
    从键盘上键入2个10位数以内(位数可变)十进制值数,对其求和并显示结果, 程序运行时提示请输入加数和被加数,求完和显示结果后,显示继续和退出。 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。
    。

类似问题换一批

热点推荐

热度TOP

相关推荐
加载中...

热点搜索 换一换

电脑/网络
汇编语言
硬件
电脑装机
程序设计
互联网
操作系统/系统故障
笔记本电脑
反病毒
百度
软件
程序设计
汇编语言
VB
数据库
C/C++
JAVA相关
VC++
C#/.NET
其他编程语言
汇编语言
汇编语言
举报
举报原因(必选):
取消确定举报