微机原理实验指导书新版.doc
《微机原理实验指导书新版.doc》由会员分享,可在线阅读,更多相关《微机原理实验指导书新版.doc(44页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、【精品文档】如有侵权,请联系网站删除,仅供学习与交流微机原理实验指导书新版.精品文档.微机原理与接口技术实验指导书主编:王青岳陈超波 张晓倩 许韫韬西安工业大学电信学院软件实验部分11 汇编基本原理21.1 程序,可直接运行的程序,汇编源程序,汇编21.2 CPU取指令、执行指令的过程32汇编工具MASM5.0使用方法32.1汇编源程序文件的建立方法32.2编译阶段52.3链接阶段62.4 程序调试阶段73软件实验项目9软件实验一 清零实验9软件实验二 码制转换实验11软件实验三 数据区移动实验13软件实验四 冒泡法排序实验16软件实验五 存储器校验实验18软件实验六 实时时钟显示实验19硬件
2、实验部分211 微机实验系统简介222 实验系统上位机软件使用方法232.1 软件启动232.2 如何使用星研集成环境软件233 硬件实验项目32硬件实验一 8255 PA口控制PB口实验32硬件实验二 8255控制交通灯实验34硬件实验三 74HC138译码器实验37硬件实验四 8253方波实验39硬件实验五 8259A中断控制器实验41硬件实验六 8250可编程通信实验(与微机)44硬件实验七 简易电子琴实验49硬件实验八 LED8 * 8点阵实验58软件实验部分1 汇编基本原理1.1 程序,可直接运行的程序,汇编源程序,汇编程序程序以文件的形式存在,它是由若干条“指令”顺序排列存储构成的
3、。指令是对符合CPU指令集的所有信息的统称,“指令”在程序中以两种形式存在,一种是以“指令代码”的形式(在可直接运行的程序文件中),另一种是以“助记符”的形式(在汇编源程序文件中)。无论“可直接运行的程序”还是“汇编源程序”,其中的指令都是以顺序排列的方式存储的,只是指令存在的方式不同。可直接运行的程序当程序中的指令是以可执行的“指令代码”的形式存在时,该程序即为可直接运行的程序,该程序所在的文件即为“可执行程序文件”。“直接运行”是指该程序中的指令代码可以被CPU直接执行。汇编源程序当程序中的指令是以“助记符”的形式存在时,该程序即为汇编源程序。该程序所在的文件即为“汇编源程序文件”。汇编每
4、一条指令助记符都一一对应着一条指令代码。将以助记符形式存储的汇编源程序文件翻译成以指令代码形式存储的可执行程序文件的过程叫汇编。其逆过程叫反汇编。换言之,以图1所示为例,经过汇编过程后,汇编源程序文件(*.asm)中以顺序排列方式存储着的所有指令助记符1到指令助记符n,都一一对应的转换成了可执行程序文件(*.exe)中的指令代码1到指令代码n。图11.2 CPU取指令、执行指令的过程如图1所示,CPU取指、执行指令的的过程如下1) CPU中程序计数器PC所指向的地址即为将要取出的指令代码所在的地址;2) PC指向地址后,经读信号有效,该地址中存放的指令代码通过数据总线传送到CPU内部指令寄存器
5、IR中,此时CPU只是取出该指令的二进制代码,尚不知道该二进制代码的具体含义;3) CPU内部的指令译码器ID对IR寄存器中的二进制代码进行译码,经比对其内部的指令集后,CPU即可知道IR中二进制代码的具体指令代码含义;4) 知道指令代码的具体含义后,IR中的指令将被执行。2汇编工具MASM5.0使用方法MASM5.0宏汇编程序用于DOS环境下。这里我们主要使用它的MASM.exe编译工具和LINK.exe链接工具。如前所述,汇编是将助记符书写的源程序文件翻译为二进制指令代码的可执行文件的过程。在MASM5.0工具,实际的汇编过程分为两个阶段,编译阶段和链接阶段。图22.1汇编源程序文件的建立
6、方法可以使用任何一个文本编辑软件来建立汇编源程序文件。如在windows环境下可以使用其“记事本”工具,在DOS环境下可以使用工具等。需要注意的是,建立的汇编源程序文件必须以.asm为扩展名,由于DOS不支持中文和长文件名系统,因此*.asm的文件名部分不可以采用中文输入法输入文件名,常见的可以采用英文、数字或下划线等,并且字符的长度不可以超过8个(最多可以是8个)。例如“12345678.asm”和“abc_1.asm”都是合法的,而“123456789.asm”及“汇编.asm”都是非法文件名,不能被masm5.0的编译工具识别。此外,存盘路径也不可以出现中文或长字符。实例:在window
7、s操作系统点“开始”菜单“运行”栏,在其中输入cmd,回车,进入模拟DOS环境。如图3所示。MASM5.0工具通常安装在实验室电脑的D:或者E:根目录下。在模拟DOS环境中敲入D:或者E:,进入相应盘的根目录。然后敲edit回车,进入文本编辑环境。如图4所示。图3图4在edit编译器中,输入源程序,点击“file”菜单的“save as”“另存为”选项,选择存盘路径为D:或者E:(根据masm5.0所在的路径选择),在File Name栏中输入汇编源程序文件名abc.asm,点击“ok”即建立汇编源程序文件成功。如图5所示。图52.2编译阶段如图2所示,建立好汇编源程序后,需要使用masm.e
8、xe工具进行编译,编译的目的是为了得到*.obj的目标代码文件,该文件是纯二进制代码文件,不能直接显示在屏幕上。经链接后才能得到可执行文件*.exe。在编译阶段中,masm.exe工具将对源程序的语法进行检验,如果发现错误将给予提示。错误提示分为严重错误和警告错误两种。严重错误指示某些指令存在语法错误,不能形成对应的二进制机器指令。而警告错误指示某些指令含义不够明确,需要提醒程序员注意。程序员可以根据提示对源程序进行修改,直到得到正确的结果为止。在汇编过程中还会产生列表文件和交叉引用文件。列表文件的后缀为.LST,主要用于给出源程序和机器代码程序的清单,其中包含了源程序中各语句及其对应的目标代
9、码,各语句的偏移量等相关信息,对调试程序有帮助,以供检查程序使用。交叉索引文件的后缀为.CRF,它是一个为源程序所引用的各种符号进行前后对照的文件,主要用于给出不同程序段中互相引用的全部符号列表。初学者可以不用建立。举例:在以上步骤建立abc.asm源程序文件后,对源文件进行编译。键入 “masm abc.asm”回车,如没有语法错误,则生成目标文件,如图6所示。图6若有错误,则提示错误所在的行号及错误类型,回到源程序中重新改正相应错误处存盘,重复编译过程,直到没有错误才可以得到.obj的目标文件。如图7所示图72.3链接阶段在汇编过程中形成了目标文件(.OBJ),但是在该文件中,只是将源程序
10、的操作码部分变成了机器码,而地址操作数还是可浮动的相对地址,不是实际地址,浮动地址需要再定位。只有经过链接过程才能形成最后的可执行文件。链接程序的功能就是把一个或多个目标文件合并成一个可执行文件,其后缀为.EXE。其实在链接过程中一共形成两个文件:第一个是可执行文件(.EXE)。默认的可执行文件名字与源程序文件相同,也可以根据用户要求修改可执行文件的名字;链接过程中形成的第二个文件是内存映像文件(.MAP),它给出了每个段的地址分配情况和长度。如果不需要该文件则可以在链接命令执行时直接输入Enter键。在链接过程中还与一个库文件(.LIB文件)相关。一般的汇编程序不需要库文件。但是当汇编语言与
11、高级语言(如C语言)接口时需要用到库文件。此时输入相应的库文件名字即可。如图8所示,输入link abc.obj,对目标文件进行链接,得到可执行文件abc.exe。图82.4 程序调试阶段只有得到*.exe可执行文件后才可以进行调试,调试使用windows自带的debug.exe调试工具。使用方法是,在图8所示状态下,输入“debug abc.exe ”回车。进入debug调试环境提示符“-”,用“-U”命令可以显示反汇编信息。如图9所示,在-u命令后的第一行处,显示的“0b5e:0000”即第一条指令代码存放的地址,其中0b5e是指令段段地址,0000是偏移地址。该地址存放的指令代码是b44
12、c,占两个字节(0000和0001两个便宜地址),因此第二行指令偏移地址从0002开始存放。该行右边的“mov ah,4ch”即“b44c”这条指令代码对应的助记符。回顾汇编过程,源程序*.asm中存放的即为图9右边所示的助记符;经过masm.exe工具编译后得到目标文件*.obj,即得到了图9中间部分的指令代码(该指令代码可以直接被CPU识别),但是此时并没有得到物理地址,只有相对的浮动地址;再经过link.exe工具链接后得到可执行文件*.exe,即得到了图9左边所示的指令代码所在的具体物理地址。所以只有可执行文件.exe才可以直接运行,因为其中既包含了指令代码,又包含了指令代码所在的具体
13、物理地址。图9在debug调试环境中,“-q”命令是退出调试状态。“-d”,“-g”,“-t”也经常使用,如图10所示。图10单步执行-t后状态字信息的含义如表1所示溢出标志OF方向标志DF中断标志IF符号标志SF零标志ZF辅助标志AF奇偶标志PF进位标志CFOV(1)DN(1)EI(1)NG(1)ZR(1)AC(1)PE(1)CY(1)NV(0)UP(0)DI(0)PL(0)NZ(0)NA(0)PO(0)NC(0)表1 debug中状态字信息的含义3软件实验项目软件实验一 清零实验一、实验目的熟悉MASM编译环境,了解程序的汇编方法,熟悉常用汇编指令。二、实验内容编写程序,将程序数据段内25
14、6个字节内容清零(或写为55h)三、实验步骤1)按照本章第2节所述,建立源程序文件*.asm(*为自己输入的文件名)2)用masm.exe工具队源程序进行编译,得到目标文件*.obj;3)用link.exe工具对目标文件进行链接,得到可执行文件*.exe;4)用debug调试环境的-U命令,查看数据段段地址,用-D命令查看运行前存储器内容,用-g运行程序后再用-d查看清0(清55H)后的内容图11 调试时先用-U命令查看数据段段地址图12 运行程序前先用-d命令查看数据段,看到0000-00ffh地址中有256个AAH图13 g连续运行程序,提示程序正常执行图14 再次用d命令看数据段,看到0
15、0-00ffH共256个单元清成了55h五、参考程序data segment buf db 256 dup(0aah)data endscode segment assume cs:code,ds:datastart:mov ax,data mov ds,ax mov cx,256 lea si,buf mov al,55h L1: mov si,al inc si loop L1 mov ah,4ch int 21hcode endsend start六、思考题1)画出该程序流程图2)start:标号处开始的两条指令起什么作用?能不能省略?3)程序是如何返回dos的?不加返回DOS指令会有怎
16、样的后果?4)总结Loop指令的用法及功能?其最大循环次数是CX中写多少?循环多少次?软件实验二 码制转换实验一、实验目的了解16进制码转ascii码的方法,学习汇编指令。二、实验内容编写程序,将程序数据段内0,1,2,0Ah,0Bh,0Ch,0Dh,0Eh,0Fh 的16个16进制数转换为相应的ascii码,并存储在原码所在的相应地址中。三、编程原理取出一个数后,首先判断该数是否大于等于10(或小于10),如果大于10则加37H转换,小于10则加30H。四、实验步骤1)按照本章第2节所述,建立源程序文件*.asm(*为自己输入的文件名)2)用masm.exe工具队源程序进行编译,得到目标文件
17、*.obj;3)用link.exe工具对目标文件进行链接,得到可执行文件*.exe;4)用debug调试环境的-U命令,查看数据段段地址,用-D命令查看运行前存储器内容,用-g运行程序后再用-d查看转码后的内容图15 U命令查看数据段段地址图16 程序运行前先用-d命令查看数据段内容图17 程序运行后再用-d命令查看数据段内容四、参考程序data segment buf db 0,1,2,3,4,5,6,7,8,9,0Ah,0bH,0CH,0Dh,0Eh,0Fhdata endscode segment assume cs:code,ds:datastart: mov ax,data mov
18、ds,ax mov cx,16 lea si,buf L2: mov al,si cmp al,10 jb L1 add al,7h L1: add al,30h mov si,al inc si loop L2 mov ah,4ch int 21hcode endsend start五、思考题1)画出程序流程图2)总结无符号条件转移指令的功能,要求更改程序,用JA指令实现相同功能。3)总结CMP指令和test指令的用法和区别4)总结有符号数转移指令JG,JL功能,叙述该指令是如何使用标志位判断有符号数的大小的?软件实验三 数据区移动实验一、实验目的了解交叉区域的数据移动方法,学习汇编指令。二
19、、实验内容编写程序,将程序数据段内00-000fH 的16个数据传送到从0008偏移地址开始的16个字节的区域中。三、编程原理在没有数据区重叠的情况下,可以用递增或递减的方式随意传送。在有数据区重叠的情况只能使用其中一种。因此作为通用的情况,可以先将源区域的首地址和目的区域的首地址进行比较,如果源区域首地址比目的区域首地址小,无论有没有重叠区域,一律采用递减方式传送(即先传送末地址,然后地址指针递减);否则如果源区域首地址比目的区域首地址大,无论有没有数据区重叠,一律用递增方式传送。图18 数据重叠情况数据传送原理示意图四、实验步骤1)按照本章第2节所述,建立源程序文件*.asm(*为自己输入
20、的文件名)2)用masm.exe工具队源程序进行编译,得到目标文件*.obj;3)用link.exe工具对目标文件进行链接,得到可执行文件*.exe;4)用debug调试环境的-U命令,查看数据段段地址,用-D命令查看运行前存储器内容,用-g运行程序后再用-d查看数据传送后的内容图19 运行前后数据区的变化五、参考程序data segment buf1 db 0,1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh;buf1为源区域首地址org 08H buf2 db 8 ;buf2为目的区域首地址 org 10H ;由于偏移地址10H-1Fh区域可能被使用,所以
21、建立足够的数据段缓冲区 db ? ;当10H被db伪指令占用后,10h-1fH都会分配给数据段使用data endscode segment assume cs:code,ds:datastart: mov ax,data mov ds,ax mov cx,16 lea si,buf1 ;如需改变源区域和目的区域位置关系,只要将这里的buf1 lea di,buf2 ;和这里的buf2倒一下次序即可 cmp si,di ja L1 add si,cx dec si ;源区域首地址+16-1即为源区域末地址 add di,cx ; dec di ;目的区域首地址+16-1即为目的区域末地址 st
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书 新版
限制150内