南京邮电大学《微型计算机原理与接口技术》期末复习整理

发布时间:2024年01月20日

微型计算机原理与接口技术

文章目录

一、汇编部分 28 分左右

U1微型计算机基础

1.二进制、十进制、十六进制、 BCD 码的相互转换
  • 二进制与十六进制:四个一组直接相互转换

  • 十进制与BCD码:一一对应直接相互转换

(xxxx xxxx)2=(xx)16

(xxxx xxxx)10=(xx)BCD

  • 二进制与十进制:128 64 32 16 8 4 2 1
2.值与机器码(原码、反码、补码)的转换
  • 正数:[X]原=[X]补;[X]反=[X]原码按位取反

  • 负数:最高位(符号位)不变的前提下

    [X]反=[X]原码按位取反 ;[X]补=[X]反+1;[X]原=[[X]补]补

    -1的补码数:二进制:全为1;十六进制:全为F

    -128的补码数:二进制:1后全为0

3.有符号数、无符号数的数值范围( 重点掌握机器数字长 n=8 位的)
  • 有符号数(又叫:补码数):-2^(n-1) ~2^(n-1)-1

    其中(n-1)的“-1”表示减去的是一位符号位

  • 无符号数:

机器数字长性质范围
字长为 8 位补码数(有符号数)-128 ~+127
8 位字长无符号整数0 ~255
16位字长无符号整数0~65535
4.补码计算及并对结果进行分析
image-20231216125534545

计算:

①先全部转换为加法[X]原=[[X]补]补

②列竖式进行加法运算

程序员判溢(看O/C ==1?):

有符号数(补码数)看O标(只要有一个数是负数,整体就是有符号数)

11_0

00_1

无符号看C标

5.六大标志的判断
标志含义
进位标志 C(Carry Flag)当结果的最高位(D15 或 D7)产生一个进位或借位,则 C=1
溢出标志 O(Overflow Flag)补码计算的符号位 001 或 110 时置为 1(加数与被加数的最高位相同,却与结 果的最高位相异,则将溢出标志置为 1)
符号标志 S(Sign Flag)结果的最高位(D15 或 D7)为 1
零标志 Z(Zero Flag)若运算的结果为 0,则 Z=1
奇偶标志 P/偶标志位(Parity Flag)若运算的结果中,最低一个字节(低8位)中‘1’的个数为偶数,则 P=1
辅助进位标志 A(Auxitiary Flag)在操作时,由低半字节(D3)向高半字节(D4),有进位,则 A=1
6.ASCII 码
  • ‘0’-‘9’ 、’A’-‘F’、回车符、换行符的 ASCII 码 重点掌握’0’- ‘9’ ,’A’-‘F’
字符ASCII码
‘0’–‘9’30H–39H
’A’-‘F’41H–46H
回车符0DH
换行符0AH
7.冯.诺依曼提出计算机的硬件系统
计算机系统的硬件组成存储器、运算器、控制器、输入设备和输出设备
微处理器组成运算器、控制器
五大部件之间传输信息的公共通道总线
  • 微型计算机各部件之间是用(系统总线)连接起来的。
image-20231216133414238
  • 软件与硬件
image-20231216133501944

硬件:“三总线三模块”

8.机器数、真值、字长等概念1
9.计算机工作过程的 5 个步骤
10.能说出存储器的容量单位 K M G T 的概念
1B(字节)=8b(位)
1KB=2^10B
1MB=2^20B
1GB=2^30B
1TB=2^40B

存储单元的二进制地址码,由CPU通过地址总线送入存储器的地址译码器的输入。

11.能说出存储位 bit、存储单元 Byte、存储体、存储芯片的概念
image-20231216155211633
12.存储单元和单元地址的关系
image-20231216155238003
  • 存储器由若干个“存储单元”组成,每个单元存放一个“字节的信息
  • 系统为每一单元编排一个地址
  • 存储器容量由地址线“宽度”决定
(1)计算地址线条数 n 与 CPU 访问:

存储器的容量:2^n B

存储器的寻址范围:n个0 B----n个1 B

(2)CPU 对存储器的读写操作过程

image-20231216155506085

13.存储器名词的意义与作用

能知道 RAM ROM SRAM DRAM BIOS CACHE 等

U2 80X86微处理器

1.基本结构寄存器的名称、位长和作用

⑴通用寄存器 AX BX CX DX SI DI BP SP

⑵段寄存器 CS DS ES SS

⑶指令指针寄存器 IP

image-20231216133943338

逻辑段:段基址存放在……偏移地址存放在……
代码段CS(Code)IP
堆栈段SS(Stack)SP
数据段DS(Data)
  • CS、IP由系统赋初值,不可程序员赋值
2.能说出 32 位微处理器的三种工作模式,实模式的特点,特别是分段的概念

80X86三种工作模式:实模式、保护模式、虚拟86模式(考题原题,题三个空)

实模式特点:

①加电、复位之后, 486 自动工作在实模式,系统在 DOS 管理下

②在实模式下,486 只能访问第一个 1M 内存(00000H-FFFFH)

③存储管理部件对存储器只进行分段管理,没有分页功能,每一逻辑段的最大容量为 64K

④在实模式下, 段寄存器中存放段基址。

分段:段基址:偏移地址

3.计算:逻辑地址转为20 位物理地址
4.能说出 32 位微处理器的 2 个地址空间,3 个存储空间
逻辑地址和物理地址的概念与关系。

U3汇编语言指令集 重点 1

1.寻址方式
image-20231218003006763
间址寄存器约定访问的逻辑段
BP堆栈段 SS
BX,SI,DI数据段 DS
2.(选学)伪指令:DB 、DW、DD 、EQU 、== 、运算符: $
3.堆栈操作指令 PUSH/POP
4.子程序的定义和调用

定义:

XXX    PROC
        …
RET
XXX    ENDP

调用:

call XXX
RET
5.子程序与宏指令的异同点
  • 共同点:

宏指令与子程序都可以简化程序设计,增强程序的可读性

  • 不同点:
  1. 子程序调用是由 CPU 完成的,宏指令调用是在汇编过程中汇编程序完成的
  2. 子程序调用可以**减小目标程序的体积,**宏指令则不能
6.逻辑运算 AND OR NOT XOR

NOT:所有位置取反

AND:某些位置 0,其它位不变

OR:某些位置 1, 其它位不变

XOR:某些位置不变,其他取反

7.结果不保存的两个指令 CMP TEST
  • 对比记忆:传送类指令(MOV)不会影响标志位

  • 常量不会占用内存空间:EQU和==;而变量会:DB DW DD

8.(选学)清零的指令(对BL寄存器)
AND  BL,0H
XOR  BL,BL
SHR/SHL   BL,8
SUB   BL,BL
MOV  BL,0
9.判断指令正误总结
1.CS、IP 的初值:由操作系统赋值。

即目标操作数不能是 CS 、IP:

MOV CS,AX (错)

2.寻址方式: 内存寻址方式[ ]里面只能是 BX/BP/SI/DI

MOV AX , [DX] ×

MOV AX , [AX] ×

3.PTR:必须满足下列条件之一,否则就是错的:
  • 至少有一个操作数的类型属性要确定

MOV [BX] ,[BP] (错)

MOV [BP],100H (错)

INC [BX] (错)

  • 若两个操作数的类型属性都确定,则必须保持一致

BUF DB 12H,-1

MOV AX ,BUF(错)

  • 类型属性确定的操作数:

寄存器寻址用变量名直接寻址

image-20231216135355643

image-20231216135416506

4.指令集
  • 不允许在两个内存操作数之间传送数据 MOV BUF1,BUF2 (错)

①MOV

注意:

⑴立即数不能直接送段寄存器 MOV DS, 3000H ×

正确的方法:

MOV AX,3000H

MOV DS,AX

⑵ 源操作数是立即数,并且大小超过了目的操作数的大小

MOV AL,300 (错)(255以内)

⑶ 目标操作数不允许用立即数方式

MOV 2000H, AL ×

不允许在两个段寄存器之间传送数据

MOV DS, ES ×

②PUSH / POP

进栈、出栈的操作数只能 16 或 32 位 (PUSH AH ×)

③MUL/ DIV

乘除的源操作数不能是立即数

MUL 12 (X)

④SHL/SAL/SHR/SAR ROL/ROR/RCL/ RCR

移位指令的移位次数只能是立即数或 CL 寄存器

SAL BX,CX(错)

U4 汇编语言程序设计

1.汇编语言程序的开发过程

.asm->.obj->.exe或.com

在这里插入图片描述

2.(选学)DOS 功能调用(1、2、9、0AH)(中断类型码n=21H)

【功能号 01H】 等待键入一个字符(等待键入的 ASCII 码,请事先存在 AL 中)

【功能号 02H】 显示一个字符(待显字符的 ASCII 码,请事先存在 DL 中)

【功能号 09H】 显示字符串

【功能号 0AH】 等待键入字符串

【功能号 4CH】 返回 DOS

3.(选学)BIOS 键盘输入功能调用(00H、01H)(中断类型码n=16H)

【功能号 00H】 读取键入的一个字符

【功能号 01H】 查询键盘缓冲区。

4.(选学)BIOS 屏幕显示功能调用(00H、0EH)(终端类型码n=10H)

【功能号 00H】 设置屏幕显示方式

【功能号 0EH】显示一个字符。(等待显示的 ASCII 码,请事先存在 AL 中)

MOV  AH,功能号
INT  n
5.(选学)程序设计: 累加、二进制显示
  • LOOP指令

  • CX寄存器值表示循环次数

6.程序框架
.586                       ;方式定义
DATA SEGMENT USE16         ;用段定义语句定义逻辑段,这里是定义数据段
…
MESG DB HELLO’,0DH,0AH,’$’ ;用伪指令定义数据
…
DATA ENDS 

CODE SEGMENT USE16    ;用段定义语句定义逻辑段,这里是定义代码段 
     ASSUME CS:CODE,DS:DATA;说明段约定
MOV AX,DATA
MOV DS,AX
…
MOV AH,4CH
INT 21H    ;返回DOS
CODE ENDS
END BEG    ;汇编结束

二、总线、存储器、 IO系统 12 分左右

U5 总线

1.总线的分类(ADC)

地址总线,数据总线,控制总线

2.总线控制信号(M/IO、D/C、W/R)
  • 总线周期控制信号

image-20231216161505696

D(Data):数据

C(Code):指令

3.系统总线引脚(IOR 、IOW)

IOR非:I/O读命令

IN AL,80H

IOW非:I/O写命令

OUT 40H,AL

image-20231216161704759

U6 存储器系统

1.存储器的扩展

①储存芯片容量可表示为2^n *m位/片

  • 寻址该储存器需要n根地址总线
  • 寻址该存储器需要m根数据总线

例如:

4K*4=2^12 * 4

2K * 8位=2^11*8

8M*4bit=2^23 * 4

4KB=4K*8=2^12 *8

②多个小芯片扩展成大容量存储器问题:

  • 总片数=总容量/小芯片的容量=a*b

2^n *m左边和左边约分,右边和右边约分

  • 扩展方式
a>1且b>1字位同时扩展
a>1字扩展
b>1位扩展
2.存储器容量、地址范围
  • 存储器的容量:2^n B

  • 存储器的寻址范围:n个0 B----n个1 B

U7 输入输出系统

1.接口电路的作用和功能

作用:CPU与外设交换信息的中转站

image-20231216162249221

功能:

  • 无运算功能
  • 数据暂存
  • 端口地址译码器(便于使用IN,OUT指令)

IN AL,42H;进入AL寄存器的数据来自I/O端口

  • 与外设之间有联络功能
  • 中断管理
  • 数据转换(串->并,并->串)
2.★端口的概念和分类

概念(重要):在接口电路中,能与CPU交换信息(使用IN,OUT)的寄存器

分类(DSC):数据端口、状态端口、控制端口。

  • 数据口:存放CPU向外设输出或外设输入的数据。

  • 控制口:存放控制信息–控制接口电路、外设的工作。

  • 状态口:存放状态信息–反映外设的状态。

  • 注意:接口电路必须具有数据口

查询方式:必须设置数据端口和状态端口

3.★端口有两种编址方式

I/O端口和存储单元统一编址存储器映像方式

②I/O端口和存储器分别使用两个地址空间,单独编址(I/O独立编址

注意:PC系列机中采用独立编址;PC系列机I/O端口地址最多为2^10=1024个(A0~A9)

4.★CPU 的 IO 指令(IN ,OUT)重要! 后面编程的基础
1.直接寻址(当端口地址=8位XXH时使用)

读-IN-关注从XXXH来

IN AL,端口地址

写-OUT-关注向XXXH去

OUT 端口地址,AL

2.DX间接寻址(端口地址>8位XXXH时使用)

读:

MOV  DX,端口地址
IN   AL,DX

写:

;MOV  AL,'A'
MOV  DX,端口地址
OUT  DX,AL

注意:

  • I/O指令只能在端口和AL,AX,EAX之间交换信息
  • 用DX间址时不能使用方括号

× IN AL,[DX]

5.★微机系统与 I/O 设备之间的传送方式

4种:无条件传送方式、查询方式、中断控制方式、DMA方式

  • CPU不参与的是DMA(IO设备和内存直接交换信息),速度最快,但是硬件复杂

DMA(Direct Memory Access)直接存储器存取

  • 无条件传送方式硬件电路最简单
6.能编写查询方式下的信息输入输出程序段

编程步骤:

①读状态端口

②读/写数据端口

RSCAN:MOV DX,200H
      IN  AL,DX
      TEST AL,1000 0000H
      JZ   RSCAN
      MOV DX,201H
      IN  AL,DX
  • 难点:JZ/JNZ

D7=0,结果为0,Z=1,跳转

D7=1,结果!=0,Z=0,继续

  • 与之前IN/OUT读/写的写法有关(是否大于8位)

I/O指令只能在端口和AL,AX,EAX之间交换信息

  • TEST检测某些位是0还是1 XXXX XXXXH,检测哪位哪位X变为1

与操作,同时为1结果!=0

AND会改变寄存器的值,顾不适用

  • 查询的是某字符

'x’或写其ASCII码形式XXH

7.什么是直接存贮器存取(DMA)方式?实现 DMA 传送的关键器件是什么?
  • DMA:利用硬件完成高速外设与系统 RAM 之间的信息交换

  • 关键器件: DMA 控制器

8.四种传送方式优缺点总结
优点缺点
无条件传送方式可以直接使用输入缓冲器或锁存器(可做简单的输出接口)与数据线相连,程序设计简单,硬件电路最简单传送不能太频繁 (保证每次传送设备都处在就绪状态)
查询方式比无条件传送方式可靠降低了CPU的工作效率,不具有实时性
中断控制方式提高了CPU的工作效率,具备实时性, 可并行工作,不用反复查询外设的工作。每次进行数据传输,都要 保存现场状态 (所以需要检测状态端口)
DMA方式完全用硬件实现在外设与内存间直接进 行数据交换,而不通过CPU间接交换(不需要软件)。响应时间快,数据传送速度快硬件更复杂(DMA控制器)

三、四大芯片部分

image-20231218002807470

U8中断系统(8259A)(附录啥都没有)

1.中断的基本概念
(1)中断、中断源
  • 中断:CPU暂停执行现行程序,转而处理随机事件,处理完毕后再返回被中断的程序,这一全过程被称为中断。
image-20231218002924611
  • 主程序被中止的地方,称为断点,也就是下一条指令所在的内存的地址

  • 中断源:能够引发CPU中断的信息源。

可屏蔽中断类型中断类型码中断源
日时钟中断08H(改向/会调用一次INT 1CH)系统 8254 0#计数器,每 55ms 有一次中断请求
键盘中断09H
用户中断71H(改向/会调用一次INT 0AH)系统的 ISA 总线 B4 端子引入的中断请求信号
(2)★中断的分类、中断类型码
  • 中断的分类:

image-20231218002751372

CPU有两个引脚(INTR和NMI)可以接收外部的中断请求信号:

image-20231218002827191

INTR:interrupt

  • 主8259A连接INTR管理可屏蔽中断

NMI:Non Maskable Interrupt

由输入到 INTR 引脚的中断请求信号引发的中断称为可屏蔽中断。

由输入到NMI引脚的中断请求信号引发的中断称为非屏蔽中断。

  • 中断类型码:

    为了区别这些不同的中断,微机系统给每个中断分配了一个中断类型号n,即中断类型码,其取值范围是0~255

  • 中断类型码的获取方式

对于非屏蔽硬件中断请求,CPU内部会自动产生中断类型码;

对于可屏蔽硬件中断请求,当CPU处于开中断状态时,由8259A将相应的中断类型码送给CPU;

对于异常,中断类型码也是自动形成的;

对于INT n指令,中断类型码即为指令中给的n.

(3)★中断向量、中断向量表
  • 中断向量:**中断向量是实模式下,中断服务子程序的入口地址。**它由 2 部分组成:

①服务程序所在代码段的段基址 (2字节)

②服务程序入口的偏移地址(2字节)

  • n 型中断向量:
地址该地址保存的内容
4nn 型服务程序入口地址的偏移地址
4n+1
4n+2n 型服务程序入口地址的段基址
4n+3

解题图示:

中断向量表

  • 实模式下,中断向量表是一个将中断类型码与中断服务程序的入口地址相联系的地址指针表
  • 特点:在实模式下,中断向量表需设置在系统的 RAM 最低端的 1K 单元
  • 中断类型码 n 存在中断向量表 4n~4n+3 的表地址

image-20231218013458274

段基址:偏移地址

  • 中断类型码 * 4------>n*4
  • 转化为2进制
中断类型码 转 逻辑地址二进制左移两位
逻辑地址 转 中断类型码二进制右移两位
2.中断指令 重点掌握 IRET
  1. 开中断指令: STI(settle)------I标置1
  • 功能:使F寄存器中的I标志置1,CPU处于开中断状态。即允许CPU响应来自引脚INTR的请求。
  1. 关中断指令: CLI(clear)------I标置0
  • 使F寄存器中I标志置0,CPU处于关中断状态。
  • 注意:STI,CLI只对可蔽中断(INTR)请求有效
image-20231218002827191
  1. 软件中断指令INT n
  • 无条件转向n型中断服务子程序.
  1. 中断返回指令IRET
  • 依次从栈顶弹出 6 个字节的数据(元素:断口偏移地址,断口段基址,F寄存器的内容–>IP,CS,F), 分别赋给 IP 、CS 和 F 寄存器。

  • INT n和IRET(I return)这两条指令常常成对出现.

  • 中断指令在中断程序设计中如何使用

主程序:
...
BEG:MOV AX,DATA
	MOV DS,AX
	CLI   ;关中断
	CALL WRITE0A
	CALL I8259A
	SIT   ;开中断
SCAN:
   MOV AH,1
	INT 16H ;*4倍,移动到中断服务子程序所在代码段的段基址和偏移地址
	JZ  SCAN;把下面的信息为了继续执行保存在堆栈
	MOV AH,4CH
	INT 21H
	...

中断服务子程序:
SERVICE PROC
		PUSH
		PUSH DS
		...
		MOV AL,20H
		OUT 20H,AL
		POP DS
		POPA
		IRET;把堆栈的信息弹出来,继续执行JZ SCAN...
SERVICE ENDP
断口偏移地址IP
断口段基址CS
F寄存器的内容FLAG
  • 最先入栈的在下面
  • 普通结束子程序:RET/中断服务子程序结束:IRET(中断服务子程序的编写涉及,其他都是普通子程序)
3.★ CPU 响应可屏蔽中断(INTR)和非屏蔽中断(NMI)的条件
  • DMA 请求级别 > 非屏蔽中断> 可屏蔽中断。
  • DMA>NMI>INTR

  • 即可屏蔽中断级别最低。

  • INTR、NMI答题模版:

    ①有XXX请求,没有DMA请求(INTR再加一个:也没有非屏蔽中断请求)

    CPU 当前指令执行完毕

    ③CPU处于XXX状态,I标=X。

  • 输入INTR 引脚的中断请求信号引发的中断称为可屏蔽中断

  • CPU 响应可屏蔽中断(INTR)的条件:

①INTR 引脚有中断请求, NMI 引脚没有中断请求,系统没有 DMA 请求

CPU 当前指令执行完毕

③CPU 处于开中断状态**(I 标=1)**

题目变形:

日时钟中断源向CPU提出中断申请,但CPU不响应,简述其原因。(反着回答)

当某一中断接到 ISA 总线的 B4 端子,而 CPU 没有响应该中断,请分析可能的原因有哪些?

若 INTR 引脚提出的一个中断请求没有被响应,试分析其原因。

  • 非屏蔽中断(NMI)

①NMI 引脚有中断请求,系统没有 DMA 请求

CPU 当前指令执行完毕

指令IRET和指令RET的区别

IRET 从栈顶弹出 6 个元素→ IP,CS,F

远程FAR RET,从栈顶弹出 4 个元素→ IP,CS

近程NEAR RET,从栈顶弹出 2 个元素→ IP

  • 标志寄存器提供两类标志:
  • 状态标志:有SF、ZF、PF、CF、AF、OF
  • 控制标志:有DF、TF、IF
4.硬件中断和软件中断的区别

( 1)中断的引发方式不同

硬件中断CPU以外的设备发出的接到引脚INTR和NMI上的中断请求信号而引发的
软件中断由CPU执行INT n指令而引发的

(2)CPU 获取中断类型码的方式不同

可屏蔽硬件中断(INTR)由中断控制器8259A提供
非屏蔽硬件中断(NMI)CPU自动产生
软件中断软件中断指令INT n本身提供

(3)СРU 响应的条件不同

可屏蔽硬件中断(INTR)可以被屏蔽只有在CPU开中断时才响应
非屏蔽硬件中断(NMI)不可以被屏蔽
软件中断不可以被屏蔽

(4)中断处理程序的结束方式不同

硬件可屏蔽中断服务程序中中断处理结束后,首先要向8259A发出中断结束命令,然后执行IRET指令,中断返回。
软件中断服务子程序中中断处理结束后只需执行IRET指令。
相同点:

(1)都会引起程序终止。

(2)CPU获得中断类型码n后,自动从4 * n ~ 4 * n+3单元取出该中断源的中断向量–>IP、CS,从而执行该中断源的中断服务程序。

CPU INT 21H指令时如何完成整个中断响应过程

①将 F 寄存器、CS 和 IP 的当前值压入堆栈

②CPU 从 4 * 21H—4*21H+3 单元中取出 21H 型中断向量写入 IP 、CS 中

③执行 21H 中断服务程序,完毕前从栈顶弹出两个分量到 IP 、CS 还包括 F 寄存器内容,返回断点

5.中断系统的功能
  • 对于硬件中断,接口电路应具备**‘屏蔽’‘开放’**的功能,这种功能由程序员通过软件(编程)去控制。
  • 能实现中断判优(中断排队) ,当有多个中断源提出请求时,应能优先响应高级别的中断源。
  • 能够实现中断嵌套
  • 响应中断后,能自动转入中断处理,处理完毕能自动返回断点
6.8259A 内部结构-寄存器的作用

8259A内部结构

image-20231218154954473

( 1)中断请求寄存器IRR(Interrupt Request Register),寄存中断请求引脚的中断请求信号

(2)中断屏蔽寄存器IMR(Interrupt Mask Register),用于开放和屏蔽某些中断

(3)中断服务寄存器ISR(Interrupt Service Register),用于记录当前 CPU 正在为哪些可屏蔽的中断(INTR)服务

(4)优先权电路,进行中断优先级判别

  • 比较同时送达优先权电路的中断请求,哪一个级别最高
  • 比较CPU正为之服务的中断源和刚进入优先权电路的中断源,哪一个级别更高

image-20231218155022550

7.8259A 外部引脚-读写控制信号的确定
中断屏蔽寄存器口地址(奇地址)接收中断结束命令的寄存器口地址(偶地址)
主8259A21H20H
从8259A0A1H0A0H
  • 每片8359A必须分配2个端口地址(中断屏蔽寄存器口地址和接收中断结束命令字的寄存器口地址)
  • A0电平:
中断屏蔽寄存器(奇地址)1
中断结束命令字(偶地址)0
  • CS非电平:0

  • CPU写<==>人写

    WR非=0

    RD非=1

8.★8259A 的级联
  • 1片8259A中断控制器可以管理8级中断
image-20231218155158477
  • PC系列机)2片8259A通过级联,采用1主1从的方式,可以管理15级中断
image-20231218155255561
  • n 片 8259A 最多可以管理的中断数: 7n+1
9.★可屏蔽中断的优先级:
image-20231218155105061
可屏蔽中断的中断类型码:

image-20231218155350679

可屏蔽中断的优先级

image-20231218155358664

日时钟中断、键盘中断、用户中断的中断类型码和中断源
中断类型码中断源
日时钟中断08H(INT 1CH)系统 8254 0#计数器,每 55ms 有一次中断请求
键盘中断09H
用户中断71H (改向INT 0AH)系统的 ISA 总线 B4 端子引入的中断请求信号
  • 用户中断
image-20231218155929841
10.8259A 应用编程
  • ★写中断向量[25H 子功能]

[ INT 21H 的 25H 子功能 ]

功能:写入 n 型中断向量

入口: DS=中断服务程序所在代码段的段基址

DX=中断服务程序入口的偏移地址

AL=中断类型码

I8259A   PROC
PUSHA
PUSH DS

MOV AX,SEG SERVICE
MOV DS,AX

MOV DX,OFFSET SERVICE
MOV AL,0CH ;中断类型码
MOV AH,25H
INT 21H

POP  DS
POPA
RET
I8259A   ENDP
  • 读中断向量[35H 子功能]

[ INT 21H 的 35H 子功能 ]

功能:读出 n 型中断向量

入口: AL=中断类型码

出口: ES:BX=n 型中断向量

MOV  AL,0BH
MOV  AH,35H
INT  21H
MOV  PTR WORD STORE, BX
MOV PTR WORD STORE+2, ES
  • ★开放用户中断
IN    AL,21H
AND   AL, 11111011B
OUT   21H,AL
IN    AL ,0A1H
AND   AL, 11111101B
OUT   0A1H,AL
  • 中断服务子程序的编写(写常规中断结束命令字 20H)

① 若用户中断定义为 0AH 型(主) ,服务程序结束前只向主 8259A 送结束命令。

MOV  AL,20H
OUT  20H,AL

②若用户中断定义为 71H 型(从) , 服务程序结束前,向主从 8259A 各送一中断结束命令 。

MOV   AL,20H
OUT   20H,AL
OUT   0A0H,AL

U9 微型计算机系统串行通信(8250)(附录有)

1.★串行通信基础
(1)计算机通信方式

在这里插入图片描述
在这里插入图片描述

  • 简述异步串行通信的三种传输方式及其各自特点?其中哪些方式可以实现双向传输?

答:(1) ①单工方式:只允许数据按照一个固定的方向传送。

? ②半双工方式:收发双方均具备接收和发送数据的能力,由于只有一条信道,数据不能在两个方向上同时传送。

? ③全双工方式:收发双发可以同时进行数据传送。

? (2). 半双工 和 双工

(2)RS-232C 标准-信号电平标准

标准规定:逻辑“1”信号,电平在-15V~-3V之间;

? 逻辑“0”信号,电平在+3V~+15V之间;

  • 跟数字电路相反,请注意!!!
(3)RS-232C 标准-外部环境
①单工–无联络线(2线)

在这里插入图片描述

②全双工–无联络线(3线)

在这里插入图片描述

外环自发自收–无联络线

在这里插入图片描述

内环自发自收不画线。

注:

TXD是 Transmint External Data ,向外部设备发送数据。(2)
RXD是Receive External Data,接收外部设备传来的数据。 (3)
GND是 Ground 地

端子号、端子名称:

在这里插入图片描述

  • 注意箭头方向都是TXD–>RXD(2–>3)。

  • GND没有箭头关系

简答题:如何实现外环自发自收?

人为将RS-232C接口芯片端子2和端子3用线连接起来。

(4)异步通信数据帧的格式

在这里插入图片描述

(附录有)四部分:

起始位1位‘0’
数据位5~8位‘0’或‘1’
奇偶校验位0~1位(可有可无)‘0’或‘1’
停止位1、1.5、2位‘1’
  • 一帧数据发送时序:异步通行时,一帧字符以起始位‘0’开始,紧跟着是数据位(先发数据最低位再是高位),再到最高位,接着发送奇偶校验位,最后停止位以‘1’结束。
  • 奇偶校验位:
奇校验数据位与校验位中‘1’的个数为奇数
偶校验数据位与校验位中‘1’的个数为偶数
考法:

1.异步串行通信 01010001001传送的数据是?校验方式是?

0(起始位) 1010 0010 0 (8+1,先低后高) 1(停止位)

反着写:0100 0101B = 45H

2.已知接收波形的一帧数据(TTL电平),ASCII对应的字符?校验方式?

_ ‘ ’_ _ _ _ ‘ ’ ‘( ’–1 _ -0)(传送方向<——)

0 1100 001 1 1

100 0011B=43H

  • 标准的ascii码是7位的
  • 既然问了奇校验还是偶校验就说明有校验方式
  • 给(+12V—— -12V)RS-232C标准,电平就反着来

3.告诉传输字符、校验方式以及停止位的位数。要求画图。

  • 注意区分波形获取的位置:

位置1:0/1、TTL电平、8250引脚(Sout/Sin)

位置2:+12V/-12V、RS232电平、RS232引脚(TXD/RXD)
翻转课堂错题:
在这里插入图片描述

(5)波特率(通信速率) 的定义

通信速率(波特率):每秒钟传送的0、1代码(二进制位)个数(包括起始位、数据位、校验位、停止位),单位为“波特‘。

  • 考点:

? 波特率/位数=每秒传送多少帧字符

传一帧字符的时间=1/?

2.(选学)8250 的内部结构(附录有)

在这里插入图片描述

以 8250 为例,说明这个芯片所包含的端口类型。

数据端口:接收缓冲寄存器、发送保持寄存器;

状态端口:通信线路状态寄存器、 MODEM 状态寄存器、中断识别寄存器;

控制端口:通信线路控制寄存器、 MODEM 控制寄存器、中断允许寄存器、除数寄存器

8250 的 4 级中断及优先级(中断允许寄存器)(抄附录)
  • 由高到低的顺序

接收线路状态中断;(接收数据错中断)

接收缓冲器满;(接收中断)

发送保持器空;(发送中断)

MODEM 状态中断;

在这里插入图片描述

8250 发送/接收过程(发送/接收移位寄存器)

在这里插入图片描述

都是移位寄存器

在这里插入图片描述

3.★8250 初始化编程
Step1.把6组MOV,MOV,OUT写出来
MOV  DX,端口号
MOV  AL,控制字
OUT  DX,AL
Step2.确定8254端口是2FXH(辅串口),3FXH(主串口)

其中X的顺序是:B98B9C

MOV  DX,3FBH
MOV  AL,80H
OUT  DX,AL

MOV  DX,3F9H
MOV  AL,控制字
OUT  DX,AL

MOV  DX,3F8H
MOV  AL,控制字
OUT  DX,AL

MOV  DX,3FBH
MOV  AL,控制字
OUT  DX,AL

MOV  DX,3F9H
MOV  AL,控制字
OUT  DX,AL

MOV  DX,3FCH
MOV  AL,控制字
OUT  DX,AL
Step3.根据题目,确定6个控制字

其中第一个一定是80H

  • 简答题:8250 初始化编程(B98B9C)

① 80H → 线路控制寄存器

② 通信速率 → 除数寄存器(分频系数位–>除数寄存器位,高对高,低对低)(分频系数是00XX H从题目中读)

  • 除数寄存器高8位(3F9H/2F9H)-- 00H,低8位(3F8H/2F8H)-- XX H
  • 9–>高,8–>低

③ 数据帧格式→线路控制寄存器

④ 设置中断允许寄存器

  • 查询方式,则中断相应位 置 0,禁止中断
  • 中断方式,使中断相应位 置 1,允许中断

在这里插入图片描述

⑤ 设置 MODEM 控制寄存器(通常设置为 0H(或 03H), 中断设置 D3 为 1, 内环自发自收设置 D4 为 1)

  • 注:正常通信(外环自发自收):D4=0

在这里插入图片描述

  • D3的位置别找错了 :0000 1000H
简述 8250 初始化编程的步骤

① 确定波特率—— 设置除数寄存器;

② 确定数据格式—— 设置通信线路控制寄存器;

③ 若使用中断方式—— 需设置中断允许寄存器的相应位(置“1”);

例题:A、B两台PC机进行单工通信,已知双方的通信速率被设定为2400波特(对应分频系数为0030H),一帧数据格式为7个数据位,2个停止位,无校验方式,A机 主串口 查询方式 发送,而B机利用中断方式从辅串口以同样的波特率接收数据。

(1)请为发送方(A机)编写一个8250初始化程序段。(当某个二进制位,取0或1都可以时,一律取值为0)

MOV  DX,3FBH
MOV  AL,80H
OUT  DX,AL  ;80H-->通信线路控制寄存器①

MOV  DX,3F9H
MOV  AL,00H ;分频系数为0030H的高8位--9
OUT  DX,AL

MOV  DX,3F8H
MOV  AL,30H ;分频系数为0030H的低8位--8;通信速率-->除数寄存器②
OUT  DX,AL

MOV  DX,3FBH
MOV  AL,控制字
OUT  DX,AL  ;数据帧格式-->通信线路控制寄存器③

MOV  DX,3F9H
MOV  AL,0000 00110B
OUT  DX,AL;中断允许命令字④

MOV  DX,3FCH
MOV  AL,00H;除了中断D3=1,内环自发自收D4=1以外均为00H
OUT  DX,AL;设置MODEM控制寄存器⑤
  • 关注:是程序段还是子程序?

如果是子程序就要写子程序的结构。

(2)请为B机编写一个8250初始化程序段。(当某个二进制位,取0或1都可以时,一律取值为0)

MOV  DX,2FBH
MOV  AL,80H
OUT  DX,AL  ;80H-->通信线路控制寄存器①

MOV  DX,2F9H
MOV  AL,00H ;分频系数为0030H的高8位--9
OUT  DX,AL

MOV  DX,2F8H
MOV  AL,30H ;分频系数为0030H的低8位--8;通信速率-->除数寄存器②
OUT  DX,AL

MOV  DX,2FBH
MOV  AL,控制字
OUT  DX,AL  ;数据帧格式-->通信线路控制寄存器③

MOV  DX,2F9H
MOV  AL,0000 00001B;接收中断,D0设置为1
OUT  DX,AL;中断允许命令字④

MOV  DX,2FCH
MOV  AL,0000 1000B;除了中断D3=1,内环自发自收D4=1以外均为00H
OUT  DX,AL;设置MODEM控制寄存器⑤
  • 如果是无联络线3线连接(全双工),收发双方采用的方式一起写入中断允许命令字
  • 如果是无联络线单工通信,看清题目要求的收还是发,不可以同时写。

如果是要求写子程序

I8250 PROC
			MOV  DX,3FBH
      MOV  AL,80H
      OUT  DX,AL  ;80H-->通信线路控制寄存器①

      MOV  DX,3F9H
      MOV  AL,00H ;分频系数为0030H的高8位--9
      OUT  DX,AL

      MOV  DX,3F8H
      MOV  AL,30H ;分频系数为0030H的低8位--8;通信速率-->除数寄存器②
      OUT  DX,AL

      MOV  DX,3FBH
      MOV  AL,控制字
      OUT  DX,AL  ;数据帧格式-->通信线路控制寄存器③

      MOV  DX,3F9H
      MOV  AL,0000 00110B
      OUT  DX,AL;中断允许命令字④

      MOV  DX,3FCH
      MOV  AL,00H;除了中断D3=1,内环自发自收D4=1以外均为00H
      OUT  DX,AL;设置MODEM控制寄存器⑤
      RET
I8250 ENDP
4.(选学)8250 采用中断收发字符, 应采取哪些措施?

⑴中断允许寄存器相应位置 1 – 8250

⑵MODEM 控制寄存器 D3 = 1,即 OUT2 = 0 打通 8250 的中断请求通道。–8250

⑶8259 相应中断屏蔽位置 0 (主 8259 IR3IR4)— 8259

⑷CPU 处于开中断(STI)— CPU

变形:某同学发现自己的串行通信程序不能正常运行,在跟踪调试自己编写的程序时,发现 CPU 始终不能进入接收中断服务程序,但经过老师的测试发现硬件一切正常,帧格式和波特率也正确,请帮助该同学分析他编写的程序出错的原因可能有哪些?

  • 8250中断允许寄存器相应位 置1
  • OUT2非=0
  • 开放8259A的IR4中断屏蔽
  • STI

编写程序正确,中断服务程序始终没被执行?

  • 8259相应中断屏蔽位没有置0
  • CPU处于关中断
5.8250 应用编程

在发送数据前,读通信线状态寄存器(状态口)获取发送保持寄存器(数据口 D5)是否空闲;

在接收数据前,读通信线状态寄存器(状态口)获取接收缓冲寄存器(数据口 D0)是否已收到1帧数据。

①查询状态。只有当 D0=1 时, CPU 才能读数; 只有当 D5=1 时,CPU 才能写数据。

在这里插入图片描述

②发送接收字符。发送的字符 →发送保持寄存器 OR 接受缓冲寄存器 → 接受的字符

在这里插入图片描述

例1:编写程序段,利用主串口查询方式发送一个“B”

SCANT:MOV DX,3FDH
			IN  AL,DX
			TEXT AL,0010 0000B
			JZ SCANT
			MOV DX,3F8H
			MOV AL,'B'
			OUT DX,AL
X X X X X X X X
0 0 1 0 0000
0 0 X 0 0000

例2:编写程序段,辅串口查询方式接收一个字符

SCANT:MOV DX,2FDH
			IN  AL,DX
			TEXT AL,0000 0001B
			JZ SCANT
			MOV DX,2F8H
			IN AL,DX
X x x x x x x x
0 0 0 0 0 0 0 1
0 0 0 0 0 0 0 x

U10 并行 I/O 接口(8255A)

1.8255A 的内部结构

在这里插入图片描述

什么是端口?已芯片8255A为例,说明端口的分类。

  • 在接口电路中,能与CPU交换信息的寄存器

    数据端口:A口、B口、C口

    控制端口:C口

    状态端口:C口

  • C口比较特殊,它特的特点主要有:
  1. 作为数据口,可分为两个独立的4位口,(C上、C下)使用;
  2. 1方式和2方式时,C口的部分引脚作为A、B口的固定联络信号线
  3. 1方式和2方式时,C口作为状态口使用
  4. C口的引脚可以用按位置、复位命令进行按位控制。

包括(看附录):

在这里插入图片描述

2.8255 的外部引脚
(1)读写控制信号的确定

在这里插入图片描述

  • cs非=0
A1 A0
00(0)A
01(1)B
10(2)C
11(3)控制
  • 初始化操作:往控制口送控制字,A1A0=11
(2)8255 与系统总线的对接

在这里插入图片描述

3.8255 初始化编程基础
(1)端口地址(A\B\C\控制口)

1.端口不固定,关注题目所给。

按照A\B\C\控制口的顺序。

2.给电路图,问A\B\C\控制口地址分别是多少?

在这里插入图片描述

例题1.

在这里插入图片描述

XX的位置00、01、10、11依次往下写,A\B\C\控制口–>60H—63H

例题2.计数器的端口地址分别是多少?

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

(2)★工作方式(0 或 1)
工作方式工作方式的名称适用于端口 … …
方式 0:基本型入/出A 口、B 口、C 口
方式 1:选通型入/出A 口、B 口
方式 2:双向传输A 口
8255A 三个数据端口分别可以工作在哪些工作方式?

A 口可工作在方式 0 、1、2。

B 口可工作在方式 0 、1。

C 口可工作在方式 0。

  • 如何判断是0还是1?
工作方式怎么区分?
方式0没有联络线
方式一有联络线 STB非、ACK非、IBF、OBF非

在这里插入图片描述

8255A的接口电路如图,端口地址分别为:80H和83H

在这里插入图片描述

MOV AL,90H
OUT 83H,AL
IN AL,80H
SHR AL,4
NOT AL
OUT 81H,AL
  • A口的工作状态:0输入(没有联络线)

  • B口的工作状态:0输出

  • 此电路可以实现什么功能?

用4个LED,L3~L0反应4个开关K3~K0的状态,相应开关合上则灯亮,断开则灯灭。

某外扩8255A连线如下图所示,分别判断ABC口的工作方式(看CS非的端口对应的是什么),以及是输入还是输出?

在这里插入图片描述

  • A口:60H,方式0输入(没有联络线–方式0)(开关给‘0’、‘1’的输入信号)
  • B口:61H,方式0输出(没有联络线–方式0)(显示结果‘亮’、‘灭’的输出结果)
  • C口:62H,未使用
  • 控制口:63H

初始化子程序:

I8255A PROC
				MOV AL,1001 0000B
				OUT 63H,AL
				RET
I8255A ENDP

通过开关控制LED的亮灭:

在这里插入图片描述

IN AL,60H
NOT AL
MOV AL,63H
OUT DX,AL

例题3:

在这里插入图片描述

  • A口:208H,方式1输入(没有联络线–方式0)(开关给‘0’、‘1’的输入信号)
  • B口:209H,方式0输出(没有联络线–方式0)(显示结果‘亮’、‘灭’的输出结果)
  • C口:20AH,未使用(注意,A口方式1输入时,PC3,PC4,PC5输入输出方向不受编程控制(可以查附录),因此编程直接置0,认为是无关项)
  • 控制口:20BH
(3)中断 or 查询?
工作方式工作方式的名称适用于端口 … …
方式 0:基本型入/出A 口、B 口、C 口无条件传送
方式 1:选通型入/出A 口、B 口查询or中断
方式 2:双向传输A 口查询or中断

数据口工作在方式0时,CPU采用无条件传送方式

数据口工作在方式1、2时,CPU用(1)查询方式(2)中断方式

考点

(1)查询方式

方式1(选通行)查询的联络线问题

选通型输入:

IBF(Input Bufffer Full)输入缓冲器满

STB非(Strobe)选通信号输入

选通型输出:

OBF非(Output Buffer Full)输出缓冲器满

ACK非(Acknowledge)确认应答

在这里插入图片描述

  • 方式1输出,查询OBF非=1时(表示输出缓冲器空),表示CPU可以用OUT指令向A或B口写数据以送给外设。

  • 方式1输入,查询IBF=1时(表示输入缓冲器满),表示CPU可以继续用IN指令从A或B口读入外设送来的数据。

  • 无论是输入还是输出,都查询连接与门引脚的线的端口,只有等于1时,才可以输入或者输出

(2)中断方式:

在这里插入图片描述

  • 中断看虚线对齐的,未连线的端口,与门输出的端口作为中断请求信号线。
4.8255 初始化编程

①方式选择命令字→控制口

在这里插入图片描述

②工作在方式 1、2 时(方式 0 不需要):允许中断(或禁止中断==>查询方式)的命令字→控制口

在这里插入图片描述

  • 步骤 1 是肯定需要的,步骤 2 可能需要重复 n 次(n=0,1,2)
1.直接寻址(当端口地址=8位XXH时使用)
MOV  AL,控制字
OUT  控制口,AL
2.DX间接寻址(当端口地址>8位XXXH时使用)
MOV  DX,控制口
MOV  AL,控制字
OUT  DX,AL
  • 8250同理
D0=0查询
D0=1中断
5.8255 读、写数据口的数据
(1) 读:
  • 大于8位
MOV  DX,控制口
IN   AL,控制字
OUT  DX,AL
  • 等于8位
MOV  AL,控制字
OUT  DX,AL
(2)写:
  • 大于8位,DX间接寻址
MOV  DX,控制口
IN   AL,DX
  • 等于8位,直接寻址
IN   AL,控制口
  • 送了1次0AH,送了两次71H?

  • 1-0变换NOT AL

  • 移位B0–B3—>B4–B7 SAL AL,4

U11 可编程定时器计数器(8254)

1.8254 的内部结构
  • 计算机系统中采用可编程定时/计数器I8253和I8254.

  • 一片8254芯片有4个端口:1个控制口,3个数据口(计数器)。

  • 8254内部集成了3个16位的计数器,每个计数器有6种工作方式(0~5),两种启动方式(软件启动和硬件启动)计数初值可设置为二进制BCD码(十进制)。最高工作频率10兆

image-20231215081858974

计数器:每个计数器对外有3条信号线:

  • GATE~控制信号
  • CLK~计数脉冲输入
  • OUT~计数器输出
2.(选学)计数器内部结构
image-20231215082135913

内部数据线:图一的橘色部分

1.初始化编程时:计数初值–》计数初值寄存器–〉减1计数器

当GATE=1时,开始计数,计数器不断减1,当计数值减到0(或某个值由工作方式确定)时,OUT有输出。

2.收到锁存命令后:当前计数值–》计数值锁存器(以便读出检查),而计数器仍然做减1计数。

3.8254 的外部引脚
  • 读写控制信号的确定
image-20231215082013149
  • 8254 与系统总线的对接
image-20231215083150668
4.PC 系统 8254 的三个计数器的作用
计数器 0用于定时(约 55ms)日时钟中断。
计数器 1用于动态存储器刷新定时。
计数器 2用于为音箱系统产生方波送至扬声器。
  • 计数器 1 不允许用户使用
5.8254 初始化编程基础

每个计数器有6种工作方式,均在CLK下降沿计数一次。

主要区别:输出波形不同

  • 端口地址

  • 计数初值 N

N=fclk/fout=Tout/Tclk

f=1/T

1K=10^3
1M=10^6
1G=10^9

image-20231215082209339

  • 工作方式(2 或 3)

6种工作方式:0~5

2种启动方式:软件启动(其他)和硬件启动(1、5)

  • 方式2:脉冲发生器。产生连续负脉冲,用于计数器减1计数,初值自动充装。
image-20231215085138797

输出的正负脉冲比N-1:1

  • 方式3:方波发生器。减2计数,初值自动充装。
image-20231215085253862

N=偶数时,输出1:1连续波形

N=奇数时,正负脉冲比N+1:N-1

装入的及重新装入的初值均为写入的初值减1

image-20231215085916015
6.8254 初始化编程

①初始化编程

②读取计数值

在这里插入图片描述

对8254一个计数器的初始化编程步骤:

①向控制寄存器写入方式控制字

目的:选择一个计数器,并确定其工作方式和计数值(计数初值)的读/写顺序。

②向选择的计数器写入计数初值。

  • 注意:如果方式控制字D0=0,则初值应该是二进制,否则初值应该是BCD码数。
  • 如果题目无特殊要求,就先低8后高8、二进制
BCD码和二进制的区别

在这里插入图片描述

文章来源:https://blog.csdn.net/m0_61870512/article/details/135711662
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。