实用指南:《计算机组成原理与汇编语言程序设计》实验报告三 Debug及指令测试
目 录
一、实验学时
课堂2学时,课后2学时
二、实验目的
1) 通过实验掌握DOS命令:DIR,DEL,RENAME,COPY。
2) 通过实验掌握8086指令:MOV,ADD,ADC,SUB,SBB,DAA,XCHG。
3) 借助实验掌握DEBUG命令:A,D,E,F,R,T,U。
4) 通过实验掌握BCD码,ASCII码及用16进制数表示二进制码的手段。
5) 通过实验掌握8086寄存器:AX,BX,CX,DX,Flags,IP。
三、实验要求
1)做好实验预习,完成各种软件安装与操作。
2)按照实验内容与步骤的要求,独立思考,认真仔细地搞定实验。
3)截取各步骤截图,书写实验报告。
四、实验内容
1、DOS常用命令练习:
1)运用dir查看文件列表。
2)用命令 COPY DEBUG.exe BUG 复制一个文件。
3)用命令 RENAME BUG BG 将BUG 文件改为BG。
4)用命令DEL BG将文件BG删除,在管理时要注意提示信息,并按提示管理。
2、DEBUG 命令使用:
1)打开DEBUG 进入 DEBUG 控制,显示提示苻 '_ '。
2)用命令 F100 10F 'A' 将'A'的ASCII码填入内存。
3)用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符。
4)用命令 F110 11F 41 重复上二项实验,观察结果并比较。
什么字符的ASCII码?就是5)用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数
6)用H命令检查下列各组16进制数加减结果并和你的手算结果比较:
(a)34H,22H (b)56H,78H (c)A5,79H (d)1284H,5678H (e)A758,347FH
7) 用R 命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容。
8)用R命令将AX,BX内容改写为1050H及23A8H。
3、8086常用指令练习:
1)传送指令:
A)用A命令在内存100H处键入下列内容:
MOV AX,1234
MOV BX,5678
XCHG AX,BX
MOV AH,35
MOV AL,48
MOV DX,75AB
XCHG AX,DX
B)用U命令检查键入的工具并记录,特别注意左边的机器码。
C)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并注意标志位有无变化。
2)加减法指令:
A)用A命令在内存100H处键入下列内容:
MOV AH,34
MOV AL,22
ADD AL,AH
SUB AL,78
MOV CX,1284
MOV DX,5678
ADD CX,DX
SUB CX,AX
SUB CX,CX
B)用U命令检查键入的程序及对应的机器码。
C)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况。
D)思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的内容,注意T命令与IP的关系。
3)带进位加减法:
A)用A命令在内存200H处键入下列内容,并用U命令检查:
MOV AH,12
MOV AL,84
MOV CH,56
MOV CL,78
ADD AL,CL
ADC AH,CH
MOV DH,A7
MOV DL,58
SUB DL,7F
SBB DH,34
B)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容。
C)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运 行之。
4)BCD码加减法:
A)用A命令在内存处键入下列内容:
MOV AL,58
ADD AL,25
DAA
B)用U命令检查键入的软件及对应的机器码。
C)用T命令逐条运行这些指令,检查并记录有关寄存器及Flags内容。
五、实验步骤
1、DOS常用命令练习。
(1)应用dir查看资料列表,对应的文件列表信息如图5-1-1所示:

图5-1-1 文件列表信息
(2)用命令 COPY DEBUG.exe BUG 复制一个文件,对应的文档复制命令及复制结果如图5-1-2、5-1-3所示:

图5-1-2 文件复制命令

图5-1-3 文件复制结果
(3)用命令 RENAME BUG BG 将BUG 文件改为BG,对应的文档修改命令及文件修改结果如图5-1-4、5-1-5所示:

图5-1-4 文件修改命令

图5-1-5 文件修改结果
(4)用命令DEL BG将文件BG删除,在操作时要注意提示信息,并按提示管理,对应的文件删除命令及文件删除结果如图5-1-6至5-1-7所示:

图5-1-6 记录删除命令

图5-1-7 文件删除结果
2、DEBUG 命令利用。
(1)打开DEBUG 进入 DEBUG 控制,表明提示苻 '_ ',对应的DEBUG控制界面如图5-2-1所示:

图5-2-1 DEBUG控制界面
(2)用命令 F100 10F 'A' 将'A'的ASCII码填入内存,对应的内存填入界面如图5-2-2所示:

图5-2-2 内存填入界面
(3)用命令 D100 10F 观察内存中的16进制码及屏幕右边的ASCII字符,对应的内存观察界面如图5-2-3所示:

图5-2-3 内存观察界面
(4)用命令 F110 11F 41 重复上二项实验,观察结果并比较,对应的结果显示界面如图5-2-4所示:

图5-2-4 结果显示界面
(5)用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的16进制数是什么字符的ASCII码,对应的信息显示界面如图5-2-5所示:

图5-2-5 信息显示界面
(6)用H命令检查下列各组16进制数加减结果并和你的手算结果比较,对应的结果比较界面如图5-2-6至5-2-10所示:

图5-2-6 34H,22H界面

图5-2-7 56H,78H界面

图5-2-8 A5,79H界面

图5-2-9 1284H,5678H 界面

图5-2-10 A758,347FH界面
(7)用R 命令检查各寄存器内容,专门注意AX,BX,CX,DX,IP及标志位中ZF,CF 和AF的内容,对应的检查结果界面如图5-2-11所示:

图5-2-11 检查结果界面
(8)用R命令将AX,BX内容改写为1050H及23A8H,对应的内容更改界面如图5-2-12所示:

图5-2-12 内容更改界面
3、8086常用指令练习—传送指令。
(1)用A命令在内存100H处键入下列内容:
MOV AX,1234
MOV BX,5678
XCHG AX,BX
MOV AH,35
MOV AL,48
MOV DX,75AB
XCHG AX,DX
对应的命令键入指令界面如图5-3-1所示:

图5-3-1 命令键入指令界面
(2)用U命令检查键入的应用并记录,特别注意左边的机器码,对应的内容检查界面如图5-3-2所示:

图5-3-2 内容检查界面
(3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况,并注意标志位有无变化,对应的命令运行界面如图5-3-3所示:

图5-3-3 命令运行界面
4、8086常用指令练习—加减法指令。
(1)用A命令在内存100H处键入下列内容:
MOV AH,34
MOV AL,22
ADD AL,AH
SUB AL,78
MOV CX,1284
MOV DX,5678
ADD CX,DX
SUB CX,AX
SUB CX,CX
对应的命令键入指令如图5-4-1所示:

图5-4-1 命令键入指令
(2)用U命令检查键入的代码及对应的机器码,对应的内容检查界面如图5-4-2所示:

图5-4-2 内容检查界面
(3)用T命令逐条运行这些指令,检查并记录有关寄存器及ZF情况,对应的命令运行界面如图5-4-3所示:

图5-4-3 命令运行界面
(4)思考:这次运行还是打入T,行不行?怎么办?用R命令检查一下IP的内容,注意T命令与IP的关系,对应的命令检查界面如图5-4-4所示:

图5-4-4 命令检查界面
用来检查IP地址的命令。如果要查看IP地址,应该使用R命令,该命令可以显示当前连接的远程主机的IP地址、端口号以及连接状态。同时,T命令通常需要提供远程主机的IP地址和端口号,以便建立与远程主机的连接并发送文本消息。如果T命令提供的IP地址有误,可能会导致连接失败或发送消息失败。因此,在使用T命令时,需要仔细检查所给予的IP地址的正确性。就是如果这次运行还是打入T命令,可能会导致程序无法正确执行,因为T命令是发送文本消息的命令,而不
5、8086常用指令练习—带进位加减法。
(1)用A命令在内存200H处键入下列内容,并用U命令检查:
MOV AH,12
MOV AL,84
MOV CH,56
MOV CL,78
ADD AL,CL
ADC AH,CH
MOV DH,A7
MOV DL,58
SUB DL,7F
SBB DH,34
对应的命令键入界面和命令检查界面如图5-5-1和5-5-2所示:

图5-5-1 命令键入界面

图5-5-2 命令检查界面
(2)用T命令逐条运行这些指令,检查并记录有寄存器及CF内容,对应的命令运行界面如图5-5-3所示:

图5-5-3 命令运行界面
(3)上面这段程序若改用16位操作指令达到同样结果,怎么改?试修改并运行之,对应的内容更改界面如图5-5-4所示:

图5-5-4 内容更改界面
6、8086常用指令练习—BCD码加减法。
(1)用A命令在内存处键入下列内容:
MOV AL,58
ADD AL,25
DAA
对应的命令键入界面如图5-6-1所示:

图5-6-1 命令键入界面
(2)用U命令检查键入的脚本及对应的机器码,对应的内容检查界面如图5-5-2所示:

图5-6-2 内容检查界面
(3)用T命令逐条运行这些指令,检查并记录有关寄存器及Flags内容,对应的内容运行界面如图5-6-3所示:

图5-6-3 内容运行界面
六、实验小结
1、疑问和解决方法:
(1)实验问题:进入DEBUG中进行命令输入的过程中无法退出当前的指令页面。
解决方式:使用DEBUG的命令Q进行回车后即可实现当前页面的退出。
(2)实验问题:在运用DOSBOX的时候会出现脚本无法启动的情况。
解决手段:程序无法启动,可能是因为程序缺少某些依赖项或者与其他工具发生冲突,重新安装程序后程序允许正常启动。
(3)实验问题:在打开DOSBOX的过程中程序出现了错误信息。
解决方法:是由于程序文件损坏或者缺失导致的,对自己的程序文档进行检查后发现内部的材料语句出现了一行多条汇编语言的情况,对汇编语句进行修改后错误消失。
(4)实验问题:程序在运行过程中较为缓慢。
解决方法:由于计算机的硬件配备不足所导致,关闭其他应用程序后代码恢复正常的运行速度。
(5)实验问题:在程序运行的过程中出现了程序运行崩溃的情况。
解决方式:由于程序与其他软件发生了冲突所导致,以管理员权限运行软件后对应的问题得到解决。
(6)实验问题:在程序运行的过程中出现了界面显示不正常的情况。
应对方法:由于程序分辨率与计算机显示器分辨率不匹配造成的,修改计算机的显示器分辨率以及程序的分辨率后问题得到解决。
(7)实验问题:在程序运行的过程中程序无法读取文件。
解决方法:由于程序不在当前的挂载目录下,将文件拷贝到程序的工作目录下后错误消失。
2、心得体会:
(1)在使用DOSBOX进行汇编语言的编程过程中会用到DEBUG命令,如果成功进入DEBUG后会显示提示符‘—’。
(2)使用DEBUG命令中的D可以用来显示内存;E可能用来修改内存;R可以用来检查寄存器也能够用来修改寄存器的名字;A是小汇编命令;U是反汇编命令;N是文档命名命令。
(3)在对资料进行相关的操作时利用命令L用来读文件和读扇区;W用来写文件和写扇区。
(4)对命令进行操控时启用命令G用来运行;T用来单步运行;P用来单步运行;M用来进行内存搬家。
(5)A 直接将 8086/8087/8088 记忆码合并到内存——a [address]。
(6)C 比较内存的两个部分——c range address。
(7)D 显示一定范围内存地址的内容——d [range]。
(8)E 将数据输入到内存中指定的地址——e address [list]。
(9)F 应用指定的值填充指定内存区域中的地址——f range list。
(10)G 运行当前在内存中的程序——g [=address] [breakpoints]。
(11)H对指定的两个参数执行十六进制运算——h value1 value2。
(12)I 从指定的端口读取并显示一个字节值——i port。
(13)L 将某个材料或特定磁盘扇区的内容加载到内存——l address drive start number。
(14)M 将一个内存块中的内容复制到另一个内存块中——m range address。
(15)N 指定 Debug l(加载)或 w(写入)命令的可执行文件的名称,或者指定正在调试的可执行文件的参数——n [drive:][path] filename。
(16)O 将字节值发送到输出端口——o port byte-value。
(17)P 执行循环、重复的字符串指令、软件中断或子例程;或通过任何其他指令跟踪——p [= address] [number]。
(18)Q 控制返回到 DOS 的命令提示符——q 参数 该命令不带参数。
(19)R 表现或改变一个或多个 CPU 寄存器的内容——r [register-name]。
(20)S(搜索)在某个地址范围搜索一个或多个字节值的模式——s range list。
(21)T(跟踪)单步执行——T[address]。
(22)U(反汇编)反汇编字节并展示相应的原语句,其中包括地址和字节值,反汇编代码看起来象已汇编文件的列表——u [range]。
(23)W 将BX:CX 寄存器中指定字节数的内容写入磁盘文件——w address drive start number。
(24)在进行Debug和指令测试时,会遇到各种各样的困难。为了更好地总结和归纳这些经验教训,应该注意记录每一个问题以及相应的解决方案。可以记录在笔记本、电脑中,也可以整理成表格,以便后续查阅或与他人分享。
(25)在测试指令时,需要确保每一个功能都经过测试并且能够成功执行。对于最常用的指令,需要进行详细的测试,并结合实际应用场景来验证其正确性。
浙公网安备 33010602011771号