《汇编语言程序设计》实验报告
实验三 DEBUG的使用
1. 实验目的
1.学习使用DEBUG程序的各种命令。
2.了解计算机取指令、执行指令的工作过程。
3.掌握用DEBUG调试工具自编程序的方法。
4. 掌握程序片段使用DEBUG的调试方法。
5. 熟悉并搭建汇编语言环境。
2. 实验任务
- 安装Debug调试程序。
- 使用Debug的R命令查看、改变CPU寄存器内容;
- 使用Debug的D命令查看内存中的内容;
- 使用Debug的E命令查看内存中的内容;
- 使用Debug的U命令将内存中机器指令翻译成汇编指令;
- 使用Debug的T命令执行一条机器指令;
- 使用Debug的P命令执行一条机器指令;
- 使用Debug的A命令以汇编指令的格式在内存中写入一条机器指令;
- 综合练习:使用A命令,建立一段程序,程序功能:计算BX+CX+DX。要求用R命令预先设置BX、CX、DX几个寄存器的值。用U命令反汇编该程序,查看各指令机器码及存储位置。并用T命令单步执行该程序,记录其执行结果。
3. 实验步骤
3.1 DOSBox安装
图表 1 DOSBox安装
masm文件夹:
图表 2 masm
将工具从安装目录挂载到C盘:
图表 3 挂载
原生debug窗口较小,修改分辨率:
图表 4 屏幕大小配置
3.2 Debug环境测试
图表 5 汇编代码编辑
程序的编译链接:执行masm lab_1.asm;
图表 6 编译链接
程序的编译链接,执行link lab_1.obj;
图表 7 编译链接
程序的debug运行:
图表 8 查看寄存器
图表 9 查看当前程序指令
图表 10 单步执行
图表 11 单步执行
3.3 R命令
Debug的R命令查看、改变CPU寄存器内容:
图表 12 查看寄存器内容
修改AX中的值为00AC:
图表 13 修改AX寄存器内容
3.4 D命令
Debug的D命令查看内存中的内容:可以用“d 段地址:偏移地址” 的格式来查看。
图表 14 查看内存内容
3.5 E命令
Debug的E命令改写内存中的内容:将内存1000:0010开始的10个存储单元中的数据写为0,1,2,3,4,5,6,7,8,9。
图表 15 改写内存内容
3.6 U命令
Debug的U命令将内存中机器指令翻译成汇编指令:
图表 16 反汇编
图表 17 反汇编
3.7 A命令
Debug的A命令以汇编指令的格式在内存中写入一条机器指令:
图表 18 写入指令
3.8 T命令
Debug的T命令执行一条机器指令:
当前CS与IP的值分别为:CS=073F IP=0100 要使得计算机执行我们写入的1000:0020命令,需要先将当前CS与IP改为CS=1000 IP=0020
图表 19 T指令执行指令
3.9 P命令
P命令类似于T命令,只是不会进入子程序或中断服务程序中,遇到循环指令则一并执行完所有循环。不需要调试子程序,中断服务程序以及循环体时,要应用P命令,而不是T命令。
图表 20 P指令执行指令
3.10 综合练习
使用A命令,建立一段程序,程序功能:计算AX+BX+CX+DX。要求用R命令预先设置AX、BX、CX、DX几个寄存器的值。用U命令反汇编该程序,查看各指令机器码及存储位置。并用T命令单步执行该程序,记录其执行结果。
图表 21 写入程序
图表 22 修改CS:IP
图表 23 反汇编
图表 24 单步执行
图表 25 单步执行
图表 26 查看结果
4. 实验总结
- 成功配置并搭建起汇编语言环境
- 成功运行了汇编语言代码测试,熟悉了汇编语言运行环境
- 掌握了汇编语言程序编辑、汇编、连接、运行以及利用 DEBUG 调试程序的方法。4. 熟练汇编语言程序上机调试的方法和过程。能够独立自主的编辑代码解决一些小问题,对汇编及DEBUG程序调试有了初步的了解。
- 通过本次实验,熟悉了汇编语言在debug程序下的各种操作,进一步掌握了debug的各种指令命令,通过本次实验,现在可以通过debug来调试汇编语言程序,查看内存地址等,并根据debug的内容进行代码分析。
- 通过debug使用的实验,让我更了解到汇编语言程序的魅力,体会到学习汇编语言的乐趣,加深了对汇编语言的理解。