资源描述:
《东北大学计算机硬件基础实验报告模板》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、实验报告范例东北大学计算机硬件技术基础实验报告专业班级:XXX姓名:XXX学号:XXXX实验题目:顺序程序设计日期:2000.09.13实验目的:1)掌握顺序程序设计方法;2)学习数据传送及算术和逻辑运算指令的用法;3)熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。实验内容:设X和Y均为8位无符号数,写一个求表达式Z=X+Y值的程序。实验步骤:1、输入源程序如下:DSEGSEGMENT;数据段XDB12HYDB34HZDB?DSEGENDSCSEGSEGMENT;代码段ASSUMECS:CSEG,
2、DS:DSEGSTART:MOVAX,DSEG;段寄存器初值MOVDS,AXMOVAL,XADDAL,Y;求x+y和MOVZ,AL;保存MOVAH,4CHINT21H;程序结束退出CSEGENDSENDSTART2、保存源文件,执行masm汇编源程序,生成obj目标文件,结果无错误。3、执行link连接程序,生成exe可执行文件,结果无错误。4、执行debug调试程序,使用t参数单步执行程序,在AL寄存器中得到计算结果46H,结果正确,执行r参数命令察看Z所在的地址单元中的数据为0002字节单元中存放46H。思考题:本程
3、序没有考虑进位的情况。如果考虑可能产生的进位,应如何修改程序?答:如果考虑进位情况,应该定义Z为DW类型,在程序中执行完ADDAL,Y后,执行ADC指令。扩展题:设X和Y均为三字节无符号数,编制程序求其和,并将结果放置在Z开始的存储单元。因为X和Y都是三字节的无符号数,所以要给Z定义三个字节的存储空间。具体程序如下:DSEGSEGMENT;数据段XDB12H,34H,56HYDB34H,56H,78HZDB3DUP(?)DSEGENDSCSEGSEGMENT;代码段ASSUMECS:CSEG,DS:DSEGSTART:M
4、OVAX,DSEG;段寄存器初值MOVDS,AXMOVAL,XADDAL,Y;求x+y和MOVZ,AL;保存MOVAL,X+1ADCAL,Y+1;求x+y和MOVZ+1,AL;保存MOVAL,X+2ADCAL,Y+2;求x+y和MOVZ+2,AL;保存MOVAH,4CHINT21H;程序结束退出CSEGENDS执行debug调试程序,执行d参数命令,在Z对应的存储单元中得到计算结果468ACEH,结果正确。作业题目[程序2]编制程序,将字节变量BVAR中的压缩BCD数转换成二进制数,并存入原变量中。在编写程序前,首先要确
5、定转换算法。第一步,取压缩BCD数的十位;第二步,计算十位数乘以10;第三步,取个位数相加。程序清单如下所示。DSEGSEGMENTBVARDB99HDSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,BVARMOVCL,4SHRAL,CL;取高4位MOVAH,10MULAH;乘10ANDBVAR,0FH;取低4位ADDBVAR,AL;相加MOVAH,4CHINT21HCSEGENDSENDSTART思考题:程序中求个位数乘以10采用
6、乘法指令MUL实现,而用移位指令也可以实现,请问该如何修改程序?扩展题:这个程序还有另外一个编制算法,即首先将压缩BCD数转换成非压缩BCD数,然后通过BCD码调整指令将其直接转换成二进制数。请问应该使用哪一个调整指令?试编制程序。邮箱:51270943@qq.com