当前位置:文档之家› 微机原理实验 源程序

微机原理实验 源程序

《微机原理及接口技术》实验指导书杨霞周林英编长安大学电子与控制工程学院2009年9月前言本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。

完成本实验指导中的实验,可使学生基本掌握8086/8088的结构原理、接口技术、程序设计技巧。

手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。

主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使用。

所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学要求,选择相应实验。

学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂一般接口芯片电路图。

目录实验一清零程序 (4)实验二拆字程序 (6)实验三数据区移动 (8)实验四多分支程序设计 (10)实验五多字节减法运算 (13)实验六显示程序 (16)实验七 8251串口实验 (20)实验八步进电机控制 (26)附录一汇编语言的存储模型 (36)附录二 8279键值显示程序 (37)实验一清零程序一、实验目的掌握8088汇编语言程序设计和调试方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容把RAM区内4000H-40FFH单元的内容清零。

四、程序框图五、源程序清单.MODEL TINY.STACK 100.DATA.CODEORG 0100HSTART:MOV BX,4000HMOV AX,0000HMOV CX,80HL1: MOV [BX],AXINC BXINC BXLOOP L1JMP $END START六、实验步骤手动修改RAM区内4000H-40FFH的内容,连续或单步方式运行程序,检查4000-40FFH内容执行程序前后的变化。

七、思考1、把4000H-40FFH中的内容改成FF,如何修改程序。

2、把4000H-40FFH中的内容改成00~FF,如何修改程序。

实验二拆字程序一、实验目的掌握汇编语言设计和调试方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容把4000H单元的内容拆开,高位送4001H低位,低位送4002H低位,4001H、4002H 的高位清零,一般本程序用于把数据送显示缓冲区时用。

四、程序框图五、源程序.MODEL TINY.STACK.DATA.CODESTART:MOV BX,4000HMOV AL,[BX]MOV AH,ALMOV CL,4SHR AH,CLINC BXMOV [BX],AHAND AL,0FHINC BXMOV [BX],ALJMP $六、实验步骤手动修改4000H的内容,用连续或单步方式运行程序,检查4000H-4002H 中内容变化情况。

七、思考1.如何用断点方式调试本程序。

2.把4000H、4001H单元低位的内容合成一字送4002H单元。

实验三数据区移动一、实验目的掌握RAM中的数据操作。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容把4100H源RAM区首址内的16字节数据传送到4200H目标RAM区。

四、设计思想程序要求把内存中某一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。

源数据块和目的数据块在存储器中可能有三种情况,如下图:对于两个数据块分离的情况,如图(a),数据的传送从数据块的首址开始,或者从数据块的末址开始均可。

但对于有部分重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭破坏。

可以得出以下结论:当源数据首址>目的块首址时,从数据块首址开始传送数据。

当源数据块首址<目的块首址时,从数据块末地址开始传送数据。

五、程序框图六、源程序清单.MODEL TINY.STACK.DATA.CODEORG 0100HSTART0:MOV CX,0010HMOV SI,4100HMOV DI,4200HCMP SI,DIJA A42ADD SI,CXADD DI,CXA41: DEC SIDEC DIMOV AL,[SI]MOV [DI],ALLOOP A41JMP $A42: MOV AL,[SI]MOV [DI],ALINC SIINC DILOOP A42JMP $END START0七、实验步骤调试运行3060程序,检查4100-410FH中内容是否和4200-420FH中内容完全一致。

八、思考1.把4200H源RAM区首址内的16字节数据传送到4100H目标RAM区。

2.把4100H源RAM区首址内的16字节数据传送到410AH目标RAM区。

实验四多分支程序设计一、实验目的掌握汇编语言的编程,熟悉程序散转的设计方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容编写程序,根据接收到的键值,作不同的处理。

四、设计思想多分支结构相当于一个多路开关,在程序设计中通常是根据某寄存器或某单元的内容进行程序转移。

在设计多分支转移程序时,如果分支太多,则平均转移速度太慢,本实验采用转移地址表实现多分支转移,可以提高平均转移速度。

五、程序框图散转程序流程框图六、实验步骤3、使用各种手段调试程序3、结果显示在G5区的数码管上七、源程序清单;调用GetKeyB返回键值,根据键值执行相应的程序.MODEL TINYEXTRN Display8:NEAR, GetKeyB:NEAR.STACK 100.DATABUFFER DB 8 DUP(?).CODESTART: MOV AX,@DATAMOV DS,AXMOV ES,AXNOPSTART1: CALL GetKeyB ;键值存放在AL中CMP AL,8JB START2XOR AL,AL ;大于7,作0处理START2: XOR AH,AHMOV BX,AXSHL BX,1LEA DI,Table_1JMP CS:[DI][BX]Table_1: DW Key0, Key1, Key2, Key3, Key4, Key5, Key6, Key7 Key0: MOV AL,1JMP KeyKey1: MOV AL,2JMP KeyKey2: MOV AL,3JMP KeyKey3: MOV AL,4JMP KeyKey4: MOV AL,5JMP KeyKey5: MOV AL,6JMP KeyKey6: MOV AL,7JMP KeyKey7: MOV AL,8JMP KeyKey: MOV CX,8LEA DI,BUFFERREP STOSBLEA SI,BUFFERCALL Display8MOV CX,60000LOOP $ ;延时JMP START1END START实验五多字节减法运算一、实验目的掌握BCD码、补码,熟悉多文件、多模块汇编语言程序设计的方法。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容从键盘上输入4位被减数、减数,实现双字节BCD码(四位数)的减法,结果显示在数码管上;进一步熟悉使用断点、单步进入、单步、运行到光标处、修改PC指针、全速运行等各种调试手段;熟悉查看特殊功能寄存器、CS段、DS段存贮器的各种方法。

四、程序框图双字节十进制减法程序框图五、实验步骤123、结果显示在G5区的数码管上六、源程序清单.MODEL TINYEXTRN Display8:NEAR, GetBCDKey:NEAREXTRN F1:BYTE.STACK 100.DATABUFFER DB 8 DUP(?)minuend DW 1 DUP(?) ;被减数subtrahend DW 1 DUP(?) ;减数.CODESTART:MOV AX,@DATAMOV DS,AXMOV ES,AXNOPMOV F1,0 ;先清除显示,再接收键输入START1:LEA DI,minuendMOV CX,4 ;按键次数CALL GetBCDKey ;得到双字节十进制数(被减数)MOV F1,1 ;接收到第一个键,才清除显示LEA DI,subtrahendMOV CX,4 ;按键次数CALL GetBCDKey ;得到双字节十进制数(减数)MOV AX,minuendMOV BX,subtrahendMOV DL,10HCMP AX,BXJNB START2XCHG AX,BXMOV DL,11H ;负数START2:SUB AL,BL ;低位DASXCHG AL,AHSBB AL,BH ;高位DASXCHG AL,AHCLDLEA DI,BUFFER ;存放显示结果CALL B1toB2 ;低位MOV AL,AHCALL B1toB2 ;高位MOV AL,10H ;最高三位消隐STOSBSTOSBSTOSBSTOSBLEA SI,BUFFER+3MOV CX,3CALL BlackDisplay ;将高位0消隐LEA SI,BUFFERCALL Display8JMP START1;将一个字节压缩BCD码转换成二个字节非压缩BCD码B1toB2PROC NEARPUSH AXAND AL,0FHSTOSBPOP AXAND AL,0F0HROR AL,4STOSBRETB1toB2ENDPBlackDisplay PROC NEAR ;将高位0消隐BlackDisplay1:MOV AL,[SI]CMP AL,0JNZ ExitMOV AL,10HMOV [SI],ALDEC SILOOP BlackDisplay1Exit:CLDMOV [SI+1],DLRETBlackDisplay ENDPEND START七、思考从键盘上输入4位被加数、加数,实现双字节BCD码(四位数)的加法,结果显示在数码管上。

实验六显示程序一、实验目的1、熟悉8255的功能,理解LED显示原理及控制方法;2、学会使用LED点阵液晶显示字体和图形;3、认真预习本节实验内容,可尝试自行编写程序,做好实验准备工作,填写实验报告。

二、实验设备STAR系列实验仪一套、PC机一台。

三、实验内容1、编写程序,用8255的PA、PB口控制LED的位选和段选,(1)控制8位数码管依次显示0;(2)编写程序,控制8位数码管依次显示任意指定字符(0-F);(3)编写程序,控制8位数码管同时显示0、1、……F;2、按图连接线路,运行程序,观察实验结果。

四、实验原理图接PB接8255PA五、实验步骤六:源程序(1) 控制8位数码管依次显示0;.MODEL TINY.STACK 100.DATAIO8255_Con EQU 0F003H ;CS3控制字端口地址IO8255_A EQU 0F000H ;A数据口IO8255_B EQU 0F001H ;B数据口LED_TAB: DB 03FH,06H,05BH,04FH,66H,6DH,7DH,07HDB 07FH,6FH,77H,7CH,39H,05EH,79H,71H ;存储要显示的数码管的值,B口的8位分别对应7位数码管的abcdefg.CODESTART: MOV AX,@DATA;单片机寻址方式,地址怎样传到DATA中的MOV DS,AX ;初始化数据段寄存器MOV ES,AX ;初始化附加段,这一句不需要MOV DX,IO8255_Con ;控制字地址送DXMOV AL,80H ;方式0,A,B,C均为输出OUT DX,ALMOV AL,0FEH ; 8255 PC输出,输出0FEH到A口MOV CX,8GOON: MOV DX,IO8255_A ;位选,就是片选,选择哪一个LED组OUT DX,AL ;1111 1110输出到A口ROL AL,1 ;循环左移1位,最低位的0移动1位到高位,进行片选用MOV AH,AL ;AL当前值送AH暂存,因为AL还要用于B口数据送DX。

相关主题