微型计算机原理实验1-数据传送.
实验一 数据传送实验目的熟悉8086指令系统的数据传送指令及8086的寻址方式。利用Turbo Debugger调试工具来调试汇编语言程序。实验预习要求复习8086指令系统中的数据传送类指令和8086的寻址方式。预习Turbo Debugger的使用方法:如何启动Turbo Debugger;如何在各窗口之间切换;如何查看或修改寄存器、状态标志和存储单元的内容;如何输入程序段;如何单步运行程序段和用设置断点的方法运行程序段。按照题目要求预先编写好实验中的程序段。实验任务1.通过下述程序段的输入和执行来熟悉Turbo Debugger的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下:MOV BL,08HMOV CL,BLMOV AX,03FFHMOV BX,AXMOV DS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下: MOV AX,0102H MOV BX,0304H MOV CX,0506H MOV DX,0708HPUSH AXPUSH BXPUSH CXPUSH DX1、POP DXPOP CXPOP BXPOP AX2、POP AXPOP BXPOP CXPOP DX3、POP CXPOP DXPOP AXPOP BX3.指出下列指令的错误并加以改正,上机验证之。(1) MOV [BX],[SI]原因:两个操作数不能同时为存储器操作数修改:改为MOV BX,[SI](2) MOV AH,BX原因:MOV操作指令中两个操作数字长必须相同修改:改为MOV AX,BX(3) MOV AX,[SI][DI]原因:源操作数中同时出现两个变址寄存器修改:改为MOV AX,[BX][DI](4) MOV BYTE PTR[BX],2000H原因:MOV操作指令中两个操作数字长必须相同修改:改为MOV WORD PTR[BX],2000H(5) MOV CS,AX原因:一般情况下,代码寄存器CS不能作为目标操作数修改:改为MOV AX,CS(6) MOV DS,2000H原因:不能用立即数直接给段寄存器赋值修改:改为MOV DX,2000HMOV DS,DX4. 设置各寄存器及存储单元的内容如下: (BX)=0010H,(SI)=0001H(10010H)=12H,(10011H)=34H,(10012H)=56H,(10013H)=78H(10120H)=0ABH,(10121H)=0CDH,(10122H)=0EFH说明下列各条指令执行完后AX寄存器中的内容,并上机验证。MOV AX,1200H执行后AX=1200HMOV AX,BX执行后AX=0010HMOV AX,[0120H]执行后AX=CDABHMOV AX,[BX]执行后AX=3412HMOV AX,0110H[BX]执行后AX=CDABHMOV AX,[BX][SI]执行后AX=5634HMOV AX,0110H[BX][SI]执行后AX=EFCDH5. 将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。直接寻址:MOV AX,[1000H]MOV [2020H],AX寄存器间接寻址:MOVSI,1000HMOV AX,[SI]MOV SI,2020HMOV[SI],AX变址寻址:MOVBX,1000HMOV SI,0HMOV AX,[BX][SI]MOV SI,1020HMOV[BX][SI],AX寄存器相对寻址:MOVBX,1000HMOV AX,0H[BX]MOV1020H[BX],AX6. 设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:0010H单元中的内容为3333H。将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:0010H单元中的内容进行交换。试编写程序段,并上机验证结果。MOV AX,1111HMOV BX,2222HMOV [0010H],3333HXCHG AX,BXXCHG BX,[0010H]7.设(DS)=1000H,(ES)=2000H,有关存储器的内容如下图所示。要求将DS段的内容传送到AX寄存器,ES段的内容传送到BX寄存器,试编写程序段。MOV CX,1000HMOV DS,CXMOV CX,2000HMOV ES,CXMOV DS:[0000H],0EEFFHMOV ES:[0000H],0CCDD