快捷搜索: 王者荣耀 脱发

任意两个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

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

经验分享 程序员 微信小程序 职场和发展