实验一 Debug 环境中程序的输入

更新时间:2024-06-07 12:42:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验一 Debug 环境中程序的输入、运行和调试

实验目的: 感性认识“CPU执行一个程序的具体过程”以及“程序的执行对于CPU内部寄存器的影响”; 感性认识“什么是段地址和偏移地址”; 感性认识“补码表示法” 感性认识“ASCII码的用途”。 实验说明:

Debug环境的提示符是“—”;如果在当前目录中确实存在着一个名叫Debug.exe的外部文件,那么,在DOS的提示符下, 嵌入“Debug”,并且按回车键“Enter”,即可进入Debug环境,见到其提示符“—”。 常用的Debug命令是:

—a x:y(回车)用于输入一个汇编语言程序

(a是命令,x是段地址,y是偏移地址,x:y将是程序的起始地址,首次试验时,可以将x代之ABC,y代之以100,那么程序的起始地址将是AB:100)

注意:你不可以键入“x”或者“y”,即是,x和y都必须代之以具体的地址,例如ABC:100(其中,ABC是段地址,100是偏移地址)

—u x:y(回车) 用于显示一个汇编语言程序或者称为“在屏幕上列出一个汇编语言程序”; 自然地,x;y也必须代之以程序的实际的起始地址;通常当一个程序从屏幕上(因为上移而)消失后,可以适应这种方法来重新在屏幕上显示改程序。

—a x:y(回车)也可以用于修改某命令,x:y是将要被修改的指令的地址。(所谓的修改其实就是往该地址中重新输入某指令,然后按两次回车键,即可修改成功)

—t= x:y(回车)用于单步执行一个汇编语言程序,注意,因为是“单步执行”,所以,被执行的程序中包含多少条指令,就应当键入多少个t命令,(只有第一个t命令后需要用“=”把程序的起始地址告知CPU,其余的t命令不需要提供地址,只需要键入t并且回车就可了。);单步执行的意义在于:因为CPU没执行完一条指令就会自动停止,而且显示出当前CPU内部每个寄存器的内容,由于程序的结果(尤其是中间结果)通常是在CPU的某个或几个寄存器中,这就是为我们考察一个程序的详细执行过程提供了好机会。

—g= x:y(回车)用于从起始地址x:y连续执行一程序,(一直执行到程序员在改程序中给定的结束处。在Debug环境中,我们经常使用“INT3”指令来结束一个程序的执行) —d x:y(回车)用于显示内存区域中的一批数据;x:y是该区域的起始地址。

—e x:y(回车)用于显示(或修改)某一个内存单元中的数据内容。数据内容显示出来以后,如果想看下一个内存单元中的数据,可以按“空格键”。数据内容改好之后,若需要修改下一个单元,也是直接按“空格键”。(注意:x要代之以为段地址,y要代之以为偏移地址!) —r(回车)用于显示CPU内部全部寄存器当前的内容。

—rAX(回车)用于显示或修改CPU内部寄存器AX中的数据。 —q(回车)用于退出Debug环境,返回DOS环境。 实验程序: mov al ,1

dec al

sub al ;使CPU内部的AL寄存器 减一 mov bl ,al inc bl

add bl ;使CPU中的寄存器BL加一

neg bl

mov CX,1 neg CX

int 3 ;该指令仅用于Debug 环境中,使一个程序结束 mov ax ,B800 mov DS,ax mov DI ,800 mov cl, 1 mov [DI],cl mov ch,5A

mov [DI+1],ch

add DI, 3 ;由于在Debug环境中,数据皆以十六进制的形式显示, mov cl ,2 ;因此在数据之后无须加“H”标志 mov [DI],cl mov ch,5A mov [DI+1],ch add DI,2 mov cl ,1 mov [DI],cl mov ch,5A mov[DI+1],ch

INT 3;

操作要求:

1、 进入debug环境,输入上述程序,单步执行,每执行完一条指令,就记录下CPU内部

的AX、BX、CX、CS、IP中的数据的变化。 2、 用e命令吧RAM内存区域(其地址是从B800:800开始)中的数据修改为32,

0A,30,1A,31,4A,31,5A,CC,0A,CC,1A,CC,5A,并且观察现象。(不需要 区分大小写)

3、 用—ux:y命令列出改程序,用笔记录其地址、机器语言指令、汇编语言指令(三列

并排)。(注意:只需要记录到第2节“INT3”指令!) 思考题(预习报告中,应包含问题1~6为答案,总是先交预习报告后做实验)奥 1、 进制数据1100 1100b在计算机内部(CPU中或内存中)有可能具有哪几种不同的含义?(具体指出4~7种) 2、 用e命令能否判断某一个内存单元究竟是属于RAM区还是属于ROM区? 3、 在Debug环境中只用十六进制表示数据,主要原因可能是什么?(说出两个原

因) 4、

指出上述程序的格式不正确的指令并且改正之。

5、 程序中,当执行了指令NEG BL和NEG CX之后,BL和CL中存放的数

据的大小关系是什么?(分两种情况讨论其大小关系) 6、 指令NEG BL的作用是什么?该指令执行之后,BL寄存器中的二进制数据是什

么?(第7~9个问题在实验报告中回答) 7、 当用多个t命令单步执行该程序时,每个t命令的执行皆会导致IP的变化,请问:

为什么IP的变化幅度会有大有小? 8、 CCh是哪一条指令的机器语言代码?

I 预习报告 应写在正规实验报纸的正面!并且在第一行写上“预习报告”四个字。 II 预习报告的内容应包括:实验步骤、实验所用命令以及思考题的答案。 II 每次实验之前,请课代表收齐预习报告,教师将检查并且记录预习情况。 IV第一次做实验之前,课代表提供一式两份的班级名单,以供记录实验成绩。

本实验的数据记录表格: 执行mov al,1之后: 执行dec al,1之后: 执行sub al,1之后: 执行mov bl,al之后: AX BX CX DI CS IP 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后: 执行 之后:

本文来源:https://www.bwwdw.com/article/mnv6.html

Top