ImageVerifierCode 换一换
格式:DOCX , 页数:89 ,大小:1.14MB ,
资源ID:9039315      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/9039315.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理实验指导书新版.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理实验指导书新版.docx

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硬件实验部分 211 微机实验系统简

2、介 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内部指令寄存器IR

5、中,此时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的编译工具识别。此外,存盘路径也不可以出现中文或长字符。实例:在windows操

7、作系统点“开始”菜单“运行”栏,在其中输入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.exe

8、工具进行编译,编译的目的是为了得到*.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是偏移地址。该地址存放的指令代码是b44c,

12、占两个字节(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编译环境,了解程序的汇编方法,熟悉常用汇编指令。二、实验内容编写程序,将程序数据段内256个

14、字节内容清零(或写为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命令看数据段,看到00-

15、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 d

18、s,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

22、d L3: mov al,si L3:rep movsb mov di,al ;递减方式 jmp L2 dec si dec di loop L3 jmp L2 ;初学者往往在这里容易遗漏 L1: mov al,si L1:cld mov di,al rep movsb inc si ;递增方式 L2:mov ah,4ch inc di int 21h loop L1 L2: mov ah,4ch int 21hcode endsend start六、思考题1)为什么要在数据段定义足够的缓冲深度?2)用串传送指令实现该程序功能。软件实验四 冒泡法排序实验一、实验目的了解冒泡法原理,学习多重循环

23、的编程方法。二、实验内容编写程序,用冒泡法实现将数据段内5,3,3,2,1按照由小到大的顺序重新排列。三、编程原理 冒泡即将数据两两比较,确保大的数放到右边。N个数经历N-1次冒泡后可以找到最大的气泡。其中“两两比较”可以用内循环的结构实现。经历第一次冒泡后剩下的N-1个数依然是无序的,可以重新重复冒泡过程,第二次只需经历n-2次两两比较即可以找到次大的气泡。依次类推,第N-1次冒泡后恰好可以排好所有的数。重复执行的N-1次的冒泡过程可以用外循环结构实现。由图21可知,内循环次数只要每次和外循环次数相等即可图20 冒泡法原理示意图1图21 冒泡法原理示意图2四、实验步骤1)按照本章第2节所述,

24、建立源程序文件*.asm(*为自己输入的文件名)2)用masm.exe工具队源程序进行编译,得到目标文件*.obj;3)用link.exe工具对目标文件进行链接,得到可执行文件*.exe;4)用debug调试环境的-U命令,查看数据段段地址,用-D命令查看运行前存储器内容,用-g运行程序后再用-d查看转码后的内容5)可以用-T命令单步执行,观察每条指令运行后的寄存器及存储器变化情况,观察冒泡法的原理图22 程序运行前后的冒泡法排序情况五、参考程序data segmentbuf1 db 5,4,3,2,1data endscode segmentassume cs:code,ds:datasta

25、rt: mov ax,data mov ds,ax mov dx,4 ;dx中存放外循环次数 L3: mov cx,dx ;cx中存放内循环次数,内循环次数等于外循环次数 lea si,buf1 L2: mov al,si ;取出第一个数 cmp al,si+1 ;两个数比较 jb L1 ;如果第一个数比第二个数大,则两两交换 xchg al,si+1 mov si,al L1: inc si loop L2 dec dx ;外循环次数减1,没减到0则跳转至L3处,重新置 jnz L3 ;入内循环的计数初值 mov ah,4ch int 21hcode endsend start六、思考题1)

26、n个数冒泡法排序共需要多少次循环?2)循环嵌套时总循环次数和内外循环次数是哪种数学关系?编写内外循环嵌套的双重循环程序,实现100次内循环,300次外循环。软件实验五 存储器校验实验一、实验目的了解存储器校验原理,学习汇编指令。二、实验内容编写程序,将数据段1000H开始的256个字节校验。三、编程原理 为了测试存储器每个位是否正常,可以对存储单元的每一位分别写入0和1,再立刻读出来,如果读出依然是0和1,说明写0和写1都正常,否则,说明存储器相应单元已损坏。对每一位写入时,通常采用分别写入55H和0AAH的方式。四、实验步骤1)按照本章第2节所述,建立源程序文件*.asm(*为自己输入的文件

27、名)2)用masm.exe工具队源程序进行编译,得到目标文件*.obj;3)用link.exe工具对目标文件进行链接,得到可执行文件*.exe;4)用debug调试环境的-U命令,查看数据段段地址,用-g运行程序后再用-d查看数据段的内容五、思考题若存储器段地址为1600H,首偏移地址为0000H,要求以8088为CPU,用全译码方式扩展一片6264存储器,画出扩展电路图软件实验六 实时时钟显示实验一、实验目的了解显示相关的中断调用方式,了解软件延时原理。学习子程序的编程方法。二、实验内容编写程序,在显示器上显示00:00格式走动的电子时钟,其中冒号前为模拟分针位,冒号后为模拟秒针位(不严格要

28、求每一秒秒针位走动一次)三、编程原理 在显示器上显示可以采用21H中断的2号子功能或者9号子功能,以2号子功能为例,DL中必须先存放要显示字符的ascii码,AH中写入2,再执行int 21h即显示一位的信息。 注意秒针位和分针位的边界处理,秒针走到59后,秒针位需要清零,分针位加1,分针位走到59后分针位和秒针位都清0。 软件延时即循环执行N次构成循环体的若干指令,每次循环的时间为T,则延时NT。四、实验步骤1)按照本章第2节所述,建立源程序文件*.asm(*为自己输入的文件名)2)用masm.exe工具队源程序进行编译,得到目标文件*.obj;3)用link.exe工具对目标文件进行链接,

29、得到可执行文件*.exe;4)直接运行*.exe文件,观察屏幕上显示的电子时钟的走动状态是否正常。五、参考程序stack segment db 128 dup(?) top dw ?stack endscode segmentassume cs:code,ss:stackstart: mov ax,stack mov ss,ax lea sp,top mov bh,0 ;BH中存放分针位 mov bl,0 ;BL中存放秒针位 L1: mov al,bh ;将分针位送入码制转换子程序 call xchg_code ;将分针位的高四位和低四位转换为ascii码 mov dl,al ;显示分针的高4

30、位 mov ah,2 int 21h mov dl,dh ;显示分针的低4位 mov ah,2 int 21h mov dl,: ;显示分号 mov ah,2 int 21h mov al,bl ;将秒针位送入码制转换子程序 call xchg_code ;将秒针位的高四位和低四位转换为ascii mov dl,al ;显示秒针的高四位 mov ah,2 int 21h mov dl,dh ;显示秒针的低四位 mov ah,2 int 21h mov dl,0dh ;显示换行字符,(并未回车) mov ah,2 int 21h call delay ;延时秒针跳动一步所需的时间 inc bl ;秒针位加一 cmp bl,60 ;比较是否秒针到60秒 jb L2 mov bl,0 inc bhL2: cmp bh,60 ;比较是否分针到60分 jb L3 mov bl,0 mov bh,0L3: jmp L1xchg_code:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1