实验一debug应用一、实训题目:debug应用二、实训目的:熟悉debug.exe的常用命令,然后通过测试,看看你的名字对应的汉字在计算机的存储器中是用什么代码表示的。
三、实训步骤:首先在计算机中找到应用程序debug.exe。
a、在D盘上建立一个,以你的名字命名的文件夹(如li),然后将你找到的debug.exe应用程序拷贝到这个文件夹中;b、在这个文件夹中建立一个名称为你姓名汉语拼音的第一个字母文本文件(这个文本文件名称一定要用字母)如:li.txt,然后用中文输入你的姓名,存盘。
c、在这个文件夹中执行debug.exe应用程序;d、打开你的那个文本文件(li.txt);e、将它打开,如-n li.txt;f、将它装入内存,如-l;g、最后利用-d命令,在存储单元中显示文本文件中的汉字编码内容;h、记录下(文本中的内容利用debug.exe应用程序看到的)存储器中的代码;四、实训要求:写出报告(写出上机过程和结论),进行总结。
可以在用w命令写之前用r命令来修改cx中的内容,这样可以控制将读入到内存的文件取出cx中的字节数写到新文件中以下是debug.exe应用程序中常用的命令:-q:退出debug.exe应用程序-n:若文件存在则打开,若文件不存在则建立-l:将已打开的文件装入内存-d:显示存储单元的内容-e:修改存储单元的内容-w:将修改过的存储单元内容写入某个文件-u:将存储单元的内容进行反汇编-t:单步跟踪执行-p:单步快速执行-g:全速执行-a:输入源程序实验二掌握cpu执行程序的过程和堆栈操作(第一部分)1、实训题目:掌握cpu执行程序的过程2、实训目的:应用调试程序debug.exe,观察cpu执行程序的过程,根据观察结果体会计算机取指令、执行指令的工作过程;通过程序理解存储器的实际存储原则。
3、实训步骤及要求:1)在调试程序debug.exe中,利用-A输入下列源程序;1:mov ax,12342:add ax,fedc;3:mov bx,56784:movss,bx5:incbx6:movds,bx7:incbx8:movdi,bx9:mov [di],ax10:incbx11:inc di12:mov [di],bx13:mov cx,66662)输入完源程序之后,回车退回到debug的命令行状态,然后使用-t命令,单步执行并观察第二条语句执行前、后flag register(标志寄存器)中各个二进制位的变化,并能正确解释说明其结果;3)用-t命令单步执行然后观察第9条语句的执行结果;4)认真分析以上程序段的第9和12条语句传送的操作数分别是什么?这两条指令执行之后,找到操作数最后的存放位置。
当找到了操作数之后,你观察这两次存放的数据都在吗?还是丢了一部分?这说明了什么?5)根据你分析的结果,然后写出每条语句的注释;6)了解关键指令对标志寄存器各位的影响;7)理解汇编语言中源程序和机器语言中机器代码,它们之间的区别;8)体会计算机取指令、执行指令的工作过程(主要是注意ip的变化)。
9)深刻体会微机存储器的存储原则。
实验二(第二部分)一、实训题目:堆栈操作二、实训目的:1、观察cpu在执行入栈和出栈操作时堆栈指针的变化;2、理解堆栈的操作过程;3、掌握堆栈操作原理;4、熟悉堆栈这个存储器中的特殊区域;三、实训步骤:1、在调试程序debug.exe中用-A命令输入下列源程序;1)mov ax,12342)mov bx,56783)push ax4)push bx5)movax,abcd6)movds,ax7)pop ax8)pop bx2、认真分析以上程序,然后用-T命令单步运行和自己分析的结果对照,从而体会微机的堆栈操作原则;四、实训要求:1、根据对以上程序段的分析和上机的实际操作,仔细思考下列问题:1)、以上程序段的第3、4条语句是将ax、bx中的1234、5678分别按照先后顺序,放到了堆栈这个特定的存储区里保存起来,那么怎样才能看到1234、5678这2个数据在堆栈里是如何存放的?试写出在实际操作中看的过程和看到的结果?2)、第7、8条语句执行之后,你看到的ax、bx中的内容和原来一样吗?为什么会出现这种结果?这体现了堆栈怎样的操作原则?3)、如果想利用堆栈操作保护ax中的内容不变,应怎样修改以上程序段?4)、观察在3、4条语句和7、8条语句执行前后堆栈指针sp的变化情况,然后说明堆栈的操作原则具体是什么?2、仿照上面给出的程序段,试着自己写出一段小程序,理解堆栈的操作过程和堆栈操作原则;五、实际应达到的实训操作技能:会利用堆栈这个特殊的存储区域,保存程序的中间结果,为第五章的中断执行过程打下坚实的基础;体会堆栈的优点,然后能将堆栈的设计思路应用于其他高级语言编程实际任务中。
实验三熟悉汇编语言上机环境及程序设计一、实验目的及要求1. 学会使用EDIT、TASM、TLINK、DEBUG等软件工具。
2. 熟练掌握在计算机上建立、汇编、链接、调试及运行程序的方法。
二、掌握运行汇编语言程序的操作过程1. 汇编语言的上机步骤要建立和运行汇编语言程序,应该首先有如下文件: ;编辑程序TASM.EXE ;汇编程序TLINK.EXE ;链接程序DEBUG.EXE ;调试程序2. 用EDIT命令建立汇编语言源程序文件(扩展名为ASM)3. 用TASM命令产生目标文件(OBJ文件)4. 用TLINK命令产生可执行文件(EXE文件)经汇编以后产生的目标程序文件OBJ文件并不是可执行程序文件,必须经过链接以后,才能成为可执行文件即EXE文件。
5. 程序的执行建立了可执行文件EXE后,就可以执行程序了,此时只要打入文件名即可。
实际上,大部分程序必须经过调试才能纠正程序设计中的错误,从而得到正确的结果。
所谓调试阶段,就是用调试程序(DEBUG程序)发现错误,再经过编辑、汇编、链接来纠正错误。
三、DEBUG调试程序的应用DEBUG.EXE程序是专门为分析、研制和开发汇编语言程序而设计的一种调试工具,具有跟踪程序执行、观察中间运行结果、显示和修改寄存器或存储单元内容等多种功能。
四、实验内容编写如下程序:在一个给定的存储BUF中存放有10是个有符号数据,要求找出最大值放入MAX存储单元,并显示输出结果。
数据段给出:DATA SEGMENTBUF DB 58H,52H,65H,0F9H,38H,85H,68H,0C8H,79H,3BHMAX DB ?BUFF DB 'THE MAX IS $'DATA ENDS实验四中断过程分析一、实训题目:中断执行过程二、实训目的:1、了解微机的不同设备对应不同的中断类型号;2、掌握不同中断的执行过程;3、分析中断产生的状态和返回的位置;4、理解中断的特点;三、实训步骤:1、在调试程序Debug中用下列程序进行测试、分析:MOV AX,1234MOV DS,AXINT 12;这是一条关键的中断调用指令MOV AX,FFFF;为了观察中断的返回而设置的这4条指令MOV BX,FFFFMOV CX,FFFFMOV DX,FFFF2、输入完源程序之后,单步运行,在第三条指令还未运行之前,观察各个寄存器的状态,和第三条指令运行完成之后比较CS和IP这两个寄存器的状态。
四、实训要求:1、如实记录各个寄存器在第三条指令运行前后的状态,主要比较前、后CS和IP这两个寄存器的状态有何变化?这一变化告诉我们程序已经转走了,即中断已经产生了。
2、根据中断类型号和中断向量的关系,能否找到程序转去的地址是什么?3、堆栈中保护的是哪条指令的存放地址?如果在中断还未返回之前,把堆栈中的这个地址,用Debug调试程序的-e命令修改,成其他的如0100H,那么中断还能会到刚才主程序的断点妈?若没会到主程序的断点,去哪了?和你刚次修改的地址有什么关系?通过这一点你可以得到什么样的结论?4、中断返回的指令是什么?五、实际应达到的实训技能:会利用中断的这种编程思路处理实际问题。
能在实际编程时灵活运用中断,可以增加程序的执行效率。
实验五(第一部分)I/O接口编程一、实训题目:I/O接口编程二、实训目的:1、了解微机的I/O接口编程;2、掌握不同的I/O接口的表示方法;3、分析微机I/O接口上连接的不同外设的控制过程;三、工作原理:详见第九次图。
当系统扬声器端口寄存器中放入FF,经过非门处理,最后使三极管工作在截止状态,所以A节点出现高电平,这时扬声器发声。
与之相反,若在系统扬声器端口寄存器中放入00,经过非门处理,最后使三极管工作在饱和导通状态,所以A节点出现和地线相同的低电平,这时扬声器两个线圈的电位相等,所以不发声。
四、实训步骤:1、在“系统信息”中,找到系统扬声器的I/O接口地址;2、在调试程序Debug中用下列程序进行测试、分析:Li: MOV AL,FFOUT (),AL;将al中当前内容FF送入系统扬声器端口寄存器MOV AL,00OUT (),AL;将al中当前内容00送入系统扬声器端口寄存器SJMP Li3、输入完源程序之后,单步运行,分析实验现象,并能用具体的理论解释这个现象。
五、实训要求:1、在“系统信息”中,找到系统扬声器的I/O接口地址,然后将这个地址填入源程序的两个括号内,最后在调试的过程中去掉括号。
2、要想真正调试上面的这个源程序,必须将源程序中的伪符号li,做适当处理才可以,利用前几次的实训结论,分析上述源程序怎样处理,才能在Debug中调试通过?3、如果你真的对汇编语言感兴趣,能不能再加几条语句,实现响声的间隔再长一点,请你试一试?4、你能用相同的思路处理键盘这个外设吗?写出处理过程。
六、实际应达到的实训技能:会灵活利用I/O接口编程的这种编程思路,和处理方法,解决实际问题。
(第二部分)简单I/O口扩展实验一、实验目的1、熟悉74LS273,74LS244的应用接口方法。
2、掌握用锁存器、三态门扩展简单并行输入、输出口的方法。
二、实验设备MUT—Ⅲ型实验箱、8086CPU模块。
三、实验内容逻辑电平开关的状态输入74LS244,然后通过74LS273锁存输出,利用LED显示电路作为输出的状态显示。
四、实验原理本实验用到两部分电路:开关量输入输出电路,简单I/O口扩展电路。
CPU对外设的操作是通过I/O端口进行的,每个端口有一个编号,称为端口号,CPU的地址线经过端口译码电路输出一负脉冲选中某一端口。
任何时刻都仅有一根端口译码输出为低,其余均为高,被选中的端口可进行数据传送操作。
例如,执行MOV DX,2A0H; OUT DX, AL(或IN AL,DX)则Y4输出一低电平脉冲。
在本实验连线中,Y5的低脉冲使D触发器清0,Y4的低脉冲使D触发器置1。