微机原理及应用实验指导书汇编语言资料.docx

上传人:b****4 文档编号:24909841 上传时间:2023-06-02 格式:DOCX 页数:25 大小:1.49MB
下载 相关 举报
微机原理及应用实验指导书汇编语言资料.docx_第1页
第1页 / 共25页
微机原理及应用实验指导书汇编语言资料.docx_第2页
第2页 / 共25页
微机原理及应用实验指导书汇编语言资料.docx_第3页
第3页 / 共25页
微机原理及应用实验指导书汇编语言资料.docx_第4页
第4页 / 共25页
微机原理及应用实验指导书汇编语言资料.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

微机原理及应用实验指导书汇编语言资料.docx

《微机原理及应用实验指导书汇编语言资料.docx》由会员分享,可在线阅读,更多相关《微机原理及应用实验指导书汇编语言资料.docx(25页珍藏版)》请在冰豆网上搜索。

微机原理及应用实验指导书汇编语言资料.docx

微机原理及应用实验指导书汇编语言资料

实验一 8251A串行通讯

一、实验目的 

1.了解串行通讯的基本原理

2.掌握串行接口芯片 8251的工作原理和编程方法

二、实验内容 

1、按图4连接好电路,(8251插通用插座)其中8253计数器用于产生8251的发送和接收时钟,TXD和RXD连在一起。

  

2、编程:

 从键盘输入一个字符,将其ASCII码加 1 后发送出去,再接收回来在屏幕上显示,实现自发自收。

 

三、硬件接线图与程序流程图

硬件连接图:

流程图:

四、 实验源程序 

DATA    SEGMENT 

STRING  DB 'PLEASE INPUT A CHARACTER:

',0DH,0AH,'$' 

DATA    ENDS  

STACK SEGMENT STACK 'STACK'       

DB 100 DUP(?

) 

STACK ENDS  

CODE  SEGMENT 

      ASSUME CS:

CODE,DS:

DATA,SS:

STACK 

START:

MOV   AX,DATA       

MOV   DS,AX       

MOV   DX,0283H 

MOV   AL,16H 00010110        

OUT   DX,AL 

MOVDX,0280H; 设置8253A计数器0的初值       

MOV   AL,34H;        

OUT   DX,AL 

MOVDX,02B9H;初始化8251       

MOV   AL,40H       

CALL  OUT1 

MOV   AL,4EH;01001110方式控制字       

CALL  OUT1 

MOV   AL,27H;00100111向8251命令控制字,允许其发送和接收       

CALL  OUT1 

MOV   DX,SEG STRING       

MOV   DS,DX 

MOV   DX,OFFSET STRING       

MOV   AH,09H       

INT   21H 

WAIT1:

MOV   DX,02B9H       

IN    AL,DX    

TESTAL,01H;发送是否准备好       

JZ    WAIT1       

MOV   AH,01H       

INT   21H       

CMP   AL,1BH       

JZ    EXIT       

INC   AL 

MOV   DX,02B8H       

OUT   DX,AL;发送       

MOV   CX,0040H 

LOP1:

 LOOP  LOP1 

NEXT:

 MOV   DX,02B9H       

IN  AL,DX 

      TEST  AL,02H;检查接收是否准备好       

JZ    NEXT 

      MOV   DX,02B8H 

      IN    AL,DX;准备好,接收       

MOV   DL,AL       

MOV   AH,02H       

INT   21H       

JMP   WAIT1 

EXIT:

 MOV   AH,4CH       

INT   21H 

OUT1  PROC  NEAR;向端口输出一字节的子程序       

OUT   DX,AL      

PUSH  CX 

MOV   CX,0040H 

LOP2:

 LOOP  LOP2       

POP   CX       

RET 

OUT1  ENDP 

CODE  ENDS 

END START

五、 实验结果 

运行程序,屏幕显示提示输入,输入一个字符后同时显示这个字符的ASCII码值加一的ASCII码所代表的字符,例如输入1,显示2.  

六、 实验总结 

本次试验主要是对串行接口芯片8251的理解与运用。

模拟的是两台计算机之间的通信,所以适合使用异步通信方式。

通过这次实验,我学习了串口通信的相关知识,也学习了8251芯片的使用方法。

作为串行通信接口,时序是非常重要的,输入输出之间的时间差必须控制得合适,否则就不能正常收发,这可以通过软件编程实现,当时序不符合时,可插入等待时间,即软件延时来解决。

实验完成后对8251的工作原理有了更加深入的理解,也对异步通信和同步通信的区别与特点有了更加生动的认识。

实验二 8255可编程并行接口(方式0)

一、实验目的

掌握8255方式0的工作原理及使用方法

2、实验内容

(1)实验电路如图6,8255C口接逻辑电平开关K0—K7,A口接LED显示电路L0—L7

(2)编程从8255C口输入数据,再从A口输出数据

三、源程序:

DATA    SEGMENT

DATA    ENDS

STACK SEGMENT STACK 'STACK'       

DB 100 DUP(?

) 

STACK ENDS  

CODE  SEGMENT 

      ASSUME CS:

CODE,DS:

DATA,SS:

STACK 

START:

MOV   AX,DATA       

MOV   DS,AX       

MOV   DX,28BH;8255初始化,10001001,C口输入,A口输出

MOV   AL,89H    

OUT   DX,AL

LOOP1:

 MOVDX,28AH;C口输入

INAL,DX

MOVDX,288H;A口输出

OUTDX,AL

MOVAL,01H

JNT16H

JNZEXIT;ZF=0说明有按键输入,故退出

JMPLOOP1

EXIT:

MOVAX,4COOH

INT21H

CODEENDS

ENDSTART

4、实验结果

拨动K0—K7,对应的L0-L7亮,有按键输入则退出

5、实验总结

8255芯片需要设置好控制字,然后进行读写控制操作。

实验三 8253可编程定时器/计数器

一、实验目的

掌握8253的基本工作原理和编程方法

二、实验内容

按图7虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

按图8连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)。

三、编程提示

1、8253控制寄存器地址283H

计数器0地址280H

计数器1地址281H

CLK0连接时钟1MHZ

2、参考流程图

四、实验代码

1、图7电路的实验代码

CODESEGMENT;段定义开始(CODE段)

ASSUMECS:

CODE;规定CODE为代码段

START:

MOVAL,10H;设置控制字00010000(计数器0,方式0,写两个字节,二进制计数)

MOVDX,283H;把控制寄存器地址放在DX寄存器中

OUTDX,AL;将AL的值送入DX端口

MOVDX,280H;把计数器0地址放在DX寄存器中

MOVAL,0FH;将0FH存入AL寄存器

OUTDX,AL;将此时AL的值送入DX端口

LP1:

INAL,DX;从DX端口读入8位,放在AL寄存器中

CALLDISP;调用DISP

PUSHDX;将DX内容保存到堆栈段

MOVAH,06H;将06H存入AH,为了下句调用21中断

MOVDL,0FFH;将0FFH存入DL

INT21H;调用21中断

POPDX;将DX的内容推出栈段

JZLP1;如果DX的内容是0,就跳转到LP1

MOVAH,4CH;将4CH存入AH,为了下句调用21中断

INT21H;调用21中断

DISPPROCNEAR;定义一个名为DISP的子程序

PUSHDX;把DX的内容保存到堆栈段中

ANDAL,0FH;将AL寄存器的内容与0FH进行“与”运算,再把结果存入AL中

MOVDL,AL;将AL的值送入DL寄存器

CMPDL,9;比较DL中的值与9的大小

JLENUM;如果DL的值小于或等于9时,则跳转到NUM

ADDDL,7;将DL的值与7进行相加后,再送入DL中

NUM:

ADDDL,30H;将DL的值与30H进行相加后,再送入DL中

MOVAH,02H;将02H存入AH

INT21H;调用DOS21中断

MOVDL,0DH;结合“MOVAH,02H”就是说输出0DH

INT21H;调用中断指令

MOVDL,0AH;结合“MOVAH,02H”就是说输出0AH

INT21H;调用DOS21中断

POPDX;将DX的内容推出栈段

RET;子程序在功能完成后返回调用程序继续执行

DISPENDP;子程序结束

CODEENDS;代码段结束

ENDSTART;程序结束

2、图8电路的实验代码

CODESEGMENT;段定义开始(CODE段)

ASSUMECS:

CODE;规定CODE为代码段

START:

MOVDX,283H;把控制寄存器地址放在DX寄存器中

MOVAL,36H;设置控制字00110110(计数器0,方式3,写两个字节,二进制计数)

OUTDX,AL;将AL的值送入DX端口

MOVAX,1000H;该语句是立即寻址方式,就是把1000H这个数赋给AX

MOVDX,280H;把计数器0地址放在DX寄存器中

OUTDX,AL;将AL的值送入DX端口

MOVAL,AH;将AX的高8位存入AL寄存器中

OUTDX,AL;将此时AL的值送入DX端口

MOVDX,283H;把端口地址放在DX寄存器中

MOVAL,76H;设置控制字01110110(计数器1,方式3,写两个字节,二进制计数)

OUTDX,AL;将AL的值送入DX端口

MOVAX,1000H;把1000H赋给AX

MOVDX,281H;把端口地址放在DX寄存器中

OUTDX,AL;将AX的低8位送入DX端口

MOVAL,AH;将AX的高8位存入AL寄存器中

OUTDX,AL;将AL的值送入DX端口

MOVAH,4CH;将4CH存入AH

INT21H;调用DOS21中断

CODEENDS;代码段结束

ENDSTART;程序结束

五、实验总结

通过实验,学会8253芯片和微机接口原理和方法,掌握8253定时器/计数器的基本工作原理、工作方式和编程原理,熟悉汇编代码的编写。

实验中,连接电路,利用代码控制实验电路,深对课本理论的理解。

实验四 七段数码管

1、实验目的

掌握数码管显示数字的原理

2、实验内容

1. 静态显示:

按图 10(A)连接好电路,将8255的A口PA0-PA6分别与七段数码管的断码驱动输入端A-G相连,位码驱动输入端S1接+5V(选中),S0、DP接地(关闭)。

编程从键盘输入一位十进制数字(0-9),在七段数码管上显示出来。

2.动态显示:

按图10(B)连接好电路,七段数码管段码连接不变,位码驱动输入端S1,S0接8255C口的PC1,PC0。

编程在两个数码管上显示“56”

3、流程图:

3、源程序

静态显示:

 

DATA  SEGMENT

IOPORT  EQU 0C800H-0280H 

IO8255A  EQU IOPORT+288H

IO8255B  EQU IOPORT+28BH 

LED     DB    3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH 

MESG1 DB 0DH,0AH,'INPUT A NUM (0--9H):

',0DH,0AH,'$' 

DATA ENDS 

CODE  SEGMENT  

ASSUME CS:

CODE,DS:

DATA 

START:

  MOV AX,DATA 

MOV DS,AX 

MOV DX,IO8255B ;使8255的A口为输出方式 

MOV AL,80H;10000000B,控制字PA以方式0输出  

OUT DX,AL 

ZBY:

 MOV DX,OFFSET MESG1    显示提示信息 

 MOV AH,09H  INT 21H 

 MOV AH,01 ;从键盘接收字符  INT 21H 

 CMP AL,'0';是否小于0 

 JL  EXIT ;如若小于0,则跳转到EXIT退出程序  

CMP AL,'9' ;是否大于9 

 JG  EXIT;如若大于9,则跳转到EXIT退出程序 

 SUB AL,30H ;将所得字符的ASCII码减30H,数字键ASCII码同数值转换  

MOV BX,OFFSET LED;BX为数码表的起始地址  

XLAT;求出相应的段码  

MOV DX,IO8255A ;从8255的A口输出  

OUT DX,AL 

JMP ZBY ;转ZBY 

EXIT:

   MOV AH,4CH;返回DOS 

INT 21H 

CODE ENDS 

END START 

动态显示:

 

DATA  SEGMENT 

IOPORT  EQU 0C800H-0280H 

IO8255A  EQU IOPORT+28AH 

IO8255B  EQU IOPORT+28BH 

IO8255C  EQU IOPORT+288H 

LED      DB   3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH 段码 

BUFFER1  DB   5,6 ;存放要显示的个位和十位 

BZ   DW ;位码 

DATA ENDS 

CODE  SEGMENT  

ASSUME CS:

CODE,DS:

DATA 

START:

 MOV AX,DATA 

 MOV DS,AX 

 MOV DX,IO8255B;将8255设为A口输出 

 MOV AL,80H ;10000000B,控制字PA以方式0输出  

OUT DX,AL 

MOV DI,OFFSET BUFFER1;设DI为显示缓冲区 

LOOP2:

 MOV BH,02 

ZBY:

    MOV BYTE PTR BZ,BH  

PUSH DI  

DEC DI  

ADD DI, BZ 

 MOV BL,[DI];BL为要显示的数  

POP DI 

        MOV AL,0         

MOV DX,IO8255A         

OUT DX,AL  

MOV CX,3000 

DELAY:

 LOOP DELAY                   延时 

 MOV BH,BYTE PTR BZ  

SHR BH,1  

JNZ ZBY  

MOV DX,0FFH  

MOV  AH,06  

INT  21H 

 JE  LOOP2 ;有键按下则退出  

MOV DX,IO8255A 

 MOV AL,0 ;关掉数码管显示  OUT DX,AL 

 MOV AH,4CH;返回  

INT 21H 

CODE ENDS 

END START

四、运行结果:

 

 静态显示:

在键盘上输入一个0-9的任意数字,会显示在数码管上

动态显示:

在程序中写入6,5,读取顺序是第一位是个位,第二位是十位,数码管上显示56.

5、实验总结

静态显示是从键盘获取一个数值,然后通过程序比较得出键盘输入的数字量,由PA端口输出到数码管上。

而动态显示是将两个数字写入程序中,由程序读取数字然后按位输出到数码管上显示。

原理说得简单,但是程序本身个人感觉还是相当复杂的,尤其动态显示,程序如何读取已输入的数字,以及读取数字的顺序都会影响到数码管的显示。

 

静态显示过程中,我们碰到数码管一直显示8的状态,这并不是预期的效果。

后来发现,由于在程序中用符号定义伪指令EQU将所要用到的算口地址用“IO8255A”定义,但在写程序的过程中又写进去了十六进制实际地址,导致出现问题,经过很长时间的调试方才解决。

实验五竞赛抢答器

一、实验目的  

1、了解微机化竞赛抢答器的基本原理。

 

2、进一步学习使用并行接口。

二、实验内容 

图12为竞赛抢答器(模拟)的原理图,逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。

在七段数码管上将其组号(0~7)显示出来,并使微机扬声器响一下

电路图:

流程图:

3、源程序

DATA  SEGMENT 

IO8255A        EQU 28AH 

IO8255B        EQU 28BH 

IO8255C        EQU 288H 

LED      DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;数码表 

DATA ENDS 

CODE  SEGMENT 

ASSUME CS:

CODE,DS:

DATA 

START:

MOV AX,DATA     

MOV DS,AX 

MOV DX,IO8255B        ;设8255为A口输出,C口输入     

MOV AX,89H     OUT DX,AL 

MOV BX,OFFSET LED  ;使BX指向段码管首址 SSS:

    

MOV DX,IO8255A 

IN  AL,DX          ;从8255的C口输入数据     

OR  AL,AL          ;比较是否为0 

JE  SSS            ;若为0,则表明无键按下,转SSS     

MOV CL,0FFH        ;CL作计数器,初值为-1 

RR:

   SHR AL,1 

INC CL     

JNC RR     

MOV AL,CL     

XLAT 

MOV DX,IO8255C     

OUT DX,AL 

MOV DL,7           ;响铃 ASCII码为07     

MOV AH,2     INT 21H 

WAI:

  MOV AH,1     

INT 21H 

CMP AL,20H         ;是否为空格     

JNE EEE            ;不是,转EEE     

MOV AL,0           ;是,关灭灯     

MOV DX,IO8255C     

OUT DX,AL     

JMP SSS 

EEE:

    MOV AH,4CH         ;返回     

INT 21H 

CODE  ENDS     

END START

4、实验现象

逻辑开关K0~K7代表竞赛抢答按钮0~7号,当某个逻辑电平开关置“1”时,相当某组抢答按钮按下。

在七段数码管上将其组号(0~7)显示出来,并使微机扬声器响一下。

五、实验总结 

   通过此次实验,首先我懂得了有关竞赛抢答器的知识,我们了解到,即使书本上的知识掌握得再好,在将它付诸实践时,还是会碰到各种各样的问题。

这次课程设计就是一次对自己所学知识的总结与综合运用,使我们对这微机原理这门课程有了更深的了解同时也明白了实验不单是搞懂软件方面内容,也要注重硬件的配合及原理。

这次实验虽然程序不是自己编写,但我至少弄懂了大部分,收获良多。

实验六步进电机控制实验

1、实验目的

(1)了解步进电机控制的基本原理

(2)掌握控制步进电机转动的编程方法

2、实验内容

1、按图14连接线路,利用8255输出脉冲序列,开关K0-K6控制步进电机转速,K7控制步进电机转向。

8255 CS接288H-28FH。

PA0-PA3接BA-BD;PC0-PC7接KO-K7。

 

2、 编程:

当K0-K7中的某一个开关为“1”是步进电机启动。

K7向上拨电机正传,向下拨电机反转。

实验原理图:

流程图:

3、源程序

DATA SEGMENT   

P55A    EQU     288H ; 定义P55A为8255A的端口地址  

P55C    EQU     28AH ; 定义P55C为8255C的端口地址                           

P55CTL  EQU     28BH  ; 定义P55CTL为8255控制端口地址 

BUF     DB      0 ;定义一个字节数据(用来存放开关状态) 

MES     DB 'K0-K6 ARE SPEED CONTYOL',0AH,0DH 

DB 'K6 IS THE LOWEST SPEED ',0AH,0DH              

DB 'K0 IS THE HIGHEST SPEED',0AH,0DH       

DB 'K7 IS THE DIRECTION CONTROL',0AH,0DH,'$'  在屏幕上输出一段符号, 

DATA ENDS;显示程序处于执行状态。

             

CODE SEGMENT 

            ASSUME CS:

CODE,DS:

DATA 

START:

MOV     AX,CS                      

MOV     DS,AX                      

MOV     AX,DATA

MOV    DS,AX;程序的初始化,给DS,CS赋值                      

MOV     DX,OFFSET MES                      

MOV     AH,09 

INT     21H;调用DOS功能,显示字符串                      

MOV     DX,P55CTL                      

MOV     AL,90H 

OUT     DX,AL;8255 A 初始化 

MOV     BUF,33H;BUF初始化为00110011B 

OUT1:

         MOV     AL,BUF;将BUF值置入AL寄存器并输出 

                    MOV     DX,P55C                      

OUT     DX,AL                      

PUSH    DX                      

MOV     AH,06H                      

MOV    DL,0FFH 

INT     21H;判断是否有键按下                      

POP     DX       

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 其它

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

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