《《微机原理实验》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《微机原理实验》PPT课件.ppt(24页珍藏版)》请在三一办公上搜索。
1、微机原理实验,第一部分 汇编语言程序的建立和执行 第二部分 8255A并行口的实验 第三部分 交通灯控制接线图1 交通灯控制接线图2,第一部分本实验手册是利用TPC-1型十六位微机上机实验系统进行实验,要求用8086汇编语言来编写程序,这里,我们首先明汇编语言程序从建立到执行的过程。要建立和运行汇编语言程序,应该首先有如下文件:EDIT.COM 编辑程序MASM.EXE 宏汇编程序LINK.EXE 链接程序DEBUG.EXE 调试程序 下面,以建立和执行用户程序ABC.EXE为例来说明上机过程。,1、用EDIT命令建立汇编语言源程序(ASM文件),源程序就是用汇编语言的语句编写的程序,它不能被
2、机器识别。源程序必须以ASM为扩展文件名。例如打入命令:C:ASMEDIT ABC.ASM(每个命令后面应输入回车,以下均如此)此时用户可以通过编辑程序的命令编写用户程序ABC.ASM。,2、用MASM命令产生目标文件OBJ文件,汇编,实际上就是把以ASM为扩展名的源文件转换成用二进制代码表示的目标文件,目标文件以OBJ为扩展名。汇编过程中,汇编程序对源文件进行二次扫描,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误,这时,用户可以再用编辑程序来修改源程序中的错误,最后,得到没有语法错误的OBJ文件。例如,对hpled.asm的汇编过程如下:C:ASM MASM hpl
3、ed.asm,3.用LINK命令产生执行文件(EXE文件),汇编过程根据源程序产生出二进制的目标文件(OBJ文件),但OBJ文件用的是浮动地址,它不能直接上机执行。所以还必须使用连接程序(LINK.EXE)将OBJ文件转换成可执行的EXE文件。LINK命令还可以将某一个目标文件和其它多个模块(这些模块可以是由用户编写的,也可以是某个程序中存在的)链接起来。以对hpled.obj进行连接为例:C:ASMLINK hpled.obj,4程序的执行,有了EXE文件后,就可以执行程序了,此时,只要打入文件名即可。仍以hpled为例:C:ASM hpled,实际上,大部分程序必须经过调试才能纠正程序设计
4、中的成为错误,从而得到正确的结果。所谓调试阶段,就是用调试程序(DEBUG程序)发现错误,再经过编辑、汇编、链接来纠正错误。关于DEBUG程序中的各种命令,可参阅DOS手册,下面给出最常用的几个命令。先进入DEBUG程序并装入要调试的程序hpled.exe,操作命令如下:C:ASMDEBUG hpled.exe;进入DEBUG,并装hpled.exe 此时,屏幕上出现一个短划线。为了查看程序运行情况,常常要分段运行程序,为此,要设立“断点”,即让程序运行到某处自动停下,并把所有寄存器的内容显示出来。为了确定我们所要设定的断点地址,常常用到反汇编命令,反汇编命令格式如下:,-U;从当前地址开始反
5、汇编也可以从某个地址处开始反汇编,如下所示:-U100;从CS:100处开始反汇编确定断点地址后,就可以用G命令来设置断点。比如,想把断点设置在200H处,则如下打入命令:-G200 此时,程序在0200H处停下,并显示出所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言,程序员可以从显示的寄存器的内容来了解程序运行是否正确。,对于某些程序段,单从寄存器的内容看不到程序运行的结果,而需要观察数据段的内容,此时可用D命令,使用格式如下:-D DS:0000;从数据段0单元开始显示128各字节。在有些情况下,为了确定错误到底由哪条指令的执行引起,要用到跟
6、踪命令(单步执行命令),此命令是程序每执行一条指令,边给出所有寄存器的内容。比如:-T 3;从当前地址往下执行三条指令。此指令使得从当前地址往下执行三条指令,每执行一条,便给出各寄存器内容。最后,给出下一条要执行的指令的地址、机器语言和汇编语言。从DEBUG退出时,使用如下命令:-Q;退出DEBUG,卸去所装配程序。,第二部分 8255A并行口的实验,一、实验目的掌握通过8255A并行口传输数据的方法,来控制LED发光二极管的亮灭。二、实验内容用8255A的B端口和C端口控制12个LED发光二级管的亮和灭(输出为0则亮,输出为1则灭)。返回第一部分,三、编程提示 1、要完成本实验,首先必须了解
7、交通路灯的亮灭规律。设有一个十字路口,1、3为南,北方向,2、4为东,西方向,初始态为4个路口的红灯全亮。之后,1、3路口的绿灯亮,2、4路口的红灯亮,1、3路口方向通车。延迟一段时间后,1、3路口的绿灯熄灭,而1、3路口的黄灯开始闪烁。闪烁若干次后,1、3路口的红灯亮,同时2、4路口的绿灯亮,2、4路口方向开始通车。延迟一段时间后,2、4路口的绿灯熄灭,而黄灯开始闪烁。闪烁若干次后,再切换到1、3路口方向。之后,重复上述过程。,2、程序中应设定好8255A的工作模式,使三个端口均工作于方式0,并处于输出态。3、8255A的A端口地址为:218H B端口地址为:219H C端口地址为:21AH
8、 控制口地址为:21BH四、程序讲解1、设置数据段,以及端口地址分配2、设置堆栈段和代码段3、主程序 4、延时程序 查看接线图1 图2,3、主程序,流程图,1、设置数据段,以及端口地址分配 data segment pb db?porta equ 218h portb equ 219h portc equ 21Ah ptcon equ 21Bh mess db ENTER ANY KEY CAN EXIT TO DOS!,0dh,0ah,$data ends,2、设置堆栈段和代码段stack segment stack sta dw 50 dup(?)top equ length sta st
9、ack ends code segment assume cs:code,ds:data,es:data,ss:stack,3、主程序start:mov ax,data mov ds,ax mov es,ax mov ah,09h;显示 mov dx,offset mess int 21h mov dx,ptcon;输入控制字 mov al,80h;工作在方式0 out dx,al;A、B、C口都为输出 查看流程图,初始化设置mov dx,portb;控制4个黄灯灭mov al,0f0hout dx,almov dx,portc;控制4个绿灯灭mov al,0f0h;4个红灯亮out dx,a
10、l call delay5;延时mov pb,10100101b;控制交通灯灯正常运行的控制字,lll:mov al,pb mov dx,portc;控制红绿灯 out dx,al call delay10 or al,0f0h;红灯亮灭不变 out dx,al;绿灯全灭 mov cx,0004h;黄灯闪烁次数 ttt:mov ah,06h mov dl,0ffh int 21h jnz ppp;判断是否有键按下,mov dx,portb;绿灯亮的相应位置黄灯亮 mov al,pb out dx,al call delay5 or al,0f0h;绿灯灭,红灯亮灭不变 out dx,al ca
11、ll delay5 loop ttt;黄灯闪烁4次 not pb;pb取反,红绿灯亮灭互换,mov ah,06h mov dl,0ffh int 21h jnz ppp;判断是否有键按下 jmp lll;继续控制红绿灯ppp:mov ax,4c00h;退出,回到DOS int 21h,4、延时程序 delay1 proc near;延时子程序 push cx mov cx,0ffffh ccc:loop ccc pop cx ret delay1 endp,delay5 proc near;延时程序 push ax push cx mov cx,0060h uuu:call delay1;调用延时子程序 loop uuu pop cx pop ax retdelay5 endp 返回程序讲解,