masmaster,znxllyuan等,谁来给帮看下。
时间:2011-02-04
来源:互联网
完成2个由用户输入的10位十进制数的加法运算。
功能:多位非组合BCD码数加
入口参数:si=代表被加数的非组合bcd码串开始地址偏移
di=代表加数的非组合bcd码串开始地址偏移
cx=bcd码串长度
addition proc
std
add bx,cx
add si,cx
add di,cx
dec si
dec di
xchg di,bx
inc bx
clc
addp1:dec bx
lodsb
adc al,[bx]
aaa
stosb
loop addp1
mov al,0
adc al,0
stosb --->这里把结果和放在了di里了,没错吧。
cld
ret
addition endp
主程序中
。。。。。
mov si,offset num1
mov di,offset num2
mov bx,offset result
mov cx,maxlen
call addition
mov dx,offset result
call dispnum
jmp short ok
功能:显示结果
入口参数:dx=结果缓冲区开始地址偏移
出口参数:无
dispnum proc
mov di,dx --->结果和di,怎么要换成缓冲区的?还有解释下这个显示结果子程序看不懂。
mov al,0
mov cx,maxlen
repz scasb
dec di
mov dx,di
mov si,di
inc cx
dispnu2:lodsb
add al,30h
stosb
loop dispnu2
mov ah,9
int 21h
ret
dispnum endp
功能:多位非组合BCD码数加
入口参数:si=代表被加数的非组合bcd码串开始地址偏移
di=代表加数的非组合bcd码串开始地址偏移
cx=bcd码串长度
addition proc
std
add bx,cx
add si,cx
add di,cx
dec si
dec di
xchg di,bx
inc bx
clc
addp1:dec bx
lodsb
adc al,[bx]
aaa
stosb
loop addp1
mov al,0
adc al,0
stosb --->这里把结果和放在了di里了,没错吧。
cld
ret
addition endp
主程序中
。。。。。
mov si,offset num1
mov di,offset num2
mov bx,offset result
mov cx,maxlen
call addition
mov dx,offset result
call dispnum
jmp short ok
功能:显示结果
入口参数:dx=结果缓冲区开始地址偏移
出口参数:无
dispnum proc
mov di,dx --->结果和di,怎么要换成缓冲区的?还有解释下这个显示结果子程序看不懂。
mov al,0
mov cx,maxlen
repz scasb
dec di
mov dx,di
mov si,di
inc cx
dispnu2:lodsb
add al,30h
stosb
loop dispnu2
mov ah,9
int 21h
ret
dispnum endp
作者: yangxiang1 发布时间: 2011-02-04
自己用DEBUG调试下吧,呵呵,看看每一步寄存器的变化,慢慢找出逻辑错误.
作者: va_zaixuexi 发布时间: 2011-02-04
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28