DOS及DEBUG的使用
2022/9/16
一、实验预习报告
1.实验相关知识的简述
实验楼环境中采用 dosemu 来模拟 DOS 环境,进入 DOS 环境中可以直接启动 DEBUG 程序。
•R ——查看和修改寄存器
•D ——查看内存单元
•E ——修改内存单元
•U ——反汇编,将机器指令变为汇编指令
•T / P ——单步执行
•G ——连续执行程序
•A ——输入汇编指令
•Q ——退出 2.实验原理的预习情况:较好
3.实验注意事项
DEBUG下的标志位表示
在 DEBUG 调试环境下以字母缩写的形式表示各个标志位的状态。进入 DEBUG 后,用 R 命令查看寄存器状态时,可以看到除了陷阱标志以外的标志位的状态。
数的补码运算
在计算机中,对带符号数可用真值和机器数两个概念表示。真值,就是带有“+”、“-”号的实际数值;所谓机器数,则是把“+”、“-”符号数值化(0、1)后所得到的计算机实际能表示的数。机器数有三种码表示,分别是原码、反码和补码。汇编语言中,数都是以补码的形式表示的,因此必须掌握数的补码表示和补码的运算
二、实验报告
1.实验目的与要求:
练习常用的 DOS 命令,熟练掌握 DEBUG 的主要命令的用法。 熟悉汇编语言运行、调试环境及方法。
2.实验环境:实验楼 Linux 环境中进入 DOS 模拟环境
3.设计思路:
用 DIR 命令查看根目录下的文件
用 CD 命令进入 D 盘子目录,并查看子目录中的文件
进入 DEBUG ,用 D 命令查看数据段中 0100H——0200H 单元的内容
用 U 命令查看代码段中 0100H 开始的程序
用 R 命令查看并修改 IP 寄存器的值为 0
用 E 命令修改数据段 5 号、6 号单元的内容为 12 、34
用 A 命令实现 Z = 56 + 41,用 T 命令执行并用 D 命令查看结果
用 U 命令查看刚才用 A 命令输入的汇编指令
4.实验过程及截图记录
C:\〉D:
:: 回车后进入 D 盘
D:\〉CD DOS
:: 进入 DOS 子目录
D:\dos〉DIR
:: 列出目录中的文件
D:\dos〉DEBUG
:: 进入 DEBUG
进入 DEBUG ,用 D 命令查看数据段中 0100H——0200H 单元的内容
用 U 命令查看代码段中 0100H 开始的程序
用 R 命令查看并修改 IP 寄存器的值为 0
用 E 命令修改数据段 5 号、6 号单元的内容为 12 、34
用 A 命令实现 Z = 56 + 41,用 T 命令执行并用 D 命令查看结果
用 U 命令查看刚才用 A 命令输入的汇编指令,它们对应的机器指令是什么?
5.实验结果分析
对应的机器指令:
B83800
052900
A30000
59
837EF600
7503
E935FD
8B450Z
8BF98
0BC0
7403
E911FD
837EF400
三、实验总结
修改寄存器 —— 在 R 后跟写寄存器名(比如 R AX),回车后先显示寄存器的内容,在冒号后键入新的值;再用 R 命令就可看到修改后的内容了。
用 D 命令可以查看存储单元的地址和内容。
D 段地址:起始偏移地址 [结尾偏移地址] [L范围]
用 E 命令可以改写多个存储单元的内容。格式为:E 起始地址 修改值 修改值... U 后跟偏移地址,则从该地址开始反汇编。如:
U 0 从代码段0号单元开始反汇编
U100 从代码段100H号单元开始反汇编
在 DEBUG 中,使用 A 命令可以输入汇编指令,系统自动地将键入的汇编指令翻译成机器代码,并相继地存放在从指定地址开始的存储区中。由于 DEBUG 下的数值默认为十六进制数,因此先要将十进制数转换成十六进制数。
T 命令可以一条一条地执行指令。P 命令的作用与 T 命令相同,当遇到中断指令 INT n 和调用指令 CALL 时,应该使用 P 命令,以确保程序正常执行。这是因为 INT n 指令和 CALL 指令都要转移到子程序去执行,T 命令进入子程序后可能无法返回;而 P 命令则直接执行该指令,并将结果带回。遇到循环指令 LOOP 时也应该使用 P 命令,可以使循环快速结束。
键入 Q,回车后退出 DEBUG,返回到 DOS 下。
学习时间 62分钟
操作时间 42分钟
按键次数 430次
实验次数 18次
报告字数 2480字
是否完成 完成