微型计算机原理实验1数据传送Word格式文档下载.docx
《微型计算机原理实验1数据传送Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微型计算机原理实验1数据传送Word格式文档下载.docx(8页珍藏版)》请在冰豆网上搜索。
e如何单步运行程序段和用设置断点的方法运行程序段。
3.按照题目要求预先编写好实验中的程序段。
三、实验任务
1.通过下述程序段的输入和执行来熟悉TurboDebugger的使用,并通过显示器屏幕观察程序的执行情况。
练习程序段如下:
MOVBL,08H
MOVCL,BL
MOVAX,03FFH
MOVBX,AX
MOVDS:
[0020H],BX
2.用以下程序段将一组数据压入(PUSH堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。
压栈程序段如下:
MOVAX,0102H
MOVBX,0304H
MOVCX,0506H
MOVDX,0708H
PUSHAX
PUSHBX
PUSHCX
PUSHDX
1、POPDX
POPCX
POPBX
POPAX
2、POPAX
POPDX
3、POPCX
3.指出下列指令的错误并加以改正,上机验证之。
(1MOV[BX],[SI]
原因:
两个操作数不能同时为存储器操作数
修改:
改为MOVBX,[SI]
(2MOVAH,BX
MOV操作指令中两个操作数字长必须相同
改为MOVAX,BX
(3MOVAX,[SI][DI]
源操作数中同时出现两个变址寄存器
改为MOVAX,[BX][DI]
(4MOVBYTEPTR[BX],2000H
改为MOVWORDPTR[BX],2000H
(5MOVCS,AX
一般情况下,代码寄存器CS不能作为目标操作数修改:
改为MOVAX,CS
(6MOVDS,2000H
不能用立即数直接给段寄存器赋值
改为MOVDX,2000H
MOVDS,DX
4.设置各寄存器及存储单元的内容如下:
(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]
(6MOVAX,[BX][SI]
执行后AX=5634H
(7MOVAX,0110H[BX][SI]
执行后AX=EFCDH
5.将DS:
1000H字节存储单元中的内容送到DS:
2020H单元中存放。
试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。
直接寻址:
MOVAX,[1000H]
MOV[2020H],AX
寄存器间接寻址:
MOVSI,1000H
MOVAX,[SI]
MOVSI,2020H
MOV[SI],AX
变址寻址:
MOVBX,1000HMOVSI,0H
MOVAX,[BX][SI]MOVSI,1020HMOV[BX][SI],AX
寄存器相对寻址:
MOVBX,1000H
MOVAX,0H[BX]
MOV1020H[BX],AX
6.设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:
0010H单元中的内容为3333H。
将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:
0010H单元中的内容进行交换。
试编写程序段,并上机验证结果。
MOVAX,1111H
MOVBX,2222H
MOV[0010H],3333H
XCHGAX,BX
XCHGBX,[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可以一次从程序段的起始位置执行到断点所在位置