您好,欢迎访问三七文档
第一次上机一、实验目的1.熟练掌握8086/8088的各种寻址方式及应用。2.掌握DEBUG调试程序中的一些常用命令的使用方法,为以后的实验打下基础。二、实验仪器586微机一台三、实验内容1.关于数据的寻址方式练习8086/8088提供多种方式实现操作数寻址,大体可分为7种:a.立即寻址b.寄存器寻址c.直接寻址d.寄存器间接寻址e.寄存器相对寻址f.基址变址寻址g.基址变址且相对寻址掌握8086/8088的这些寻址方式,是学习汇编语言编程的关键。因此,我们编写了下面的程序段,以数据传送指令为例,列举了部份寻址方式,请同学们按下列要求认真完成。[1]在全屏幕编辑软件下,建立以下汇编语言源程序:STACKSEGMENTSTACKDB0B0H,0B1H,0B2H,0B3H,0B4H,0B5H,0B6H,0B7H,DB0B8H,0B9HDB0BAH,0BBH,0BCH,0BDH,0BEH,0BFHDB10HDUP(00)STACKENDSDATA1SEGMENTDB0A0H,0A1H,0A2H,0A3HTABLEDW0A5A4HDB0A6H,0A7H,0A8H,0A9H,0AAH,0ABHDB0ACH,0ADH,0AEH,0AFHDATA1ENDSDATA2SEGMENTDB0C0H,0C1H,0C2H,0C3H,0C4H,0C5H,0C6H,0C7HDB0C8H,0C9H,0CAH,0CBH,0CCH,0CDH,0CEH,0CFHDATA2ENDSCODESEGMENTASSUMECS:CODE,DS:DATA1,ES:DATA2,SS:STACKSTART:MOVAX,DATA1MOVDS,AXMOVAX,DATA2MOVES,AXMOVBX,0004HMOVCX,0005HMOVBP,0003HMOVSI,0002HMOVDI,0001HMOVAX,CX;以下指令按后表要求完成MOVAX,500HMOVAX,TABLEMOVAX,ES:[BX]MOVAX,[BX+05H]MOVAX,SS:[BX]+03HMOVAX,TABLE[BX]MOVAX,07H[BX]MOVAX,[BP]MOVAX,TABLE[BP]MOVAX,08H[BP]MOVAX,[BP+06H]MOVAX,DS:[BP+03H]MOVAX,[BP]+05HMOVAX,ES:[SI+03H]MOVAX,[DI+06H]MOVAX,[DI]+05HMOVAX,TABLE[SI]MOVAX,[SI]MOVAX,TABLE[DI]MOVAX,[SI]+05HMOVAX,[BX][DI+01H]MOVAX,[BX][SI]+03HMOVAX,TABLE[BX][SI]MOVAX,ES:[BX][DI]MOVAX,[BP][DI+02H]MOVAX,TABLE[BP][DI]MOVAX,ES:[BP][SI]MOVAX,[BP][SI+05H]MOVAX,03H[BP][DI]MOVAX,[BP][SI]MOVAX,[BP+02H][DI+03H]MOVAX,TABLE[BP+02H][DI+03H]MOVAH,4CHINT21HCODEENDSENDSTART[2]用MASM.EXE宏汇编程序对以上源程序进行汇编,其方法为:MASM文件名.ASM;回车此时,如果源程序中无语法错误,则在磁盘上形成文件名.OBJ文件。[3]用LINK.EXE连接程序对文件名.OBJ文件进行连接,其方法为:LINK文件名.OBJ;回车此时,如果连接正确,则在磁盘上形成:文件名.EXE可执行文件。[4]对源程序中从MOVAX,CX开始以下所有指令按下表进行计算。指令SRC寻址方式SRC的地址AX推算值AX实际值MOVAX,CX寄存器寻址00050005MOVAX,500H立即寻址05000500MOVAX,TABLE直接寻址1541:0004A5A4A5A4MOVAX,ES:[BX]寄存器间接寻址1542:0004C5C4C5C4MOVAX,[BX+05H]寄存器相对寻址1541:0009AAA9AAA9MOVAX,SS:[BX]+03H寄存器相对寻址153F:0007B8B7B8B7MOVAX,TABLE[BX]寄存器相对寻址1541:0008A9A8A9A8MOVAX,07H[BX]寄存器相对寻址1541:000BACABACABMOVAX,[BP]寄存器间接寻址153F:0003B4B3B4B3MOVAX,TABLE[BP]寄存器相对寻址1541:0007A8A7A8A7MOVAX,08H[BP]寄存器相对寻址153F:000BBCBBBCBBMOVAX,[BP+06H]寄存器相对寻址153F:0009BAB9BAB9MOVAX,DS:[BP+03H]寄存器相对寻址1541:0006A7A6A7A6MOVAX,[BP]+05H寄存器相对寻址153F:0008B9B8B9B8MOVAX,ES:[SI+03H]寄存器相对寻址1542:0005C6C5C6C5MOVAX,[DI+06H]寄存器相对寻址1541:0007A8A7A8A7MOVAX,[DI]+05H寄存器相对寻址1541:0006A7A6A7A6MOVAX,TABLE[SI]寄存器相对寻址1541:0006A7A6A7A6MOVAX,[SI]寄存器间接寻址1541:0002A3A2A3A2MOVAX,TABLE[DI]寄存器相对寻址1541:0005A6A5A6A5MOVAX,[SI]+05H寄存器相对寻址1541:0007A8A7A8A7MOVAX,[BX][DI+01H]基址变址且相对寻址1541:0006A7A6A7A6MOVAX,[BX][SI]+03H基址变址且相对寻址1541:0009AAA9AAA9MOVAX,TABLE[BX][SI]基址变址且相对寻址1541:000AABAAABAAMOVAX,ES:[BX][DI]基址变址寻址1542:0005C6C5C6C5MOVAX,[BP][DI+02H]基址变址且相对寻址153F:000B7B6B7B66MOVAX,TABLE[BP][DI]基址变址且相对寻址1541:0008A9A8A9A8MOVAX,ES:[BP][SI]基址变址寻址1542:0005C6C5C6C5MOVAX,[BP][SI+05H]基址变址且相对寻址153F:000ABBBABBBAMOVAX,03H[BP][DI]基址变址且相对寻址153F:0007B8B7B8B7MOVAX,[BP][SI]基址变址寻址153F:0005B6B5B6B5MOVAX,[BP+02H][DI+03H]基址变址且相对寻址153F:0009BAB9BAB9MOVAX,TABLE[BP+02H][DI+03H]基址变址且相对寻址1541:000DAEADAEAD[5]用T命令单步运行程序,并用R命令检查AX结果,同时将结果作为实际值填入上表中,和推算值进行比较,从而检验自己对该条指令对应的寻址方式是否掌握。也可用D命令察看存贮器的内容,具体操作方法参看DEBUG使用部分。四、问题讨论在上表中,分析AX推算值与实际值有何不同?找出错误原因,小结出各种寻址方式所用的段寄存器的规律来第二次上机一、实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。2.掌握算术运算中,十进制数调整指令的应用。3.掌握子程序的设计方法。4.掌握DOS功能的调用方法。二、实验仪器586微机一台二、实验内容1.编写求十进制数12678532与02121435(本人学号)之和的程序,并将和以十进制数的形式送屏幕显示。编程要求与提示:[1]两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。[2]和以压缩十进制数的形式存入SUM以下单元。[3]将和送到屏幕显示部分功能的实现采用子程序的形式。[4]实验步骤如下:a.用全屏幕编辑软件建立源程序。b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。c.用link.exe连接程序对目标程序进行连接形成可执行文件。d.用DEBUG对连接通过的可执行程序进行调试。2.有一个首地址为A的N字数组,请编程序使该数组中的数按从大到小的次序排列。编程要求与提示:[1]参加排序的数据及个数由学生自己定义。[2]要将排序前的数组和排序后的数组在屏幕上显示出来。[3]实验步骤同内容一。三、实验程序、流程图与运行结果1、实验程序STACKSEGMENTSTACKDW256DUP(?)TOPLABELWORDSTACKENDS;堆栈段DATASEGMENTADD1DD12678532HADD2DD02121435HSUMDD?DATAENDS;数据段CODESEGMENT;代码段ASSUMECS:CODE,DS:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVAX,STACKMOVSS,AXLEASP,TOPLEASI,ADD1LEADI,ADD2MOVAL,[SI]ADDAL,[DI]DAAMOVBYTEPTRSUM,ALMOVAL,[SI+1]ADCAL,[DI+1]DAAMOVBYTEPTRSUM+1,ALMOVAL,[SI+2]ADCAL,[DI+2]DAAMOVBYTEPTRSUM+2,ALMOVAL,[SI+3]ADCAL,[DI+3]DAAMOVBYTEPTRSUM+3,ALMOVAX,WORDPTRSUM+2CALLDISPAXMOVAX,WORDPTRSUMCALLDISPAXMOVAH,4CHINT21HDISPALPROCNEARPUSHAXPUSHCXPUSHDXPUSHAXMOVCL,4SHRAL,CLCALLCHANGMOVAH,02MOVDL,ALINT21HPOPAXANDAL,0FHCALLCHANGMOVAH,02MOVDL,ALINT21HPOPDXPOPCXPOPAXRETDISPALENDPCHANGPROCNEARCMPAL,10JNGECHANG1ADDAL,7CHANG1:ADDAL,30HRETCHANGENDPDISPAXPROCNEARXCHGAL,AHCALLDISPALXCHGAH,ALCALLDISPALRETDISPAXENDPCODEENDSENDSTART运行结果流程图2、实验程序STACKSEGMENTSTACKDB256DUP(?)STACKENDSDATASEGMENTDATA1DW0212H,1435H,0000H,9999H,1AAAHSTRING1DB'INPUTNUMBER:',0DH,0AH,'$'STRING2DB'THEBIGERTOTHESMALLERIS:',0DH,0AH,'$'DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKSTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVAX,STACKMOVSS,AXLEADX,STRING1MOVAH,09HINT21HMOVCX,6LEASI,DATA1L1:MOVAX,[SI]ADDSI,2CALLDISPAXCALLDISPCRLOOPL1MOVCX,5LEASI,DATA1ADDSI,10LP1:PUSHCXPUSHSILP2:MOVAX,[SI]CMPAX,[SI-2]JBENOXCHGXCHGAX,[SI-2]MOV[SI],AXNOXCHG:DECSIDECSILOOPLP2POPSIPOPCXLOOPLP1LEADX,STRING2MOVAH,09HINT21HMOVCX,6LEASI,DATA1L2:MOVAX,[SI]ADDSI,2CALLDISPAXCALLDISPCRLOOPL2MOVAH,4CHINT21HDISPALPROCPUSHAXPUSHCXPUSHDXPUSHAXMOVCL,4SHRAL,CLCALLCHANGMOVAH,02HMOVDL,ALINT21HPOPAXANDAX,0FHCALL
本文标题:微机原理大作业
链接地址:https://www.777doc.com/doc-7170878 .html