当前位置:文档之家› 微机原理实验一

微机原理实验一

实验一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,1
A,31,4A,31,5A,CC,0A,CC,1A,CC,5A,并且观察现象。

(不需要区分大小写)
3、用—ux:y命令列出改程序,用笔记录其地址、机器语言指令、汇编语言指令(三列并排)。

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

5、程序中,当执行了指令NEGBL和NEGCX之后,BL和CL中存放的数据的大小关系是什么?(分两种情况讨论其大小关系)
6、指令NEG BL的作用是什么?该指令执行之后,BL寄存器中的二进制数据是什么?(第7~9个问题在实验报告中回答)
7、当用多个t命令单步执行该程序时,每个t命令的执行皆会导致IP的变化,请问:为什么IP的变化幅度会有大有小?
8、CCh是哪一条指令的机器语言代码?
I 预习报告应写在正规实验报纸的正面!并且在第一行写上“预习报告”四个字。

II 预习报告的内容应包括:实验步骤、实验所用命令以及思考题的答案。

II 每次实验之前,请课代表收齐预习报告,教师将检查并且记录预习情况。

IV第一次做实验之前,课代表提供一式两份的班级名单,以供记录实验成绩。

本实验的数据记录表格:。

相关主题