微机原理实验报告

时间:2024.4.21

实验一       显示程序实验

一、实验目的

1. 掌握在PC机上以十六进制形式显示数据的方法;

2. 掌握部分DOS功能调用使用方法;

3. 熟悉Tddebug调试环境和Turbo Debugger的使用。

二、实验所用设备

1. PC微机一台。

三、实验内容

一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用(INT 21H)。

(1) 显示单个字符输出

入口:AH=02H

调用参数:DL=输出字符

(2) 显示字符串

入口:AH=09H

调用参数:DS:DX=串地址,’$’为结束字符

(3) 键盘输入并回显

入口:AH=01H

返回参数:AL=输出字符

(4) 返回DOS系统

入口:AH=4CH

调用参数:AL=返回码


四、实验步骤

1.   运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;

2.   使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.   使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.   使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;

5.   更改数据区中的数据,考察程序的正确性。

 

图1-1 显示程序实验流程图

五、参考程序清单

六、实验报告内容及要求

写出程序调试过程及运行情况。

1.      将参考程序写入轻松汇编编辑框。

2.       点击保存,然后编译,结果框显示编译成功。

3.       点击生成,显示链接成功。

4.       点击运行,显示如图:

实验二       数据传送实验

一、实验目的

1. 熟悉Tddebug调试环境和Turbo Debugger的使用;

2. 掌握与数据有关的不同寻址方式。

二、实验所用设备

1. PC微机一台。

三、实验内容

将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。

参考实验程序:

DDATA       SEGMENT ;定义源数据段

MSR             DB       "HELLO,WORLD!$"

LEN             EQU     $- MSR

DDATA       ENDS

EXDA          SEGMENT ;定义附加数据段

MSD             DB        LEN DUP(?)

EXDA          ENDS

MYSTACK SEGMENT STACK ;定义堆栈段

DW      20 DUP(?)

MYSTACK ENDS

CODE          SEGMENT ;定义代码段

ASSUME CS:CODE, DS:DDATA, ES:EXDA

START:        MOV    AX, DDATA

MOV    DS, AX ;装载数据段寄存器

MOV    AX, EXDA

MOV    ES,AX ;装载附加数据段寄存器

MOV    SI, OFFSET MSR ;设置SI

MOV    DI, OFFSET MSD ;设置DI

MOV    CX, LEN

NEXT:        MOV    AL, [SI] ;开始传输数据

MOV    ES:[DI], AL

INC      SI

INC      DI

DEC     CX

JNZ      NEXT

PUSH   ES

POP      DS ;将附加段寄存器的段值赋给数据段寄存器

MOV    DX, OFFSET MSD

MOV    AH, 9

INT      21H

MOV    AX, 4C00H ;利用DOS功能调用返回DOS状态

INT      21H

CODE         ENDS

END            START

将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:

MOV    BX, 0

MOV    CX, LEN

NEXT:        MOV    AL, MSR[BX]

MOV    ES:MSD[BX], AL

INC      BX

LOOP NEXT

四、实验步骤

1.        运行Tddebug软件,选择Edit菜单编写实验程序;

2.        使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.        使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.        使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;

5.        更改数据区中的数据,考察程序的正确性。

五、实验报告内容及要求

写出程序调试过程及运行情况。

1将参考程序写入轻松汇编编辑框。

2点击保存,然后编译,结果框显示编译成功。

3点击生成,显示链接成功。

4点击运行,显示如图:

实验三       数码转换程序实验

一、实验目的

掌握不同进制数及编码相互转换的程序设计方法。  

二、实验所用设备

PC微机一台。

三、实验内容

计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。

图3-1 计算机与外设间的数码转换关系

1.将ASCII码表示的十进制数转换为二进制数

程序如下:

DATA  SEGMENT               ;定义源数据段

         MSR  DB        "00012"

         LEN  EQU       $-MSR

        DATA  ENDS

        CODE  SEGMENT               ;定义代码段

              ASSUME    CS:CODE, DS:DATA

      START:  MOV       AX, DATA

              MOV       DS,AX

              MOV       SI, OFFSET MSR

              MOV       CX,LEN-1

              MOV       AL, DS:[SI] ;开始传输数据

              MOV       AH,0

              SUB       AX,30H

      NEXT1:  MOV       BX, 0AH

              MUL       BX          ; 将AX中的数乘以10,所得的结果高位保存到DX中,低位保存到AX中

              INC       SI

              MOV       DL,DS:[SI]

              MOV       DH,0

              SUB       DX,30H      ;将数字对应的ASCII码转换成响应的二进制数

              ADD       AX,DX

              DEC       CX

              JNZ       NEXT1

              MOV       CL,16       ; CL用作循环NEXT2的计数器,因为5位十进制数转化成二进制只有十六位,所以循环次数为16次

              MOV       BX,AX

      NEXT2:  ROL       BX,1

              MOV       DL,BL

              AND       DL,01H

              ADD       DL,30H      ;把BX中的数以二进制形式输出

              MOV       AH,2H

              INT       21H

              DEC       CL

              JNZ       NEXT2

              MOV       AX,4C00H

              INT       21H

        CODE  ENDS

              END       START

写出程序调试过程及运行情况。

1将参考程序写入轻松汇编编辑框。

2点击保存,然后编译,结果框显示编译成功。

3点击生成,显示链接成功。

4点击运行,显示如图:

5改变程序中待转换的十进制数,调试运行后观察实验结果,可看到相应的二进制转换结果。

2.将十进制数的ASCII码转换为BCD

本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASCII码,则输出“FF”。提示:一字节ASCII码取其低四位即变为BCD码。

程序如下:

     DATA  SEGMENT               ;定义源数据段

      STRING  DB        'Input:','$'

         MSR  DB        6,?,6 DUP(?)            ;数据段MSR用于接收从键盘输入的五位十进制数

        DATA  ENDS

        CODE  SEGMENT               ;定义代码段

              ASSUME    CS:CODE, DS:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX       ; 装载数据段寄存器

              LEA       DX, STRING

              MOV       AH, 09H

              INT       21H

              MOV       DX, OFFSET MSR

              MOV       AH,0AH

              INT       21H

              MOV       CL,[MSR+1]  ;CL中保存实际输入的数据的位数,用于控制循环执行的次数

              MOV       SI,0002H

              MOV       BX, OFFSET MSR

      NEXT1:  MOV       AL,[BX+SI]  ;开始传输数据

              CMP       AL,40H

              JNC       LK1         ;大于等于40H则表明输入的不是数字符,跳到LK1输入F

              CLC

              CMP       AL,30

              JC        LK1         ;小于30H则表明输入的不是数字字符,到LK1输出字符F

              SUB       AL,30H

              MOV       CH,0

              PUSH      CX

              MOV       CL,4

              MOV       DH,AL

              SHL       DH,CL

      NEXT2:  ROL       DH,1

              MOV       DL,DH

              AND       DL,01H

              ADD       DL,30H

              MOV       AH,02H

              INT       21H

              DEC       CL

              JNZ       NEXT2

              POP       CX

              INC       SI

              DEC       CL

              JNZ       NEXT1

        LK1:  JZ        LK2

              MOV       DL,46H      ;输出字符F

              MOV       AH,02H

              INT       21H

              INC       SI

              DEC       CL

              JNZ       NEXT1

        LK2:  MOV       AX,4C00H

              INT       21H

        CODE  ENDS

              END       START

写出程序调试过程及运行情况。

1将参考程序写入轻松汇编编辑框。

2点击保存,然后编译,结果框显示编译成功。

3点击生成,显示链接成功。

4点击运行,显示如图:

3.将十六进制数的ASCII码转换为十进制数

十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数可表示为:

ND=D4×104+D3×103+D2×102+D1×10+D0

因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。

程序如下:

        DATA  SEGMENT               ;定义源数据段

      STRING  DB        'Input:','$'

         MSR  DW        000CH

         MDR  DB        5 DUP(?),'$'

        DATA  ENDS

        CODE  SEGMENT               ;定义代码段

              ASSUME    CS:CODE, DS:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       BX,OFFSET MDR

              MOV       SI, 5

              MOV       AX,[MSR]    ;将数据000CH保存到AX当中

      NEXT1:  DEC       SI

              MOV       DX,0

              MOV       CX,0AH

              DIV       CX

              ADD       DL,30H

              MOV       [BX+SI],DL

              CMP       AX,0

              JNE       NEXT1

              CMP       SI,0        ;判断SI是否为零,为零则表明五位十进制数的每一位都不为零,否则应给前面为零的位上补上零

              JE        NEXT3

      NEXT2:  DEC       SI

              MOV       AL,30H

              MOV       [BX+SI],AL

              CMP       SI,0

              JNE       NEXT2

      NEXT3:  MOV       DX,OFFSET MDR

              MOV       AH,09H

              INT       21H

              MOV       AX,4C00H

              INT       21H

        CODE  ENDS

              END       START

写出程序调试过程及运行情况。

1将参考程序写入轻松汇编编辑框。

2点击保存,然后编译,结果框显示编译成功。

3点击生成,显示链接成功。

4点击运行,显示如图:


4BCD码转换为二进制码

本实验要求将四个二位十进制数的BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。

程序如下:

DATA  SEGMENT               ;

         MSR  DB        01H,02H,03H,04H,05H,06H,07H,08H,4 DUP(?)        ;本程序使用非压缩型BCD码

        DATA  ENDS

        CODE  SEGMENT               ;定义代码段

              ASSUME    CS:CODE, DS:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       BX, OFFSET MSR

              MOV       DI,8

              MOV       CX,4

              MOV       DH,0AH

      NEXT1:  MOV       SI,1

              MOV       AL,[BX+SI]

              MUL       DH

              DEC       SI

              ADD       AL,[BX+SI]

              MOV       [BX+DI],AL

              PUSH      CX

              MOV       CH,AL

              MOV       CL,8

      NEXT2:  ROL       CH,1

              MOV       DL,CH

              AND       DL,01H

              ADD       DL,30H

              MOV       AH,02H

              INT       21H

              DEC       CL

              JNZ       NEXT2

              POP       CX

              MOV       DL,42H      ;输出字母B,表示输出的是二进制数

              MOV       AH,02H

              INT       21H

              MOV       AH,2        ;回车换行

              MOV       DL,13

              INT       21H

              MOV       AH,2

              MOV       DL,10

              INT       21H

              ADD       BX,2

              INC       DI

              DEC       CX

              JNZ       NEXT1

              MOV       AX,4C00H

              INT       21H

        CODE  ENDS

              END       START

写出程序调试过程及运行情况。

1将参考程序写入轻松汇编编辑框。

2点击保存,然后编译,结果框显示编译成功。

3点击生成,显示链接成功。

4点击运行,显示如图:

实验四       运算类程序实验

一、实验目的

1. 掌握运算类指令编程及调试方法;

2. 掌握运算类指令对各状态标志位的影响及测试方法。

二、实验所用设备

1. PC微机一台。

三、实验内容

80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表4-1所示的数据类型进行算术运算。

程序如下:

DATA  SEGMENT

           X  DD        001565A0H

           Y  DD        0021B79EH

           Z  DB        4 DUP(?)

        DATA  ENDS

        CODE  SEGMENT

              ASSUME    CS:CODE,DS:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       BX,OFFSET X

              MOV       SI,OFFSET Y

              MOV       DI,OFFSET Z

              MOV       AX,WORD PTR [BX]        ;取X的低十六位传送到AX当中

              CLC

              ADD       AX,WORD PTR [SI]        ;将Y的低十六位数据与AX相加,结果保存到AX

              MOV       [DI],AX     ;将相加的结果保存到Z

              MOV       AX,WORD PTR [BX+2]      ;取X的高位数据

              ADC       AX,WORD PTR [SI+2]      ;将Y的高位数据与X的高位数据相加,并加上状态标志CF的值(若有进位则CF为一)

              MOV       [DI+2],AX

              MOV       CL,4

              MOV       BX,3

      NEXT1:  MOV       AL,[BX+DI]  ;取转换好德数据的9位数据(从高位到低位每次取8位,总共取四次)

              SHR       AL,CL       ;将高四位转移到低四位

              AND       AL,0FH      ;将高四位清零,保留第四位数据

              CMP       AL,0AH      ;与0AH比较,大于等于则表示应输出字母A~F,所以转换成相应的ASCII码时应多加7

              JB        LK1

              ADD       AL,07H

        LK1:  ADD       AL,30H      ;将二进制数转换成响应的ASCII码

              MOV       DL,AL       ;将要输入的字符的ASCII码保存到DL中并调用2号功能输出

              MOV       AH,02H

              INT       21H

              MOV       AL,[BX+DI]  ;因为二进制数转换成十六进制数时,每四位二进制数转换成一位十六进制数,所以一个字节的数字需要转换两次,这次是转低四位

              AND       AL,0FH      ;将高四位清零,保存低四位的数据

              CMP       AL,0AH      ;与0AH比较,大于等于则表示输出字母A~F,转换成相应的ASCII码应多加7

              JB        LK2

              ADD       AL,07H

        LK2:  ADD       AL,30H      ; 将二进制数据转换成响应的ASCII码

              MOV       DL,AL       ;将要输出的字符的ASCII码保存到DL中并调用2号功能输出

              MOV       AH,02H

              INT       21H

              DEC       BX          ;BX既保存数据地址的偏移量,又控制循环体的循环次数,BX减1,既指向了下一个数据,又使循环次数减1

              CMP       BX,0

              JGE       NEXT1       ;BX小于零时退出循环

              MOV       AX,4C00H    ;退出程序

              INT       21H

        CODE  ENDS

              END       START

实验五       分支程序设计实验

一、实验目的

1. 掌握分支程序的设计方法。

二、实验所用设备

1. PC微机一台。

三、实验内容

程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图5-1所示。本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。

图5-1 分支结构示意图

实验可以使用BH,BL作为暂存现行的最大值和最小值,且在程序的初始,将BH和BL初始化为首字节的内容,然后进入循环操作。在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH,BL进行比较,若取出的字节内容比BH的内容大或比BL中的内容小,则修改之。当循环结束操作时,将BH,BL分别送屏幕显示。参考实验流程如图5-2所示。

四、实验步骤

1.        运行Tddebug软件,选择Edit菜单编写实验程序,提供8字节的数据:0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H; 

2.        使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.        使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.        更改数据区中的数据,考察程序的正确性。

五、实验报告内容及要求

根据实验要求编写程序并调试,写出程序调试过程及运行情况。

程序如下:

DATA  SEGMENT               ;定义数据段

          D1  DB        0D9H,07H,8BH,0C5H,0EBH,04H,9DH,0F9H

          C1  EQU       $-D1        ;D1的数据长度

        DATA  ENDS

        CODE  SEGMENT               ;定义代码段

              ASSUME    CS:CODE,DS:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       CX,C1-1     ;设置循环次数

              MOV       SI,0        ;初始化SI

              MOV       BL,D1[SI]   ;将D1中的数据逐个移到BL,BH

              MOV       BH,D1[SI]

         L1:  INC       SI          ;SI增加1转到下一个数据

              MOV       AL,D1[SI]   ;将此数据移到AL

              CMP       AL,BL       ;比较AL和BL

              JNB       L2          ;AL不小于BL,则跳转到L2

              MOV       BL,AL       ;小于等于则把AL和BL互换

         L2:  CMP       AL,BH       ;比较AL和BH

              JNA       L3          ;不大于则跳转到L3

              MOV       BH,AL       ;大于等于把AL,BH互换

         L3:  LOOP      L1          ;循环L1直至CX为零

              CALL      DIS         ;调用显示子程序

              MOV       DL,0AH      ;换行

              MOV       AH,2        ;显示BL

              INT       21H

              MOV       DL,0DH      ;回车

              MOV       AH,2

              INT       21H

              MOV       BL,BH

              CALL      DIS         ;显示BH

              MOV       AH,4CH

              INT       21H

         DIS  PROC                  ;显示子程序

              MOV       CH,2        ; 设置循环次数

              MOV       CL,4        ;设置移动位数

       NEXT:  ROL       BL,CL       ;将BL最高位移到最低位

              MOV       DL,BL

              AND       DL,0FH      ;取DL最低位

              ADD       DL,30H      ;转换为对应的ASCII码

              CMP       DL,39H      ;与39H比较

              JLE       PRINT       ;小于等于则跳转到PRINT

              ADD       DL,7        ;大于则加上07H

      PRINT:  MOV       AH,2        ;显示ASCII码对应的字符

              INT       21H

              DEC       CH

              JNZ       NEXT

              RET

         DIS  ENDP

        CODE  ENDS

              END       START

实验六       循环程序设计实验

一、实验目的

1. 掌握循环程序的设计方法。

二、实验所用设备

1. PC微机一台。

三、实验内容

本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得到区内所包含负数的个数。循环程序的结构示意如图6-1所示。

图6-1循环结构示意图

四、实验步骤

1.        运行Tddebug软件,选择Edit菜单编写实验程序,提供10字节的数据:12H,88H,82H,89H,33H,90H,01H,10H,0BDH,01H; 

2.        使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;

3.        使用Rmrun菜单中的Run,运行程序,观察运行结果;

4.        更改数据区中的数据,考察程序的正确性。

五、实验报告内容及要求

根据实验要求编写程序并调试,写出程序调试过程及运行情况。

程序如下:

;实验六

        DATA  SEGMENT               ;定义源数据段

           M  DB        20,59,61,21,89,103,2,124,125,245,204,214,198,157,120,209,15,137,206,113

           N  DB        8 DUP(?)

        DATA  ENDS

        CODE  SEGMENT

              ASSUME    CS:CODE,DS:DATA

      START:  MOV       AX,DATA

              MOV       DS,AX

              MOV       BX,OFFSET M

              MOV       DI,OFFSET N

              MOV       CL,0

      NEXT1:  MOV       AL,[BX]

              CMP       AL,80H

              JB        LK

              MOV       [DI],AL

              INC       DI

              INC       CL

         LK:  INC       BX

              CMP       BX,20

              JB        NEXT1

              MOV       CH,CL

              MOV       CL,8

      NEXT2:  ROL       CH,1

              MOV       DL,CH

              AND       DL,01H

              ADD       DL,30H

              MOV       AH,02H

              INT       21H

              DEC       CL

              JNZ       NEXT2

              MOV       DL,42H

              MOV       AH,02H

              INT       21H

              MOV       AX,4C00H

              INT       21H

        CODE  ENDS

              END       START

实验七              8259中断控制器应用实验

一、实验目的

1. 学习可编程中断控制器8259的工作原理。

2. 掌握可编程中断控制器8259的应用编程方法。

二、实验内容

1.单中断实验。利用系统总线上中断请求信号INTR,设计一个单中断应用。使用单次脉冲模拟中断产生。编写中断处理程序,在显示器屏幕上显示一个字符。

2.扩展中断源查询方式应用实验。利用实验平台上8259控制器对系统总线上的中断线INTR进行扩展。编写程序对8259控制器的IR0和IRI中断请求进行处理。

三、实验所用仪表及设备

1. PC机一台。

2. TD-PIT++实验系统一套。

四、实验原理与步骤

1. 实验原理

(1)PC微机系统中的8259介绍

中断控制器8259 是Intel 公司专为控制优先级中断而设计开发的芯片。它将中断源优先级排队、辨别中断源以及提供中断矢量的电路集于一片中,因此无需附加任何电路,只需对8259 进行编程,就可以管理8 级中断,并选择优先模式和中断请求方式,即中断结构可以由用户编程来设定。同时,在不需增加其他电路的情况下,通过多片8259 的级连,能构成多达64 级的矢量中断系统。它的管理功能包括:1)记录各级中断源请求,2)判别优先级,确定是否响应和响应哪一级中断,3)响应中断时,向CPU 传送中断类型号。

8259A的命令字共有7个,可分为两类。一类是初始化命令字,另一类是操作命令字。8259 的编程就是根据应用需要将初始化命令字ICW1-ICW4 和操作命令字OCW1- OCW3 分别写入初始化命令寄存器组和操作命令寄存器组。ICW1-ICW4各命令字格式如表2-1所示,OCW1-OCW3各命令字格式如表2-2所示,其中OCW1用于设置中断屏蔽操作字,OCW2用于设置优先级循环方式和结束方式的操作命令字,OCW3用于设置和撤消特殊屏蔽方式,设置中断查询方式以及设置对8259A内部寄存器的读出命令。

2. 实验步骤

(1)单中断应用实验

实验说明:

实验平台上系统总线单元的INTR中断请求信号已经是对应到PC机内部的某一级中断。 INTR产生一个上升沿的中断请求, PC机内部相应的那级中断就会得到响应。所以,使用INTR中断请求信号,就相当在使用PC机内部相应的那一级中断。

本实验要求使用总线上INTR中断请求线完成一次单中断应用实验。用单次脉冲上升沿模拟中断源,中断处理程序完成在屏幕上的显示字符“9” 。

图2-1 8259单中断实验参考接线图

实验步骤如下:

①实验接线图如图2-1所示,按图接线。

②运行Tdpit集成操作软件,调用程序代码(T8259-1.ASM),填写程序代码中的空缺处,编译、链接。

③使用运行命令运行程序,重复按单次脉冲开关KK1+,显示屏会显示字符“9”,说明响应了中断。

实验代码如下:

INTR_IVADD   EQU   01C8H          ;INTR对应的中断矢量地址

INTR_OCW1   EQU   0A1H ;INTR对应PC机内部8259的OCW1地址

INTR_OCW2   EQU   0A0H ;INTR对应PC机内部8259的OCW2地址

INTR_IM      EQU   0FBH           ;INTR对应的中断屏蔽字

                             

STACK1 SEGMENT STACK

        DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

MES      DB   'Press any key to exit!',0AH,0DH,0AH,0DH,'$'

CS_BAK   DW  ?       ;保存INTR原中断处理程序入口段地址的变量

IP_BAK   DW  ?      ;保存INTR原中断处理程序入口偏移地址的变量

IM_BAK   DB  ?                   ;保存INTR原中断屏蔽字的变量

DATA ENDS

CODE SEGMENT

        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

       MOV DS,AX

       MOV DX,OFFSET MES          ;显示退出提示

          MOV AH,09H        

          INT 21H  

       CLI

       MOV AX,0000H               ;替换INTR的中断矢量

       MOV ES,AX

       MOV DI,INTR_IVADD         

       MOV AX,ES:[DI]

       MOV IP_BAK,AX     ;保存INTR原中断处理程序入口偏移地址    

       MOV AX,OFFSET MYISR

       MOV ES:[DI],AX        ;设置当前中断处理程序入口偏移地址

       ADD DI,2

       MOV AX,ES:[DI]

       MOV CS_BAK,AX       ;保存INTR原中断处理程序入口段地址

       MOV AX,SEG MYISR

       MOV ES:[DI],AX           ;设置当前中断处理程序入口段地址

       MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR屏蔽位

       IN  AL,DX

       MOV IM_BAK,AL              ;保存INTR原中断屏蔽字

       AND AL,INTR_IM

       OUT DX,AL

       STI

WAIT1: MOV AH,1                   ;判断是否有按键按下

       INT 16H

       JZ  WAIT1                 ;无按键则跳回继续等待,有则退出

     

QUIT:  CLI

       MOV AX,0000H               ;恢复INTR原中断矢量

       MOV ES,AX

       MOV DI,INTR_IVADD 

       MOV AX,IP_BAK     ;恢复INTR原中断处理程序入口偏移地址

       MOV ES:[DI],AX

       ADD DI,2

       MOV AX,CS_BAK       ;恢复INTR原中断处理程序入口段地址

       MOV ES:[DI],AX

       MOV DX,INTR_OCW1   ;恢复INTR原中断屏蔽寄存器的屏蔽字

       MOV AL,IM_BAK

       OUT DX,AL

       STI

       MOV AX,4C00H               ;返回到DOS

       INT 21H

MYISR PROC NEAR                   ;中断处理程序MYISR

       PUSH AX

       MOV AL,39H

       MOV AH,0EH

       INT 10H

       MOV AL,20H

       INT 10H

OVER:  MOV DX,INTR_OCW2    ;向PC机内部8259发送中断结束命令

       MOV AL,20H

       OUT DX,AL

       MOV AL,20H

       OUT 20H,AL       

       POP AX 

       IRET      

MYISR ENDP

      

CODE ENDS

     END START

(代码结束)

(3)扩展中断应用实验

实验说明:

利用实验单元中的8259控制器,可以对总线上的INTR进行中断源的扩充。将8259的INT连接到INTR,8259的8路中断请求线IR0~IR7就成了单一INTR中断请求线的扩充。这8路中断源共用INTR的中断矢量,共用INTR的中断服务程序。在INTR的中断服务程序中通过对8259的OCW3的查询,以确定是IR0~IR7中哪个产生中断,然后转到相应的服务线程进行处理。 

本实验要求实现8259控制器IR0、IR1两路中断都可以通过INTR向PC发起中断请求。用KK1+和KK2+模拟两个中断源,在IR0对应的服务程序中显示字符“0”,在IR1对应的服务程序中显示字符“1”。

图2-3 8259扩充中断源实验参考接线图

实验步骤如下:

①实验接线图如图2-3所示,按图接线。

②运行Tdpit集成操作软件,调用程序代码(T8259-2.ASM),填写程序代码中的空缺处,编译、链接。

③使用运行命令运行程序,按动KK1+、KK2+按键,观察中断是否产生。

实验代码如下:

INTR_IVADD   EQU   01C8H  ;INTR对应的中断矢量地址

INTR_OCW1   EQU  0A1H  ;INTR对应PC机内部8259的OCW1地址

INTR_OCW2   EQU  0A0H  ;INTR对应PC机内部8259的OCW2地址

INTR_IM      EQU   0FBH           ;INTR对应的中断屏蔽字

IOY0         EQU   3000H           ;片选IOY0对应的端口始地址

MY8259_ICW1  EQU   IOY0+00H  ;实验系统中8259的ICW1端口地址

MY8259_ICW2  EQU   IOY0+04H  ;实验系统中8259的ICW2端口地址

MY8259_ICW3  EQU   IOY0+04H  ;实验系统中8259的ICW3端口地址

MY8259_ICW4  EQU   IOY0+04H  ;实验系统中8259的ICW4端口地址

MY8259_OCW1  EQU  IOY0+04H ;实验系统中8259的OCW1端口地址

MY8259_OCW2  EQU   IOY0+00H ;实验系统中8259的OCW2端口地址

MY8259_OCW3  EQU   IOY0+00H ;实验系统中8259的OCW3端口地址

STACK1 SEGMENT STACK

        DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

MES      DB   'Press any key to exit!',0AH,0DH,0AH,0DH,'$'

CS_BAK   DW  ?       ;保存INTR原中断处理程序入口段地址的变量

IP_BAK   DW  ?      ;保存INTR原中断处理程序入口偏移地址的变量

IM_BAK   DB  ?                   ;保存INTR原中断屏蔽字的变量

DATA ENDS

CODE SEGMENT

        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

       MOV DS,AX

       MOV DX,OFFSET MES          ;显示退出提示

          MOV AH,09H        

          INT 21H  

       CLI

       MOV AX,0000H               ;替换INTR的中断矢量

       MOV ES,AX

       MOV DI,INTR_IVADD          

       MOV AX,ES:[DI]

       MOV IP_BAK,AX     ;保存INTR原中断处理程序入口偏移地址

       MOV AX,OFFSET MYISR

       MOV ES:[DI],AX        ;设置当前中断处理程序入口偏移地址

       ADD DI,2

       MOV AX,ES:[DI]

       MOV CS_BAK,AX      ;保存INTR原中断处理程序入口段地址

       MOV AX,SEG MYISR

       MOV ES:[DI],AX           ;设置当前中断处理程序入口段地址

       MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR屏蔽位

       IN  AL,DX

       MOV IM_BAK,AL              ;保存INTR原中断屏蔽字

       AND AL,INTR_IM

       OUT DX,AL

       MOV DX,MY8259_ICW1       ;初始化实验系统中8259的ICW1

       MOV AL,13H            ;边沿触发、单片8259、需要ICW4

       OUT DX,AL

       MOV DX,MY8259_ICW2       ;初始化实验系统中8259的ICW2

       MOV AL, 08H          

       OUT DX,AL

       MOV DX,MY8259_ICW4       ;初始化实验系统中8259的ICW4

       MOV AL, 01H           ;非自动结束EOI

       OUT DX,AL

       MOV DX,MY8259_OCW3   ;向8259的OCW3发送读取IRR命令

       MOV AL,0AH

       OUT DX,AL

      

       MOV DX,MY8259_OCW1     ;初始化实验系统中8259的OCW1

       MOV AL,0FCH            ;打开IR0和IR1的屏蔽位

       OUT DX,AL

       STI

      

WAIT1: MOV AH,1                   ;判断是否有按键按下

       INT 16H

       JZ  WAIT1                ;无按键则跳回继续等待,有则退出

QUIT:  CLI

       MOV AX,0000H               ;恢复INTR原中断矢量

       MOV ES,AX

       MOV DI,INTR_IVADD 

       MOV AX,IP_BAK     ;恢复INTR原中断处理程序入口偏移地址

       MOV ES:[DI],AX

       ADD DI,2

       MOV AX,CS_BAK       ;恢复INTR原中断处理程序入口段地址

       MOV ES:[DI],AX

       MOV DX,INTR_OCW1   ;恢复INTR原中断屏蔽寄存器的屏蔽字

       MOV AL,IM_BAK

       OUT DX,AL

      

       STI

       MOV AX,4C00H               ;返回到DOS

       INT 21H

MYISR PROC NEAR                   ;中断处理程序MYISR

       PUSH AX

QUERY: MOV DX,MY8259_OCW3  ;向8259的OCW3发送读取IRR命令

       IN  AL,DX                  ;读出IRR寄存器值

        

       AND AL,20H

       CMP AL,01H

       JE  IR0ISR                 ;若为IR0请求,跳到IR0处理程序

       JNE IR1ISR                 ;若为IR1请求,跳到IR1处理程序

       JMP OVER

IR0ISR:MOV AL,30H                 ;IR0处理,显示字符串STR0

       MOV AH,0EH

       INT 10H

       MOV AL,20H

       INT 10H

       JMP OVER

IR1ISR:MOV AL,31H                 ;IR1处理,显示字符串STR1

       MOV AH,0EH

       INT 10H

       MOV AL,20H

       INT 10H

       JMP OVER

OVER:  MOV DX,INTR_OCW2    ;向PC机内部8259发送中断结束命令

       MOV AL,20H

       OUT DX,AL

       MOV AL,20H

       OUT 20H,AL

       POP AX

       IRET

      

MYISR ENDP

      

CODE ENDS

     END START

(代码结束)

五、思考题

1. 单中断与多中断有何不同?

  答:单中断只需一片8259A芯片,多中断需要多个芯片级联。

2. 如何改变中断优先级的顺序?

答:通过优先级自动循环方式,优先级特殊循环方式可以自行设定。

3. 可编程中断控制器8259A在协助CPU处理中断事务中起哪些作用?

答:8259A,用于管理8086的外部中断请求,可实现中断优先级判定,提供中断类型号,屏蔽中断输入等功能。

4.可屏蔽中断与8259A是什么关系?

  答:可屏蔽中断是由8259A实现的,芯片内部有中断屏蔽寄存器IMR,当中断请求寄存器IRR中记录的各级中断中有任何一级需要屏蔽时,只需将IMR相应位置1即可。

实验八              8255并口控制器应用实验

一、实验目的

1. 掌握 8255 的工作方式及应用编程。

2. 掌握 8255 典型应用电路的接法。

二、实验内容

1. 基本输入输出实验。编写程序,使 8255 的 A 口为输出, B 口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。

2.流水灯显示实验。编写程序,使 8255 的 A 口和 B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。

三、实验所用仪表及设备

1. PC机一台。

2. TD-PIT++实验系统一套。

四、实验原理与步骤

实验步骤

(1)基本输入输出实验

实验说明:

本实验使 8255的端口A作为输出口工作在方式0,端口 B 作为输入口工作在方式0。用一组开关信号接入端口B,端口A 输出线接至一组数据灯上,然后通过对8255 芯片编程来实现输入输出功能。

图3-2 8255基本输入输出实验参考接线图

实验步骤如下:

①实验接线图如图3-2所示,按图连接实验线路图。

②运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8255-1.ASM),填写程序代码中的空缺处,编译、链接。

③运行程序,改变拨动开关,同时观察LED 显示,验证程序功能。

实验代码如下:

IOY0         EQU   3000H           ;片选IOY0对应的端口始地址

MY8255_A     EQU   IOY0+00H*4     ;8255的A口地址

MY8255_B     EQU   IOY0+01H*4     ;8255的B口地址

MY8255_C     EQU   IOY0+02H*4     ;8255的C口地址

MY8255_MODE  EQU   IOY0+03H*4     ;8255的控制寄存器地址

STACK1 SEGMENT STACK

        DW 256 DUP(?)

STACK1 ENDS

CODE SEGMENT

        ASSUME CS:CODE

START: MOV DX,MY8255_MODE         ;初始化8255工作方式

       MOV AL, 82H          ;工作方式0,A口输出,B口输入

       OUT DX,AL

LOOP1: MOV DX,MY8255_B            ;读B口

       IN  AL,DX

       MOV DX,MY8255_A            ;写A口

       OUT DX,AL

       MOV AH,1                   ;判断是否有按键按下

       INT 16H

       JZ  LOOP1                 ;无按键则跳回继续循环,有则退出

QUIT:  MOV AX,4C00H               ;结束程序退出

       INT 21H

CODE ENDS

     END START

(代码结束)

(2)流水灯显示实验

实验说明:

使8255 的A 口和B 口均为输出,数据灯D7~D0 由左向右,每次仅亮一个灯,循环显示,D15~D8 与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。参考实验程序流程如图3-3所示。

             图3-3流水灯显示参考程序流程图

实验步骤如下:

①实验接线图如图3-4所示,按图连接实验线路图。

②运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8255-2.ASM),填写程序代码中的空缺处,编译、链接。

③运行程序,观察LED 灯的显示,验证程序功能。

④自己设计流水灯的流动模式,编写程序并实现。


图3-4 8255流水灯显示参考接线图

实验代码如下:

IOY0         EQU   3000H           ;片选IOY0对应的端口始地址

MY8255_A     EQU   IOY0+00H*4     ;8255的A口地址

MY8255_B     EQU   IOY0+01H*4     ;8255的B口地址

MY8255_C     EQU   IOY0+02H*4     ;8255的C口地址

MY8255_MODE  EQU   IOY0+03H*4     ;8255的控制寄存器地址

STACK1 SEGMENT STACK

        DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

LA      DB  ?                     ;定义数据变量

LB      DB  ?

DATA ENDS

CODE SEGMENT

        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

       MOV DS,AX

       MOV DX,MY8255_MODE         ;定义8255工作方式           

       MOV AL, 80H          ;工作方式0,A口和B口为输出

       OUT DX,AL

       MOV DX,MY8255_A            ;写A口发出的起始数据

       MOV AL, 80H

       OUT DX,AL

       MOV LA,AL

       MOV DX,MY8255_B            ;写B口发出的起始数据

       MOV AL, 01H

       OUT DX,AL

       MOV LB,AL

LOOP1: CALL DALLY

       MOV AL,LA                 ;将A口起始数据右移再写入A口

       ROR AL,1

       MOV LA,AL

       MOV DX,MY8255_A

       OUT DX,AL

       MOV AL,LB                 ;将B口起始数据左移再写入B口

       ROL AL,1

       MOV LB,AL

       MOV DX,MY8255_B

       OUT DX,AL

       MOV AH,1                   ;判断是否有按键按下

       INT 16H

       JZ  LOOP1                 ;无按键则跳回继续循环,有则退出

QUIT:  MOV AX,4C00H               ;结束程序退出

       INT 21H

DALLY PROC NEAR                   ;软件延时子程序

       PUSH CX

       PUSH AX

       MOV  CX,0FFFH

D1:    MOV  AX,0FFFFH

D2:    DEC  AX

       JNZ  D2

       LOOP D1

       POP  AX

       POP  CX

       RET

DALLY ENDP

CODE ENDS

     END START

(代码结束)

五、思考题

1. 并口通信需要注意哪些问题?

答:注意其适合于短距离传输,长距离传输时要做好防干扰措施。

2. 比较并口通信与串口通信的异同。

答: 并行,是指8位数据同时通过并行线进行传送,这样数据传送速度大大提高,但并行传送的线路长度受到限制,因为长度增加,干扰就会增加,容易出错。

   串行,其不同于并行之处在于它的数据和控制信息是一位接以为串行传送下去,这样,虽然速度会慢一些,但传送距离较并行口更长,因此长距离的同学应使用串行口。

3. 8255A端口与外设之间的单向和双向传送是指什么?3个并口中哪个并口具有双向传送功能?

答:8255A的3个并行口与外设之间的单向传送是当初始化把8255A的并行端口设置为输入时,就不能作输出用,反之,亦然。而双向传送是通过初始化可以把8255A的并行端口设置为同时输入和输出。所以,此处的单向或双向是指1次初始化所设置的传送方式,并不意味着8255A的并行端口只能作单向或双向传送。

六、实验报告内容及要求

1. 按实验步骤列出实验中存在的问题,并给出解决问题的办法。

2.自己设计实验二中流水灯的流动模式,给出所修改的程序代码,分析设计的思路。

3. 自行设计能实现A口工作在方式一输入,B口工作在方式一输出的电路并完成程序的编制和在实验台上的验证,并在实验报告中给出所编程序。

实验九       8254定时/计数器应用实验

一、实验目的

1. 掌握 8254 的工作方式及应用编程。

2. 掌握 8254 典型应用电路的接法。

二、实验内容

1.计数应用实验。编写程序,应用8254的计数功能,用开关模拟计数,使每当按动KKI+五次后,产生一次计数中断,并在屏幕上显示一个字符‘5’。

2.定时应用实验。编写程序,应用8254的定时功能,产生一个1Hz 的方波,利用LED灯作为输出显示,观察LED灯闪烁的频率。

三、实验所用仪表及设备

1. PC机一台。

2. TD-PIT++实验系统一套。

2.实验步骤

(1)计数应用实验

实验说明:

编写程序,将8254的计数器0设置为方式0,计数值为5,用微动开关KKl+作为CLK0时钟,OUT0连接INTR,每当KKl+按动5次后产生中断请求,在屏幕上显示字符“5”。

图4-1 8254计数应用实验一参考接线图

实验步骤如下:

①实验接线如图4-1所示,按图接线。

②运行Tdpit 集成操作软件,根据实验内容,调用程序代码(T8254-1.ASM),填写程序代码中的空缺处,编译、链接。

③运行程序,按动KK1+产生单次脉冲,观察实验现象。

④改变计数值,验证8254的计数功能。

实验代码如下:

INTR_IVADD     EQU   01C8H        ;INTR对应的中断矢量地址

INTR_OCW1  EQU   0A1H  ;INTR对应PC机内部8259的OCW1地址

INTR_OCW2  EQU   0A0H  ;INTR对应PC机内部8259的OCW2地址

INTR_IM    EQU   0FBH   ;INTR对应的中断屏蔽字

IOY0           EQU   3000H         ;片选IOY0对应的端口始地址

MY8254_COUNT0  EQU   IOY0+00H*4   ;8254计数器0端口地址

MY8254_COUNT1  EQU   IOY0+01H*4   ;8254计数器1端口地址

MY8254_COUNT2  EQU   IOY0+02H*4   ;8254计数器2端口地址

MY8254_MODE    EQU   IOY0+03H*4   ;8254控制寄存器端口地址

                             

STACK1 SEGMENT STACK

        DW 256 DUP(?)

STACK1 ENDS

DATA SEGMENT

CS_BAK   DW  ?       ;保存INTR原中断处理程序入口段地址的变量

IP_BAK   DW  ?      ;保存INTR原中断处理程序入口偏移地址的变量

IM_BAK   DB  ?          ;保存INTR原中断屏蔽字的变量

STR1     DB  'COUNT: $'           ;显示的字符串

DATA ENDS

CODE SEGMENT

        ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

       MOV DS,AX

       CLI

       MOV AX,0000H               ;替换INTR的中断矢量

       MOV ES,AX

       MOV DI,INTR_IVADD         

       MOV AX,ES:[DI]

       MOV IP_BAK,AX     ;保存INTR原中断处理程序入口偏移地址

       MOV AX,OFFSET MYISR

       MOV ES:[DI],AX      ;设置当前中断处理程序入口偏移地址

       ADD DI,2

       MOV AX,ES:[DI]

       MOV CS_BAK,AX      ;保存INTR原中断处理程序入口段地址

       MOV AX,SEG MYISR

       MOV ES:[DI],AX          ;设置当前中断处理程序入口段地址

       MOV DX,INTR_OCW1 ;设置中断屏蔽寄存器,打开INTR屏蔽位

       IN  AL,DX

       MOV IM_BAK,AL              ;保存INTR原中断屏蔽字

       AND AL,INTR_IM

       OUT DX,AL

       STI

       MOV DX,OFFSET STR1         ;显示字符串

       MOV AH,9

       INT 21H

       MOV DX,MY8254_MODE         ;初始化8254工作方式

       MOV AL,10H                ;计数器0,方式0 

       OUT DX,AL            

       MOV DX,MY8254_COUNT0       ;装入计数初值

       MOV AL,4

       OUT DX,AL

WAIT1: MOV AH,1                   ;判断是否有按键按下

       INT 16H

       JZ  WAIT1               ;无按键则跳回继续等待,有则退出

QUIT:  CLI

       MOV AX,0000H               ;恢复INTR原中断矢量

       MOV ES,AX

       MOV DI,INTR_IVADD 

       MOV AX,IP_BAK     ;恢复INTR原中断处理程序入口偏移地址

       MOV ES:[DI],AX

       ADD DI,2

       MOV AX,CS_BAK       ;恢复INTR原中断处理程序入口段地址

       MOV ES:[DI],AX

       MOV DX,INTR_OCW1   ;恢复INTR原中断屏蔽寄存器的屏蔽字

       MOV AL,IM_BAK

       OUT DX,AL

       STI

       MOV AX,4C00H               ;返回到DOS

       INT 21H

MYISR PROC NEAR                   ;中断处理程序MYISR

       PUSH AX

       MOV AL,35H

       MOV AH,0EH

       INT 10H

       MOV AL,20H

       INT 10H

       MOV DX,MY8254_COUNT0       ;重装计数初值

       MOV AL,4

       OUT DX,AL

OVER:  MOV DX,INTR_OCW2    ;向PC机内部8259发送中断结束命令

       MOV AL,20H

       OUT DX,AL

       MOV AL,20H

       OUT 20H,AL

       POP AX

       IRET

      

MYISR ENDP

      

CODE ENDS

     END START

(代码结束)

(2)定时应用实验

实验说明:

编写程序,应用8254的定时功能,产生一个1Hz 的方波,利用LED灯作为输出显示,观察LED灯闪烁的频率。

图4-2 8254定时应用实验参考接线图

实验步骤如下:

①实验接线如图4-2所示。

②运行Tdpit 集成操作软件,根据实验内容,根据实验内容,调用程序代码(T8254-2.ASM),填写程序代码中的空缺处,编译、链接。

③运行程序,观察实验现象。

④修改定时计数初值,观察LED灯闪烁的频率。

实验代码如下:

IOY0  EQU  3000H                   ;片选IOY0 对应的端口始地址

MY8254_COUNT0  EQU  IOY0+00H*4   ;8254 计数器0 端口地址

MY8254_COUNT1  EQU  IOY0+01H*4   ;8254 计数器1 端口地址

MY8254_COUNT2  EQU  IOY0+02H*4   ;8254 计数器2 端口地址

MY8254_MODE   EQU   IOY0+03H*4   ;8254 控制寄存器端口地址

STACK1  SEGMENT  STACK

DW  256  DUP(?)

STACK1  ENDS

CODE  SEGMENT

ASSUME  CS:CODE

START:  MOV  DX,MY8254_MODE        ;初始化8254 工作方式

MOV  AL,0B6H                 ;计数器2,方式3

OUT  DX,AL

MOV  DX,MY8254_COUNT2      ;装入计数初值

MOV  AL,64H                  ;100 分频

OUT  DX,AL

MOV  AL,00H

OUT  DX,AL

MOV  DX,MY8254_MODE       ;初始化8254 工作方式

MOV  AL,36H                 ;计数器0,方式3

OUT  DX,AL

MOV  DX,MY8254_COUNT0      ;装入计数初值

MOV  AL,00H                  ;18432 分频

OUT  DX,AL

MOV  AL,48H

OUT  DX,AL

QUIT:  MOV AX,4C00H                 ;结束程序退出

INT  21H

CODE  ENDS

END  START

(代码结束)

五、思考题

1. 8254各种工作模式的具体含义是什么?

答:

方式0——计数结束产生中断,软件启动,不能自动重复计数的方式。

方式1——可编程单次脉冲,硬件启动,不能自动重复单通过GATE的正跳变可使计数过程重新开始的计数方式。

方式2——分频工作方式,既可以软件启动,也可以用硬件启动。

方式3——方波发生器,计数过程中其输出前一半时间为高电平,后一半时间为低电平。

方式4——软件触发选通,软件启动,不自动重复计数的方式。

2. 与8254的3个计数通道相对应的有3个引脚:CLK、GATE、OUT,这3个引脚分别起什么作用?

答:CLK引脚输入时钟脉冲信号。GATE门控脉冲信号输入端,由外部送入的门控脉冲,控制启动定时器或计数器工作。OUT引脚输出信号。

六、实验报告内容及要求

1. 按实验步骤列出实验中存在的问题,并给出解决问题的办法。

2.分析定时应用实验中关于计数初值的设定思路

更多相关推荐:
微机原理 实验报告

微机原理与接口技术实验指导书班级学号099074姓名安徽工业大学计算机学院实验一存贮器读写实验一实验内容对指定地址区间的RAM4000H4FFH先进行写数据55AAH然后将其内容读出再写到5000H5FFH中二...

微机原理完整实验报告+程序

实验题目8253定时计数器实验一实验目的与要求1学会8253芯片和微机接口原理和方法2掌握8253定时器计数器的工作方式和编程原理二实验内容1实验原理本实验原理图如图1所示8253A的A0A1接系统地址总线A0...

微机原理实验报告

微机原理实验报告实验一两个多位十进制数相加的实验一实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程二实验内容将两个多位十进制数相加要求被加数和加数均以ASCII码形...

答案版_微机原理实验报告

微机原理及接口技术实验报告20xx20xx学年第一学期班级姓名学号指导教师实验一Emu8086软件的使用一实验目的1熟悉汇编语言开发环境2掌握Emu8086软件使用方法3理解寻址方式的意义二实验环境1硬件环境微...

微机原理实验报告

大连理工大学本科实验报告课程名称计算机原理课程设计学院系电气工程学院专业电气工程及其自动化班级学号学生姓名20xx年12月30日大连理工大学实验报告实验时间年月日星期四时间13001505实验室房间号实验台号码...

微机原理实验报告1

微机原理实验报告班级:电气93姓名:学号:实验一:顺序程序的设计一、实验目的:1.学习8086/8088指令系统中一些基本指令的用法和程序设计的基本方法。2.熟悉在PC机上建立、汇编、链接、调试和运行8086、…

微机原理实验报告一

西安郵電學院微机原理实验报告一题目寻址方式与基本指令实验院系名称计算机学院专业名称软件工程专业班级软件0902学生姓名许艳莉学号8位040950581实验目的1熟悉80x86寻址方式及基本指令的功能进一步理解和...

微机原理实验报告

微机原理实验课程实验研究性学习手册姓名学号班级微机教师微机实验老师时间20xx年12月上课时间实验一IO地址译码与交通灯控制实验一实验目的1掌握并行接口8255的基本原理2掌握8255的编程方法3掌握利用X86...

微机原理实验报告

微机接口与原理实验报告学院信息科学与工程学院专业班级姓名学号1目录第一部分硬件实验311实验一312实验二413实验三414实验四515实验五616实验六617实验七718实验八819实验九8110实验十9第二...

微机原理实验报告

大连理工大学本科实验报告课程名称计算机原理课程设计学院系电气工程学院专业电气工程及其自动化班级学号学生姓名20xx年12月30日大连理工大学实验报告实验时间年月日星期四时间13001505实验室房间号综420实...

微机原理实验报告冒泡法对数据排序

实验内容用冒泡法对一组数300250280240260按从小到大的顺序排列实验要求1编制程序对这组数进行排序并输出原数据及排序后数据2利用DEBUG调试工具用D0命令查看排序前后内存数据的变化3去掉最大和最小的...

微机原理课设实验报告最终修订版

河北科技大学课程设计报告学生姓名张德正学号120xx1233专业班级电子信息122班课程名称微型计算机原理及应用技术学年学期20142015学年第1学期同组人员薛小禹应佳捷张念琦张美萍指导教师2014年12月课...

微机原理实验报告(31篇)