东北大学
专业班级:姓名:学号:
实验题目:日期:2013.11.9
实验目的:
(1)掌握顺序程序设计方法;
(2)学习数据传送及算术和逻辑运算指令的用法;
(3)熟悉在PC上建立、汇编、连接、调试和运行8086汇编语言程序的过程。
实验内容:
编制程序,将字节变量BVAR中的压缩BCD数转换成二进制数,并存入原变量中。
在编写程序前,首先要确定转换算法。第一步,取压缩BCD数的十位;第二步,计算十位数乘以10;第三步,取个位数相加。实验步骤:
(1)输入源程序如下:
DSEGSEGMENT;数据段
BVARDB74H
DSEGENDS
CSEGSEGMENT;代码段
ASSUMECS:CSEG,DS:DSEG
START:MOVA_,DSEG;段寄存器初值
MOVDS,A_
MOVAL,BVAR
MOVCL,4
SHRAL,CL;取高4位
MOVAH,10
MULAH;乘10
ANDBVAR,0FH;取低4位
ADDBVAR,AL;相加
MOVAH,4CH
INT21H;程序结束退出
CSEGENDS
ENDSTART
(2)保存源程序,执行masm汇编源程序,生成.obj目标文件,结果无错误。
(3)执行link连接程序,生成.e_e可执行文件,结果无错误。
(4)执行debug调试程序,使用D参数指令,在BVAR对应的存储单元中得到计算结果H,结果正确.
思考题:程序中求个位数乘以10采用乘法指令MUL实现,而用移位指令也可以实现,请问该如何修改程序
将MOVAH,10
MULAH
改为SALAH,1
MOVCL,AH
SALAH,1
SALAH,1
ADDAH,CL
扩展题:这个程序还有另外一个编制算法,即首先将压缩BCD数转换成非压缩BCD数,然后通过BCD码调整指令将其直接转换成二进制数。请问应该使用哪一个调整指令试编制程序。
DSEGSEGMENT
BVARDB74H
DSEGENDS
CSEGSEGMENT
ASSUMECS:CSEG,DS:DSEG
START:MOVA_,DSEG
MOVDS,A_
MOVAL,BVAR
MOVAH,AL
SHRCL,4
MOVAH,CLANDAL,0FHAAD
MOVBVAR,ALMOVAH,4CHINT21HCSEGENDS
ENDSTART
Copyright © 2019- hids.cn 版权所有 赣ICP备2024042780号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务