任意两个10位以内十进制数求和 显示结果
2009-12-21 09:11
183 查看
任意两个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
汇编语言编程 悬赏分: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
相关文章推荐
- 任意两个10位以内十六进制数求和并显示
- 集合的基本运算: 依据集合运算规则,实现任意给定两个集合的交、并、差、笛卡儿积运算,和第一个集合的幂集,并显示运算结果。
- oracle显示两个字段相除的结果
- 随便选择两个城市作为预选旅游目标。实现两个独立的线程分别显示10次城市名,每次显示后休眠一段随机时间(1000ms以内),哪个先显示完毕,就决定去哪个城市。分别用Runnable接口和Thread类实现。
- 链式A+B有两个用链表表示的整数,每个结点包含一个数位。这些数位是反向存放的,也就是个位排在链表的首部。编写函数对这两个整数求和,并用链表形式返回结果。 给定两个链表ListNode* A,ListN
- 对图像中的三个通道求和,并且在值为100处对结果图像进行截断(针对一些图像不能正常显示,提出个人见解)
- 任意255以内的十进制数向二进制数的转化
- 用户在文本框中输入需要转换的十进制数,通过点击3个按钮在标签中显示结果。(点击一个实现一个)
- 【剑指offer24】输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head
- 编写一个程序,用户输入两个数,求其加减乘除,并用消息框显示计算结果。
- 使用ReadPixels方法,实现对游戏截取任意位置的屏幕,以及保存和显示截取结果
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- java 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序
- 任意255以内的十进制数向二进制数的转化
- 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历的结果。如果是则输出Yes,否则输出No。假设输入的数组的任意两个数字都互不相同。
- 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)
- 第五周项目三任意输入N显示不同N取值的结果