计算机硬件技术基础实验报告模板
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东北大学
计算机硬件技术基础实验报告
专业班级:机械0901班姓名:陈宫学号:20091833
实验题目:分支程序设计日期:2011年11月17日
实验目的
1)加深对循环结构的理解;
2)掌握循环程序的设计方法;
3)熟练掌握DEBUG的常用命令,学会用DEBUG调试程序。
1、实验内容
设有3个单字节无符号数存放在BUF开始的缓冲区中,编写一个能将它们从大
到小重新排序的程序。
三、算法描述流程图
开始
设置数据段地址
首地址取X
加法X+Y
和保存到Z地址
结束
四、实验步骤
1. 输入源程序:
DSEG SEGMENT ;数据段
X DW 12H
Y DW 34H
Z DW ?
DSEG ENDS
CSEG SEGMENT ;代码段
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG ;段寄存器初值
MOV DS,AX
MOV AX,X
ADD AX,Y ;求x+y和
MOV Z,AX ;保存
MOV AH,4CH
INT 21H
;
程
序
结
束
退
出CSEG ENDS
END START
2. 保存源文件,执行masm汇编源程序,生成obj目标文件,结果无错误。
3. 执行link连接程序,生成exe可执行文件,结果无错误。
4. 执行debug调试程序,使用t参数单步执行程序,在AL寄存器中得到计算结
果46H,结果正确,执行d参数命令察看Z所在的地址单元中的数据为0002
字节单元中存放46H。
五、实验结果
1. 执行masm编译源程序得到如下界面:
2. 执行link连接程序,生成exe可执行文件得到如下界面:
3. 执行debug调试程序,使用t参数单步执行程序,在AL寄存器中得到计算结
果46H,结果正确,得到如下界面:
4. 执行d参数命令察看Z所在的地址单元中的数据为0002字节单元中存放46H,
得到如下界面:
六、思考题
本程序没有考虑进位的情况。如果考虑可能产生的进位,应如何修改程序?
答:如果考虑进位情况,应该定义Z为DW类型,在程序中执行完ADD AL,Y后,执行ADDC指令。
七、扩展题
设X和Y均为三字节无符号数,编制程序求其和,并将结果放置在Z开始的存储单元。
答:因为X和Y都是三字节的无符号数,所以要给Z定义三个字节的存储空间。具体程序如下:
DSEG SEGMENT ;数据段
X DB 12H,34H,56H
Y DB 34H,56H,78H
Z DB 3 DUP(?)
DSEG ENDS
CSEG SEGMENT ;代码段
ASSUME CS:CSEG,DS:DSEG
START: MOV AX,DSEG ;段寄存器初值
MOV DS,AX
MOV AL,X
ADD AL,Y ;求x+y和
MOV Z,AL ;保存
MOV AL,X+1
ADC AL,Y+1 ;求x+y和
MOV Z+1,AL ;保存
MOV AL,X+2
ADC AL,Y+2 ;求x+y和
MOV Z+2,AL ;保存
MOV AH,4CH
INT 21H ;程序结束退出
CSEG ENDS
执行debug调试程序,执行d参数命令,在Z对应的存储单元中得到计算结果468ACEH,结果正确。
八、实验心得
理解了汇编语言中编程的基本步骤,掌握了通过地址对数据赋值的方法。掌握汇编语言编制基本顺序结构的算法,包括地址取值和加法的算法步骤等。这个实验,使我可以在编程中认识到直接通过CPU寄存器地址赋值可以大大提高了程序效率,但我要继续练习熟读汇编语言代码的能力。