您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 经营企划 > 微型计算机原理实验1-数据传送.
实验一数据传送一、实验目的1.熟悉8086指令系统的数据传送指令及8086的寻址方式。2.利用TurboDebugger调试工具来调试汇编语言程序。二、实验预习要求1.复习8086指令系统中的数据传送类指令和8086的寻址方式。2.预习TurboDebugger的使用方法:a如何启动TurboDebugger;b如何在各窗口之间切换;c如何查看或修改寄存器、状态标志和存储单元的内容;d如何输入程序段;e如何单步运行程序段和用设置断点的方法运行程序段。3.按照题目要求预先编写好实验中的程序段。三、实验任务1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下:MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX1、POPDXPOPCXPOPBXPOPAX2、POPAXPOPBXPOPCXPOPDX3、POPCXPOPDXPOPAXPOPBX3.指出下列指令的错误并加以改正,上机验证之。(1MOV[BX],[SI]原因:两个操作数不能同时为存储器操作数修改:改为MOVBX,[SI](2MOVAH,BX原因:MOV操作指令中两个操作数字长必须相同修改:改为MOVAX,BX(3MOVAX,[SI][DI]原因:源操作数中同时出现两个变址寄存器修改:改为MOVAX,[BX][DI](4MOVBYTEPTR[BX],2000H原因:MOV操作指令中两个操作数字长必须相同修改:改为MOVWORDPTR[BX],2000H(5MOVCS,AX原因:一般情况下,代码寄存器CS不能作为目标操作数修改:改为MOVAX,CS(6MOVDS,2000H原因:不能用立即数直接给段寄存器赋值修改:改为MOVDX,2000HMOVDS,DX4.设置各寄存器及存储单元的内容如下:(BX=0010H,(SI=0001H(10010H=12H,(10011H=34H,(10012H=56H,(10013H=78H(10120H=0ABH,(10121H=0CDH,(10122H=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。(1MOVAX,1200H执行后AX=1200H(2MOVAX,BX执行后AX=0010H(3MOVAX,[0120H]执行后AX=CDABH(4MOVAX,[BX]执行后AX=3412H(5MOVAX,0110H[BX]执行后AX=CDABH(6MOVAX,[BX][SI]执行后AX=5634H(7MOVAX,0110H[BX][SI]执行后AX=EFCDH5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。直接寻址:MOVAX,[1000H]MOV[2020H],AX寄存器间接寻址:MOVSI,1000HMOVAX,[SI]MOVSI,2020HMOV[SI],AX变址寻址:MOVBX,1000HMOVSI,0HMOVAX,[BX][SI]MOVSI,1020HMOV[BX][SI],AX寄存器相对寻址:MOVBX,1000HMOVAX,0H[BX]MOV1020H[BX],AX6.设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:0010H单元中的内容为3333H。将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:0010H单元中的内容进行交换。试编写程序段,并上机验证结果。MOVAX,1111HMOVBX,2222HMOV[0010H],3333HXCHGAX,BXXCHGBX,[0010H]7.设(DS=1000H,(ES=2000H,有关存储器的内容如下图所示。要求将DS段的内容传送到AX寄存器,段的内容传送到BX寄存器,ES试编写程序段。MOVCX,1000HMOVDS,CXMOVCX,2000HMOVES,CXMOVDS:[0000H],0EEFFHMOVES:[0000H],0CCDDHMOVAX,DS:[0000H]MOVBX,ES:[0000H]程序运行结果如下:四、小结TurboDebugger的使用方法TurboDebugger界面分为以下几个部分:•••••菜单栏:实现打开、保存、运行等操作代码段区:可以在cs:ip指定的内存位置输入指令寄存器区:可以设置或者查看寄存器的值标志寄存器区:可以设置或者查看标志寄存器中各标志位的值数据段或附加段区:可以在ds:段内偏移地址指定的内存位置设置或者查看存储器单元的值,以字节为单位•堆栈段区:可以设置或者查看堆栈中的值,以字为单位操作方式如下:(1)在代码段区光标所在位置每输入一条指令,就单击回车或者OK键完成该指令的输入(2)如果采用单步执行方式,则每按一次F7或F8,将执行CS:IP所在位置的一条指令,同时光标移到下一条指令所在位置,已执行指令影响到的寄存器将被突显出来(3)由于当前数据段区所显示的内容未包含最后一条指令所访问的存储单元,因此没有看到执行结果,可以连续按Tab键或者点击鼠标定位到数据段区,再按Alt-F10,打开局部菜单,然后选择Goto命令,输入要查看的存储单元的地址,按回车或者点击OK按钮完成地址的输入(4)如果要再次执行程序,需要先定位到代码段区第1条指令所在位置,然后单击Alt-F10,打开局部菜单并选择NewCS:IP命令,此时代码区的光标和指针符号都停留在第1条指令所在位置,寄存器区IP的值由于受到该操作的影响会被重新赋值,并被突显出来(5)如果要执行整个程序段,可以将代码区的光标停留最后一条指令的下一行,按F2键设置断点,按F4或F9可以一次从程序段的起始位置执行到断点所在位置
本文标题:微型计算机原理实验1-数据传送.
链接地址:https://www.777doc.com/doc-5858810 .html