微机原理与系统软件实验指导书教学内容.doc
《微机原理与系统软件实验指导书教学内容.doc》由会员分享,可在线阅读,更多相关《微机原理与系统软件实验指导书教学内容.doc(51页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。微机原理与系统软件实验指导书-微机原理及接口技术实验指导书2010年9月信息学院实验中心微机实验室第一章 80X86微机原理及其程序设计(软件部分)实验一软件程序设计(1.熟悉PC机的使用和调试汇编程序的方法2.简单程序设计)一.实验目的:1.掌握汇编程序由编辑、编译、链接到调试的全过程。2.通过汇编调试工具加深对机器指令执行过程的了解。3.利用汇编调试工具加深对机器指令和伪指令的了解二.实验要求:1.了解PC机的系统类型和基本配置,熟悉PC机DOS和WINDOWS下的基本操作。2.掌握使用UltraE
2、dit等编辑器对汇编语言源程序(存储后扩展名为.ASM)的编辑操作。3.学会用宏汇编程序MASM(或TASM)对.ASM文件进行编译(编译后扩展名为.obj)。4.使用链接程序LINK(或TLINK)对.OBJ文件链接生成.EXE文件。5.学会用汇编调试工具软件TD(或DEBUG)对.EXE文件进行调试进一步深对机器指令的了解、执行程序、检查运行结果的方法。6.简单程序是构成复杂程序的基础。简单程序又称顺序程序,顾名思意,就是为完成一简单的目的,采用一串指令序列,按顺序逐条执行。在简单程序执行过程中,每条指令只执行一次,同时由于没有转移,一般不考虑对标志的影响。象所有汇编程序设计一样,编程前,
3、应考虑如何分配CPU中的寄存器和内存中单元等,要考虑到指令本身的特点和要求分配寄存器,例如,如果希望使用乘法指令进行乘法,根据指令的要求,必须要使用AL或AX作为被乘数,在这种情况下,AL或AX就必须考虑为存放被乘数,当然,乘积应该是放在AX或DX:AX中。1.掌握汇编程序的基本结构及设计方法,包括:A汇编语言源程序结构B基于汇编级的解题算法C寄存器和存储器的内容分配D简单汇编程序的设计E返回系统的方法2.掌握对自编程序的调试及出错修改的方法,包括:A汇编程序的编辑、编译、链接及调试B在调试程序过程中发现语法错误的处理方法C在调试程序过程中如何发现逻辑错误及处理方法3.利用调试工具软件对课堂中
4、讲授的机器指令、伪指令、操作符、运算符等内容加深了解三.实验仪器:PC机一台四.实验内容:汇编程序的编程环境有以下二种方式:1.Dos窗口下命令行方式2.UltraEdit方式其中第一种Dos方式,是指进入Dos窗口模式编辑源文件,用命令行方式直接调用Tasm,Masm等编译工具进行程序的编译、链接、调试,而后两种工作方式都是在Windows下进行源文件的编辑,而编译和链接仍然是通过调用Tasm,Masm等编译工具完成相应工作。为了方便我们现在一般采用后一种编程环境。下面我们分别介绍:UltraEdit方式UltraEdit是Windows下非常优秀的文本编辑软件,有很好的可配置性,支持语法高
5、亮等。通过配置UltraEdit,可实现在UltraEdit环境下编辑汇编源程序、汇编、连接、调用TDebug调试非常方便。配置完成后,可实现快捷键调用各编译、连接、调试功能。实验机器上已经预配置好了。使用说明:1.打开UltraEdit,编辑并保存汇编源文件。先新建一个文件,并保存为.asm为后缀的文件,此后,可以有语法高亮指示。输入汇编程序并保存。2.编译UltraEdit菜单栏高级masm编译(或Tasm编译)此菜单会调用masm.exe或tasm.exe,输出结果放在当前编辑屏幕的下方。3.链接UltraEdit菜单栏高级Link链接(或Tlink链接)此菜单会调用Link.exe(m
6、l.exe)或tlink.exe,输出结果也放在当前编辑屏幕的下方。4.调试UltraEdit菜单栏高级Td调试此菜单会新开一个dos窗口,在其中运行td.exe,可利用单步跟踪和设置断点等方式进行调试,调试完毕,ALT+X退出Td环境,exit返回即可。另:DOS窗口模式与全屏模式的切换键:Alt+Enter调试最好在全屏模式下。例1.输入以下程序,完成由编辑、编译、链接到调试的全过程。在调试过程中应使用单步跟踪、断点等方法调试,注意观察寄存器、标志位和有关存储器内容的变化。A.将S1(BYTE),S2(WORD)和S3(DWORD)中内容送至D1,D2,D3注意:以下程序有误,在调试过程中
7、加以修改使之正确DATASEGMENTSS1DB1234HSS2DWEA32HSS3DD12345678HDD1DB0DD2DW?DD3DW?DATEENDSCODESEGMEMTASUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,SS1MOVDD1,ALLEASI,SS2LEADI,DDMOVAX,SIMOVDI,AXMOVSI,OFFSETS3MOVDI,OFFSETD3MOVAX,SIMOVD3,AXINCSIINCDIMOVAX,SIMOVDI,AXMOVAX,4C00H;返回系统INT21HCODEENDSENDSSTRATB.完成两个
8、长整数相加的汇编程序要求:调试过程中应更改必要的参数值,以验证程序的正确性,例如本题可修改加数和被加数以判别最高位进位处理是否正确。并将该程序修改为减法操作重新调试。DATASEGMENTNUMBEREQU6BUFFER1DB12H,0E2H,33H,43H,12HBUFFER2DB22H,0A2H,55H,0F2H,3FHRESULTDBNUMBERDUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCX,NUMBER-1MOVSI,OFFSETBUFFER1;被加数指针MOVDI,OFFSETBU
9、FFER2;加数指针LEABX,RESULT;和指针XORAX,AX;清CF标志NEXT:MOVAL,SIADCAL,DI;带进位相加MOVBYTEPTRBX,AL;保存部分和INCSI;变动指针INCDIINCBXLOOPNEXT;循环控制ADCAH,0;最高位进位MOVBYTEPTRBX,AHMOVAX,4C00H;返回系统INT21HCODEENDSENDSTARTC.完成数据块的移动,并利用TD观察内存中数据移动过程。DS_DATASEGMENTBUFFER1DB0,1,2,3,4,5,6,7,8,9DS_DATAENDSES_DATASEGMENTRESULTDB10DUP(?)ES
10、_DATAENDSMY_CODESEGMENTASSUMECS:MY_CODE,DS:DS_DATA,ES:ES_DATASTART:MOVAX,DS_DATAMOVDS,AXMOVAX,ES_DATAMOVES,AXMOVSI,OFFSETBUFFER1MOVDI,OFFSETRESULTMOVCX,10REPMOVSBMOVAX,4C00HINT21HMY_CODEENDSENDSTART例2.在汇编调试工具软件的环境下,完成下列指令的执行,注意选取有代表性的数据,并观察指令执行前后的数值变化:例如:观察MOVAX,BX指令在TD或DEBUG下将AX,BX分别置不同的值,写入MOVAX,B
11、X指令然后执行,再观察AX,BX寄存器的内容。A.XCHGB.XLATC.LDS和LESD.MUL和IMULE.CBW和CWD分正数和负的情况F.移位和循环指令例3在屏幕上输出字符串Hellotheworld!代码如下:DATASEGMENTBUFFERDBHellotheworld!,0DH,0AH,$DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXLEADX,BUFFERMOVAH,9INT21HMOVAX,4C00HINT21HCODEENDSENDSTART五.实验习题:1.用多种寻址方式将数据段中定义的A
12、1(字),A2(字),A3(双字)的数据分别送至附加段B1,B2,B3单元。2.将A中的大写英文字母转换成相应的小写字母。例:A:45H(E)65H(e)3.将A中数据(=9)的平方存至B中。例:A:6B:24H(36)4.将一个压缩的BCD数转换成相应的ASCII码。例:56H35H(5),36H(6)5.有一种加密方法是首先在被加密的所有符号中建立其一一对应的符号,例如:0-2,1-7,2-1,3-6,4-95-0,6-8,7-3,8-4,9-5然后将数据进行变换后存储,即当源数是6时,保存的数据是8,这样就可以达到保密的效果。试编一程序完成十六进制数的加密和解密程序。6.完成分别将两个压
13、缩BCD数据和非压缩BCD数据相加的程序(加数和被加数及和小于9999)。7.完成两个32位数的乘法程序。例:01234567H*89ABCDEFH=9CA39DC94E4629H(选做)8.利用串操作指令完成两串数据的比较,结果用RESULT单元为00H和0FFH表示相同或不相同。例:String1:ABC,String2:ABC则RESULT:00HString1:ABC,String2:ADC则RESULT:0FFH9.利用串操作指令统计以$(ASCII码为24H)为结束的字符串中字符的个数。例:String:STUDY$则RESULT:510.按本实验要求,自编一程序。实验二软件程序设
14、计(1.汇编分支程序设计2.汇编循环程序设计)一.实验目的:掌握分支程序设计和调试方法以及掌握循环程序的设计和调试方法二.实验要求:分支程序的基本设计方法包括:1.掌握利用条件转移指令方法2.了解利用跳转表方法3.了解利用逻辑尺方法4.掌握循环程序的基本结构及设计方法,包括:A循环程序的循环初始化、循环体及循环控制条件B多种循环控制条件C循环体中的指针变化了解多重循环程序的设计方法三.实验仪器:PC机一台四.实验内容:A.分支程序内容分支结构是程序设计的基本结构,它们在执行过程中,或直接更改或通过对标志的判别,实现更改程序按顺序执行的次序,这些更改是通过对IP(段内)或CS:IP(段间)的修改
15、完成的,而实现对这些寄存器的修改是通过无条件转移和有条件转移完成的。1.无条件转移无条件转移采用的是无条件转移指令,即JMP类指令,在8086汇编中,JMP类指令根据需要转移的目的不同,分成短JMP(SHORT),段内JMP(NEAR)和段间JMP(FAR),其基本格式如下:短跳转:JMPTTT;TTT在该跳转指令的127字节之内段内跳转:JMPTTT;TTT是段内NEAR型定义的标号JMPNEARPTRTTTJMPCX;利用寄存器中内容替换IPJMPWORDPTRBX;利用内存中某字单元内容替换IP段间跳转:JMPFARPTRTTT;TTT是FAR型标号JMPDWORDPTRBX;利用内存中
16、双字单元内容替换IP和CS严格地说,SHORT跳转不是当前JMP指令的127字节之内,计算机实际操作过程是将该指令读入后的IP,即JMP当前地址加2后的IP与指令中八位的偏移量相加,然后替换IP,所以,若以JMP指令的位置为准的话,则是-126至+129之间。SHORT和NEAR型一般由汇编时自动区分,应指出的是,条件转移采用的都是SHORT型,因此,当源和目的较远时(即超出SHORT范围),应在较近的位置设置一条JMP指令,以实现不同位置的跳转。2.条件转移条件判别指令是条件转移程序设计的基础,掌握指令如何对标志的影响及如何利用条件转移指令达到程序分支的目的。如前所述,条件转移的跳转距离都是
17、SHORT型。对跳转的条件判别根据判别的条件分两类,一种是单条件的判别,另一种是复合条件的判别,对单条件判别,主要对单一的标志位进行测试,如判CF标志,判SF标志等,而复合条件则是对多标志位进行判别,其标志的影响一般是由数值运算后决定的,如带符号数大于等于的条件判别等。尽管复合条件需多标志判别,但在8086指令助记符中与单条件转移指令没有区别。单条件判别指令如下:(1)JC或JNC根据进位标志CF进行转移(2)JE/JZ或JNE/JNZ根据零标志ZF进行转移(3)JS或JNS根据符号标志SF进行转移(4)JO或JNO根据溢出标志OF进行转移(5)JP/JPE或JNP/JPO根据奇偶标志PF进行
18、转移根据操作数的不同,分无符号数和带符号数的判别,对无符号数有A(高于)B(低于),带符号数有G(大于)L(小于)等判别。为了方便起见,其指令助记符对同一种条件可能有多种表示方法,如:JGE与JNL的条件判别条件是相同的,使用者根据习惯和需要选取其中的一种表示。无符号数判别指令如下:1.JA/JNBE高于(不低于等于)转移2.JAE/JNB高于等于(不低于)转移3.JB/JNAE低于(不高于等于)转移4.JBE/JNA低于等于(不高于)转移带符号数判别指令如下:1JG/JNLE大于(不小于等于)转移2JGE/JNL大于等于(不小于)转移3JL/JNGE小于(不大于等于)转移4JLE/JNG小于
19、等于(不大于)转移3.分支程序设计有条件转移程序是分支程序主要部分,这样的分支程序是根据当前运算的结果去判断选择不同的程序段执行,反之,如果要求是根据不同的情况,完成不同的任务,则需要使用分支程序结构来实现。如上述,程序的分支是根据标志决定的,所以,如何影响标志及如何利用标志是分支程序的重点,例如,判断AX中内容是否是负数,我们可用多种方法实现:方法1ANDAX,AX;影响SF标志JSMINCE;为负数转入负数处理.方法2CMPAX,0;影响SF标志JSMINCE;为负数转入负数处理.方法3TESTAX,8000H;影响ZF标志JNZMINCE;为负数转入负数处理.方法4ADDAX,AX;影响
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 系统软件 实验 指导书 教学内容
限制150内