您好,欢迎访问三七文档
武汉大学微机接口实验报告2目录目录...........................................................................................................................................................................2实验一数据传送...................................................................................................................................................3实验二算术逻辑运算及移位操作........................................................................................................................7实验三算术逻辑运算及移位操作......................................................................................................................12实验四字符及字符串的输入和输出..................................................................................................................14《微机原理与接口技术》软件编程题目..............................................................................................................163实验一数据传送一、实验目的1.熟悉8086指令系统的数据传送指令及8086的寻址方式。2.利用EMU调试工具来调试汇编语言程序。二、实验预习要求1.复习8086指令系统中的数据传送类指令和8086的寻址方式。2.预习EMU的使用方法:3.按照题目要求预先编写好实验中的程序段。三、实验任务1.通过下述程序段的输入和执行来熟悉EMU的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下:MOVBL,08HMOVCL,BLMOVAX,03FFHMOVBX,AXMOVDS:[0020H],BX2.用以下程序段将一组数据压入(PUSH)堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下:4MOVAX,0102HMOVBX,0304HMOVCX,0506HMOVDX,0708HPUSHAXPUSHBXPUSHCXPUSHDX出栈段程序:POPCXPOPDXPOPBXPOPAXRET3.指出下列指令的错误并加以改正,上机验证之。(1)MOV[BX],[SI]5存储器操作数不可直接传递,改为MOV[BX],SI(2)MOVAH,BX操作数字长不相同,改为MOVAH,BH(3)MOVAX,[SI][DI]基址変址寻址时,不允许两变址寄存器组合在一起,改为MOVAX,[BX][DI](4)MOVBYTEPTR[BX],2000H字长不同,改为MOVWORDPTR[BX],2000H(5)MOVCS,AX段寄存器CS内容不通过MOV指令改写(6)MOVDS,2000H不能用立即数直接给段寄存器赋值,改为MOVAX,2000HMOVDS,AX5.将DS:1000H字节存储单元中的内容送到DS:2020H单元中存放。试分别用8086的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。(1)直接寻址MOVAX,[1000H]MOV[2010H],AX(2)寄存器间接寻址MOVBX,1000HMOVAX,[BX]MOV[2020H],AX(3)变址寻址MOVSI,1000HMOVAX,[SI]MOV[2020H],AX(4)寄存器相对寻址MOVAX,[1000H]MOVBX,1000HMOV1020H[BX],AX6.设AX寄存器中的内容为1111H,BX寄存器中的内容为2222H,DS:0010H单元中的内容为3333H。6将AX寄存器中的内容与BX寄存器中的内容交换,然后再将BX寄存器中的内容与DS:0010H单元中的内容进行交换。试编写程序段,并上机验证结果。MOVAX,1111HMOVBX,2222HMOV[0010H],3333HMOVDX,BXMOVBX,AXMOVAX,DXMOVDX,BXMOVBX,[0010H]MOV[0010H],DX7.设(DS)=1000H,(ES)=2000H,有关存储器的内容如图1.5所示。要求将DS段的内容传送到AX寄存器,ES段的内容传送到BX寄存器,试编写程序段。MOV[1000H],0EEFFHMOVES:[2000H],0CCDDHMOVAX,[1000H]MOVBX,ES:[2000H]四、实验报告要求小结EMU的使用方法:1.首先选择是建立.COM文件还是.EXE文件。这取决于是要编写运行一个程序段还是可执行程序。本节均是验证程序段。故采用.COM文件。7实验二算术逻辑运算及移位操作一、实验目的1.熟悉算术逻辑运算指令和移位指令的功能。2.了解标志寄存器各标志位的意义和指令执行对它的影响。二、实验预习要求1.复习8086指令系统中的算术逻辑类指令和移位指令。2.按照题目要求在实验前编写好实验中的程序段。三、实验任务1.实验程序段及结果表格如表1.2:标志位CFZFSFOFPFAF程序段1:MOVAX,1018HMOVSI,230AHADDAX,SIADDAL,30HMOVDX,3FFHADDAX,BXMOV[20H],1000HADD[20H],AXPUSHAXPOPBX000000000000000000000011000000000000000000000000000000000000000000程序段2:MOVAX,0A0AHADDAX,0FFFFHMOVCX,0FF00HADCAX,CXSUBAX,AXINCAXORCX,0FFHANDCX,0F0FHMOV[10H],CX000000000000100011100011100010010010000000001010000010000010程序段3:MOVBL,25HMOVBYTEPTR[10H],40000000000000000008MOVAL,[10H]MULBL000000000000程序段4:MOVWORDPTR[10H],80HMOVBL,4MOVAX,[10H]DIVBL000000000000000000000000000000程序段5:MOVAX,0DECAXADDAX,3FFFHADDAX,AXNOTAXSUBAX,3ORAX,0FBFDHANDAX,0AFCFHSHLAX,1RCLAX,1000000001011100001000011000011001010001000001000100110112.用BX寄存器作为地址指针,从BX所指的内存单元(0010H)开始连续存入三个无符号数(10H、04H、30H),接着计算内存单元中的这三个数之和,和放在0013H单元中,再求出这三个数之积,积放0014单元中。写出完成此功能的程序段并上机验证结果。程序如下:MOVBX,0010HMOV[BX],10HMOV[0001H][BX],04HMOV[0002H][BX],30HMOVAL,[BX]ADDAL,[0001H][BX]ADDAL,[0002H][BX]MOV[0003H][BX],ALMOVAL,BLMUL[0001H][BX]MUL[0002H][BX]MOV[0004H][BX],AX93.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行的最后结果(AX)(1)传送15H到AL寄存器;(2)再将AL的内容乘以2;(3)接着传送15H到BL寄存器;(4)最后把AL的内容乘以BL的内容。程序如下:MOVAL,15HMOVDX,2MULDXMOVBL,15HMULBLRET4.写出完成下述功能的程序段。上机验证你写出的程序段,程序运行后的商=?(1)传送数据2058H到DS:1000H单元中,数据12H到DS:1002H单元中;(2)把DS:1000H单元中的数据传送到AX寄存器;(3)把AX寄存器的内容算术右移二位;(4)再把AX寄存器的内容除以DS:1002H字节单元中的数;(5)最后把商存入字节单元DS:1003H中。程序如下:MOV[1000H],2058HMOV[1002H],12HMOVAX,[1000H]MOVCL,2SARAX,CLDIV[1002H]MOV[1003H],ALRET105.下面的程序段用来清除数据段中从偏移地址0010H开始的12个字存储单元的内容(即将零送到这些存储单元中去)。(1)将第4条比较指令语句填写完整(划线处)。MOVSI,0010HNEXT:MOVWORDPTR[SI],0ADDSI,2CMPSI,(填写18)JNENEXTHLT(2)假定要按高地址到低地址的顺序进行清除操作(高地址从0020H开始),则上述程序段应如何修改?程序如下:MOVSI,0020HNEXT:MOVWORDPTR[SI],0SUBSI,2CMPSI,18JNENEXTHLT116.输入并运行表1.3中的程序段,把结果填入表右边的空格中,并分析结果,说明本程序段的功能是什么。程序段字单元(1A00H)=字单元(1A02H)=MOV[1A00H],0AA55HMOV[1A02H],2AD5HSHLWORDPTR[1A02H],1CMP[1A00H],8000HCMCRCLWORDPTR[1A02H],1RCLWORDPTR[1A00H],1550055D555AA55AA55AA5555AA55功能是将第一个数除以2,第二个数乘以4四、实验报告要求1.简要说明ADD、SUB、AND、OR指令对标志位的影响。ADD:对6个状态标志位都会影响;SUB:影响与ADD指令影响完成相同;AND:影响6个标志位,并使CF=OF=0;OR:影响6个标志位,并使CF=OF=02.简要说明一般移位指令与循环移位指令之间的主要区别。一般移位:将操作数右移m位,同时每移一位,左边的符号位保持不变,移出的最低位进入标志位CF。对于有符号数和无符号数而言,算术右移相当于除以2.;循环移位:循环移位指令的操作数形式与移位指令相同,如果仅移动一次,可以用1表示;如果需要移位多次,则需用CL寄存器表示移位次数。12实验三算术逻辑运算及移位操作一、实验目的1.熟悉串操作指令的功能。2.了解串操作指令的使用方法。二、实验预习要求1.复习8086指令系统中的串操作类指令。2.按照题目要求在实验前编写好实验中的程序段。三、实验任务1.输入以下程序段并运行之,回答后面的问题。CLDMOVDI,1000HMOVAX,55AAHMOVCX,10HREPSTOSW(1)从DS:1000H开始的16个字单元的内容是什么?(2)(DI)=?(CX)=?,并解释其原因。2.在上题的基础上,再输入以下程序段并运行之,回答后面的问题。MOVSI,1000HMOVDI,2000HMOVCX,20HREPMOVSB(1)从DS:2000H开始的16个字单元的内容是什么?(2)(SI)=?(DI)=?(CX)=?,并分析之。3.从DS:1000H开始存放有一个字符串”Thisisastring”,要求把这个字符串从后往前传送到DS:2000H开始的内存区域中(即传送结束后,从DS:2000H开始的内存单元的内容为”gnirtsasisiht”),试编写程序
本文标题:微机接口实验报告
链接地址:https://www.777doc.com/doc-6492536 .html