微机原理实验一两个多位十进制数相加实验试做报告Word文档格式.docx
- 文档编号:19621316
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:7
- 大小:15.82KB
微机原理实验一两个多位十进制数相加实验试做报告Word文档格式.docx
《微机原理实验一两个多位十进制数相加实验试做报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《微机原理实验一两个多位十进制数相加实验试做报告Word文档格式.docx(7页珍藏版)》请在冰豆网上搜索。
组合BCD码的加法调整指令为DAA,它针对AL寄存器中的组合BCD码数之和进行修正。
对于未组合BCD码的加法调整指令为AAA(加法的ASCII码调整指令),它将存于AL寄存器中的一位ASCII码数加法运算的结果调整为一位拆开型十进制数,仍保留在AL中,如果向高位有进位(AF=1),则进到AH中。
对于多字节的ASCII码相加,只能从最低位开始逐个字节地进行加法操作,并随即进行调整。
参考程序清单(WJSY
O.ASM):
DATASEGMENT
DATA1DB33H,39H,31H,37H,34H
DATA2DB36H,35H,30H,38H,32H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,5;
计数
MOVSI,0;
做指针用,因从DATA1的第一个数取数,故SI=OCLC
NEXT:
MOVAL,DATA1[SI];
取被加数给AL
ADCAL,DATA2[SI];
取加数和AL相加
AAA:
未组合十进制数加法调整指令
MOVDATA1[SI],AL;
结果回送至DATA1处
INCSI;
修改SI指向下一位数
LOOPNEXT
MOVSI,5;
因显示是从高位到低位,故Sl=5
L:
ADDDATA1[SI-1],3OH;
还原成ASCII码
MOVDL,DATA1[SI-1]
MOVAH,02;
送显示
INT21H
JNZL
MOVAH,4CH;
返回DOS
CODEENDS
ENDSTART
运行结果:
75249
上述程序有很多不方便的地方,比如①加数和被加数以低字节在前高字节在后顺序存放在内存单元中,不符合我们日常的习惯,如果改为高字节在前低字节在后的形式存放数据,程序如何改变?
②程序只显示了相加结果,没有显示加数和被加数,如果要求显示加数和被加数,程序如何修改?
③如果按47193+28056=75249格式显示,程序如何修改?
1程序清单(WJSY
1.ASM):
DATA1DB34H,37H,31H,39H,33H;
高位在前低位在后
DATA2DB32H,38H,30H,35H,36H
M0VAH,4CH;
2程序清单(WJSY
2.ASM):
DISPMACRO;
回车换行宏定义
MOVAH,2
MOVDL,0DH
MOVDL,OAH
ENDM
DATA1DB34H,37H,31H,39H,33H
MOVSI,OFFSETDATA1
CALLDISPL
DISP
MOVSI,OFFSETDATA2
MOVSI,5
CLC
MOVAL,DATA1[SI-1]
ADCAL,DATA2[SI-1]
AAA
MOVDATA1[SI-1],AL
DECSI
JNZNEXT
ADDDATA1[SI],3OH
MOVDL,DATA1[SI]
MOVAH,02
INCSI
CMPSI,5
MOVAH,4CH
DISPLPROC
MOVBX,0
D1:
MOVDL,[SI+BX]
INCBXASCII码
;
调显示子程序显示被加数;
宏调用,回车换行
调显示子程序显示加数;
做加法
还原为
显示子程序
CMPBX,5
JNZD1
RET
DISPLENDP
47193
28056
3程序清单(wjsy3a.asm)
DISPMACROM
MOVDL,M
DISP*='
CMPSI,5+"
显示运算符宏定义
调显示子程序显示被加数
宏调用显不"
调显示子程序显示加数
MOVDL,[SI+BX]
INCBX
47193+28056=75249;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 一两 个多位 十进制 相加 试做 报告