[工学]微机原理与汇编语言实验指导书.doc
《[工学]微机原理与汇编语言实验指导书.doc》由会员分享,可在线阅读,更多相关《[工学]微机原理与汇编语言实验指导书.doc(44页珍藏版)》请在三一办公上搜索。
1、微机原理与汇语言实验指 导 书信控学院测控系曹玉波 孙明革2010-08-21目 录.汇编语言部分1实验一 汇编基本操作1实验二 利用DEBUG调试程序调试程序段4实验三 分支程序实验7实验四 循环程序实验9实验五 子程序实验10实验六 字符处理程序实验13实验七 汇编语言综合设计实验16. 微机原理及应用部分17实验一 8255A可编程并行口实验17实验二 8253A定时/计数器实验20实验三 使用8259A的单级中断控制实验23实验四 使用ADC0809的A/D转换实验29实验五 使用DAC0832的D/A转换实验32实验六 使用8251A的串行接口应用实验35附录: DVCC8086JH
2、N实验平台性能特点3942.汇编语言部分实验一 汇编基本操作实验目的1、熟悉DIR、MD、CD等DOS系统常用命令;2、熟悉在PC机上建立、汇编、链接、调试、和运行汇编语言程序的全过程; 3、设计一个完整的顺序结构汇编语言程序,学习数据传送和算术运算指令的用法。实验内容 一、示例题:在屏幕上显示信息:“1A” 其宏汇编语言程序如下:DATA SEGMENT;定义数据段xdb 48 ;定义字节型变量x, x值存放于内存DATA段字节偏移量处ydb 65;定义字节型变量y, y值存放于内存DATA段字节偏移量1处DATA ENDSCODE SEGMENT;定义代码段(伪指令,编译器使用) ASSU
3、ME CS:CODE,DS:DATA(伪指令,编译器使用)1 ST: MOV AX,DATA;数据段在内在重定位,以便程序能够正确引用的在数据段中2 MOV DS,AX;定义的变量3 MOV DL,x;x值即48D(或31H)“1”的ASCII码存入寄器DL4 MOV AH,2;5INT 21H;调用号DOS中断,用于显示DL中存放的字符6MOV BX,017 MOV DL,BX;通过BX寄存器间接址将y值存入DL(与第3行有相同的作用)8MOV AH,29INT 21H;此段语句功能同上一段10 MOV AH,4CH11 INT 21H;4C号DOS中断,功能是结束程序,将系统控制权返给操作
4、系统CODE ENDS ;以下两句为伪指令,不占用内存,编译器使用 END START实验步骤(假设MASM6汇编程序在D: MASM6目录下),方框框起的部分为键盘输入。1、从“开始”“运行”输入“CMD”命令,进入仿真DOS状态;2、键入D: ,进入D盘(表示回车键); 3、输入CD MASM6,进入MASM6目录(即汇编程序所在目录);4、输入EDIT(即DOS下的文本编辑程序)编辑宏汇编语言源程序,或者用TC编辑环境,或者用Windows的文本编辑程序均可。选用你熟悉的文本编辑程序,按要求逐条输入给出的源程序,并对输入完毕的源程序存盘,其文件名由自己定,但文件的扩展名必须是.ASM(如
5、果用Windows编辑程序,文件格式一定要选纯文本文件),文件保存位置为D: MASM6。例如把示例题源程序文件取名为hello.asm。5、对源程序进行编译以生成.OBJ目标文件(框内为键盘输入的内容,表示回车):D: MASM6MASM hello.asm Microsoft(R) Macro Assembler Version 5.0 Copyright(C) Microsoft Corp 1981-1985,1987,All rights reserved. 工 Source filenamehello.ASM: 注:源文件名,上边已输入在此直接回车即可 Object filename
6、hello.OBJ: 注:目标文件名,默认与源文件同名 Source ListingNUL.LST: 注:列表文件,直接回车表示不生成该文件 Cross-referencenul.CRF: 注:交叉索引文件直接回车表示不生成该文件 50636+408356 Bytes symbol space free 0 Warning Errors注:编译过程没有警告性错误 0 Severe Errors注:没有严重错误,编译成功,如不为0刚需打开源程序按此处给出的错误提示修改错误 D: 注:返回DOS环境不同版本时,以上显示内容可能不同,但基本原理是一致的。MASM完成对源程序的编译,若编译过程中发现语
7、法错误,则列出错误的语句代码及错误类型,最后列出警告错误和语法错误的总数。此时,就可以根据错误的性质分析错误,并使用编辑程序修改源程序,再重新汇编源程序,直至汇编后无错误发生为止。6、链接目标文件,对上步生成的目标文件进行链接生成扩展名为.exe的可执行文件 D: MASM6 LINKMicrosoft(R) 8086 Object,linker Version 3.05 Copyright(C) Microsoft Corp 1983,1984,1985,All rights reserved. Object Modules .OBJ:hello注:目标文件名,扩展名不用输入 Run Fil
8、eHELLO.EXE: 注:可执行文件名,默认与目标文件同名 List FileNUL.MAP:注:不输出MAP文件 Libraries.LIB: 注:不链接库文件若连接过程有错,则显示错误信息,此时需要重新调用编辑程序修改源程序,然后再重新汇编,再经过链接,直至无错为止。7、运行程序及调试程序连接成功后,在D: MASM6目录下生成了一个可执行文件(扩展名为.exe),DOS下用DIR命令可以看见该文件(或者在Windows中文件管理器中也可看见该文件)。操作者可在该目录下直接键入文件名(或在文件管理器中双击)运行此程序:D: MASM6 hello.exe 注:大小写均可,扩展名可不输入回
9、车后屏幕将显示 :5A对于一个较复杂的问题,一次通过的可能性很少,这就需要调用在DOS支持下DEBUG程序来调试程序,关于DEBUG程序的用法参考实验。 二、自己编程:仿照上面程序,将自己的名字打印到屏幕上。反复对以上过程进行练习,认真理解各步的作用,掌握“编辑”、“编译”和“链接”的概念,了解各步的需要的输入文件,输出文件是什么。 实验报告要求 实验报告基本形式: (1)实验题目; (2 ) 实验目的; (3)解决问题的基本算法; (4)实验题的程序流程图; (5)实验题的源程序 (6)调试方案和调试数据; (7)本次实验的主要体会与教训; (8)思考题。实验注意事项 1、已正确编译链接并生
10、成的可执行程序,任何时候均可在该文件所在目录下打入文件名而运行。2、在Windows窗口中找到该文件并双击该文件也可执行该文件,但执行窗口执行后随即消失,有可能看不到执行结果。思考题 1、你在这次实验中,出现了哪些错误?如何修改? 2、通过这次上机实践,你有哪些心得体会?3、在屏幕上输出字符“hello 2012”,试编程实现(有种基本的方法)。实验二 利用DEBUG调试程序调试程序段实验目的 熟悉DEBUG有关命令的使用方法 利用DEBUG掌握有关指令的功能 利用DEBUG运行简单的程序段实验内容 进入和退出DEBUG程序 学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的
11、使用。对于U命令、N命令、W命令等,也应试一下。 利用DEBUG,验证加法、减法、带进位加、带借位减指令的功能。 标志位状态的含义如下表所示:标 志 名置 位复 位溢出Overflow(是/否)OVNV方向Direction(减量/增量)DNUP中断Interrupt(允许/屏蔽)EIDI符号Sign(负/正)NGPL零Zero(是/否)ZRNZ辅助进位Auxiliary Carry(是/否)ACNA奇偶Parity(偶/奇)PEPO进位Carry(是/否)CYNC实验准备 仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。 作为例子,准备用A命令,输入在显示器上显示字符
12、S的系统调用程序段。 阅读将AX左移9位的程序段。实验步骤 在DOS提示符下,键入DEBUG进入DEBUG程序。DEBUG界面提示符为一横线加闪烁的光标。注意,DEBUG下的数均默认为16进制数进入汇编状态:键入A,屏幕显示: XXXX:0100 MOV AH,02 XXXX:0102 MOV AL,03XXXX:0104 ADD AL,AHXXXX:0106 MOV DL,ALXXXX:0108 ADD DL,30XXXX:010B MOV AH,2XXXX:010D INT 21XXXX:010F MOV AH,4CXXXX:0111 INT 21XXXX:0113 -g屏幕将显示”5”并
13、返回DOS界面。窗口截图如下所示:注:左图中1)0B00:0100表示内存中逻辑地址,即所编写程序从内存中0B00:0100处开始存放;2)0B00为当前段寄存器DS的内容,该值随内存使用的不同而具有不同的值,冒号后边的值表示偏移量,0100为起始地址,后边的值由指令的长度决定图:在DOS下进入DEBUG,用A命令编程注:左图中1)0B00:0100列表示内存中逻辑地址,与上图同,通过地址编号间隔数可以计算出每条指令的长度。 2)第二列(B402列)是机器码,与右边的汇编指令一一对应3)从0B00:0113开始的内存区域并没有存放程序,所以后边的程序指令为内存遗留垃圾数据图:编完程序后用U反汇
14、编命令查看程序指令码注:左图中1)g=100表示从偏移量0100处开始执行程序,程序执行到010D时,将字符5打印到屏幕,执行到0111偏移量时,由于该处的指令为结束程序返回DOS指令,所以程序直接退出DEBUG而进入DOS提示符,并显示打印结果2)也可用t=100单步执行命令图:用g命令执行程序 详细记录每一步所用的命令,以及查看结果的方法和具体结果。 在DEBUG状态下调试加减乘除的程序,熟悉DEBUG各种指令。实验报告要求如何启动和退出DEBUG程序。整理每个DEBUG命令使用的方法,实际示例及执行结果。启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?实验三 分支程序实验
15、利用DEBUG调试程序调试程序段实验目的 掌握分支程序的设计方法 掌握利用DEBUG修改参数、检查结果的方法。 掌握汇编语言源程序的编辑、汇编、连接及调试过程。实验内容 编写一个程序,显示AL寄存器中的两位十六进制数 编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示c;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。实验准备 编写实验内容要求的两个程序。 写出调试以上程序,即修改程序参数,检查结果的操作方法。熟悉源程序汇编、连接命令的使用方法即要回答的内容。实验步骤 用EDIT或其它编辑软件,编写.AS
16、M源程序,例如HEXASC.ASM及DSPKEY.ASM。对其进行汇编及连接,产生.EXE文件。对.EXE文件进行调试运行。a.用DEBUG调试运行,学会修改AL内容的方法。b.对DSPKEY.EXE键入不同的字符,分别进行调试。c.在MS-DOS下运行这两个.EXE文件。实验报告要求画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。说明本实验是如何利用DEBUG进行调试的。参考程序清单显示AL中两位十六进制数程序:;DISPHEX.ASMCODE SEGMENT ASSUME CS:CODESTART:MOV AL,3EH MOV BL,AL MOV DL,AL MOV CL,4
17、 SHR DL,CL CMP DL,9 JBE NEXT1 ADD DL,7NEXT1:ADD DL,30H MOV AH,2 INT 21H ;显示高位ASCII码 MOV DL,BL AND DL,0FH CMP DL,9 JBE NEXT2 ADD DL,7NEXT2:ADD DL,30H MOV AH,2 INT 21H ;显示低位ASCII码 MOV AH,4CH INT 21HCODE ENDS ;返回DOS END START显示键入字符程序;DISPKEY.ASMCODE SEGEMENT ASSUME CS:CODESTART: MOV AH,1 INT 21H ;等待键入字
18、符,送AL CMP AL,0DH ;是否是回车符? JZ DONE ;是则转DONE退出程序 CMP AL,0 JB NEXT CMP AL,9 JA CHARUP MOV DL,AL MOV AH,2 INT 21H JMP STARTCHARUP: CMP AL,41H JB NEXT CMP AL,5AH JA CHRDNDISPC: MOV DL,C MOV AH,2 INT 21HNEXT: JMP STARTCHRDN: CMP AL,61H JB NEXT CMP AL,7AH JA NEXT JMP DISPCDONE: MOV AH,4CH INT 21HCODE: ENDS
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 工学 微机 原理 汇编语言 实验 指导书
链接地址:https://www.31ppt.com/p-4532908.html