文章目录
- 1. 内存容量
- 2. ASCII码
- 3. 寄存器
- 4. 算术指令
- 5. 转移指令
- 6. 数据存储定义
- 7. 半导体存储器
- 8. 2732A 芯片
- 9. I/O 端口的编址方式
- 10. CPU 的传送方式
- 11. 8289A 的中断优先权控制方式(5 种)
- 12. USB 使用的电缆
- 13. 带符号数的表示方法
- 14. BCD 码
- 15. 算术指令的注意点
- 16. MOV AX , [BX]
- 17. 位处理指令
- 18. IN 21H 调用 DOS 功能
- 19. 8255A 的工作方式
- 20. 8251A 芯片中实现并行数据转换为串行数据的部件
- 21. 操作指令
- 22. PTR 类型(重新)指定运算符
- 23、 8086 CPU 响应可屏蔽中断 INTR 的条件
1. 内存容量
22 = 4 = 4H
23 = 8 = 8H
24 = 16 = 10H
25 = 32 = 20H
26 = 64 = 40H
27 = 128 = 80H
28 = 256 = 100H
29 = 512 = 200H
210= 1024 = 1K = 400H
地址线为16位,则,容量为 = 216 = 26 KB = 26 x 8 Kb
M 位地址总线,N 位数据总线的半导体存储器芯片的容量为= 2 M x N 位(b)
2. ASCII码
数据为 8 位,b7 位是奇偶校验位
3. 寄存器
8086微处理器中可供程序员使用的有 14 个 16 位寄存器
1) 8个通用寄存器:
- 4 个数据寄存器:累加器 AX,基址寄存器 BX,计数寄存器 CX,数据寄存器 DX。
这 4 个寄存器可以存放 8 位 或 16 位 数据 - 另外 4 个:堆栈指针寄存器 SP,基址指针寄存器 BP,源变址寄存器 SI,目的变址寄存器 DI。
这4个寄存器只能按 16 位进行存取操作
2) 指令指针 IP:
16 位专用寄存器,它指向当前需要取出的指令字节。内部存储的是指令的段内地址偏移量。程序员不能对IP进行存取操作。
3)标志寄存器 FR:
有意义的有 9 位,3 位控制位,6 位状态位
4) 段寄存器
存放段的起始地址
代码段寄存器 CS,堆栈段寄存器 SS,数据段寄存器 DS,附加段寄存器 ES
4. 算术指令
20 条算术指令:
- 加法 :ADD 加法,ADC 带进位的加法,INC 增量,AAA 加法的ASCII码修正,DAA 加法的十进制修正
- 减法:SUB 减法,SBB 带借位的减法,DEC 减量,NEG 求补,AAS 减法的ASCII码修正,DAS 减法的十进制修正,
- 乘法:MUL 无符号数乘法,IMUL 整数乘法,AAM 乘法的ASCII码修正
- 除法:DIV 无符号数除法,IDIV 整数除法,AAD 除法的 ASCII 码修正,CBW 字节转换为字,CWD 字转换为双字
5. 转移指令
- 无条件转移指令:CALL 调用过程,RET 从过程返回,JMP 转移
- 条件转移:
J= JUMP 跳转
A= Above 高于
B= Below 低于
N= NOT
E= Equal 相等
Z= Zero 零
G= Greater 大于
L= Less 小于
C= Carry 有进位(借位)
JNP,JPO =Parity 奇偶校验 ,PF =Pariy Flag 奇偶校验位,PF为 0/奇状态,转移
JP,JPE =Pariy ,PF为 1/偶状态,转移
JNO,不溢出,转移
JO,溢出,转移
JNS,SF 为 0,转移。SF 符号位
JS,SF 为 1,转移 - 重复控制指令
LOOP,循环
LOOPE/LOOPZ,等于/为 0,循环
LOOPNE/LOOPNZ,不等于/不为 0,循环
JCXZ,寄存器 CX=0,则循环 - 中断指令
INT,中断
INTO,溢出中断
IRET,中断返回
6. 数据存储定义
【变量】 命令 参数1,参数2,…【;注释】
DB,DW,DD,DQ,DT
数存储:高字节存放在高地址单元,低字节存放在低地址单元
7. 半导体存储器
- 随机存取存储器 RAM
(1)静态 SRAM:功耗大,容量小,存取速度较快,不需要刷新电路
(2)动态 DRAM:集成度高,功耗低,存取速度较慢,容量大,需要刷新电路,一般微机系统中的内存都采用DRAM
8. 2732A 芯片
- Intel 2732A 芯片是一种 4K x 8 位的 EPROM (可擦除可编程 ROM)
- 12 条地址线 A11 ~ A0
- 8 条数据线 O7 ~ O0
- 2 条控制线 CE# 和 OE#
- 6 种工作方式
9. I/O 端口的编址方式
-
独立编址方式 (专用的 I/O 编址方式)
特点:
(1) 存储器和 I/O 端口在两个独立的地址空间中,I/O 端口的读、写操作由硬件信号 IOR# 和 IOW# 来实现,访问 I/O 端口用专用的 IN 和 OUT 指令(IOR# 和 IOW# 由 CPU 的 M/IO# 、RD# 与 WR# 信号组合产生)
优点:
(1)I/O 端口的地址码较短,译码电路简单,存储器和 I/O 端口的操作指令不同,程序比较清晰
(2)存储器和 I/O 端口的控制结构互相独立,可以分别设计
缺点:
(1)需要有专用的 I/O 指令,而这些 I/O 指令的功能一般不如存储器访问指令丰富,所以程序设计的灵活性较差
-
存储器映象编址(统一编址)
特点:
(1)存储器和 I/O 端口共用统一的地址空间
(2)一部分地址空间分配给 I/O 端口以后,存储器就不能再占用这一部分的地址空间
优点:
(1)任何对存储器数据进行操作的指令都可用于 I/O 端口的数据操作不需要专用的 I/O 指令,从而使系统编程比较灵活
(2)I/O 端口的地址空间是内存空间的一部分,这样,I/O 端口的地址空间可大可小,从而使外设的数目几乎不受限制
缺点:
(1)I/O 端口占用了内存空间的一部分,显然内存空间必然减少,影响了系统内存的容量
(2)访问 I/O 端口同访问内存一样,由于访问内存时的地址长,指令的机器码也长,执行时间明显增加
-
8086、8088、80286 采用了独立编址方式
8031 采用了统一编址方式
10. CPU 的传送方式
在微机系统中,数据主要在 CPU 、存储器 和 I/O 接口之间传送。数据传送控制方式主要有两种,即 程序控制传送方式 和 DMA 传送方式
1. 程序控制传送方式
以 CPU 为中心,数据传送的控制来自 CPU ,通过预先编制好的输入或输出程序(传送指令和 I/O 指令)实现数据的传送
- 无条件传送方式(同步传送方式)
主要用于外设的定时是固定的且是已知的场合,外设必须在微处理器限定的指令周期内准备就绪,并完成数据的接收或发送。 - 查询传送方式(异步传送方式)
传送步骤:
(1)通过执行一条输入指令,读取所选外设的当前状态
(2)根据该设备的状态决定程序的去向,如果外设正处于 “忙” 或 “未准备就绪” ,则程序转回重复检测外设,如果外设处于 “空” 或 “准备就绪” ,则发出一条输入/输出指令,进行一次数据传送 - 中断传送方式
在中断传送方式中,通常是在程序中安排好在某一时刻启动某一台外设,然后 CPU 继续执行其主程序,当外设完成数据传送的准备后,向 CPU 发出 “中断请求” 信号,在 CPU 响应中断的条件下,现行主程序被 “中断” ,转去执行 “中断服务程序” ,在 “中断服务程序” 中完成一次 CPU 和 外设 之间的数据传送,传送完成后仍返回被中断的主程序,从断点处继续执行
2. DMA (直接存储器存取)传送方式
DMA 是一种不需要 CPU 干预也不需要软件介入的高速数传送方式
(一)DMA 操作的 3 种基本方法
- 周期挪用
利用 CPU 不访问存储器的那些周期来实现 DMA 操作,此时 DMAC 可以使用总线而不用通知 CPU 也不会妨碍 CPU 的工作 - 周期扩展
使用专门的时钟发生器/驱动器电路,当需要进行 DMA 操作时,由 DMAC 发出请求信号给时钟电路,时钟电路把供给 CPU 的时钟周期加宽,而提供给存储器和 DMAC 的时钟周期不变。 - CPU 停机方式
当 DMAC 要进行 DMA 传送时,DMAC 向 CPU 发出 DMA 请求信号,迫使 CPU 在现行的总线周期(机器周期)结束后,使其地址总线、数据总线 和 部分控制总线 处于高阻态,从而让出总线的控制权,并给出 DMA 响应信号。
(二)DMA 的传送方式
- 单字节传送方式
- 成组传送方式
- 请求传送方式
11. 8289A 的中断优先权控制方式(5 种)
- 完全嵌套方式(默认方式)
(1) 这是一种按固定的优先级别高低来管理中断的方式
(2)IR0固定为最高级,IR7为最低级
(3)如果 8259A 初始化未对优先权管理方式编程时,则 8259A 就自动进入这种方式 - 自动循环方式
这是一种中断源的中断优先级别将随着中断响应过程的结束而随时跟着改变的中断管理方式。 - 特殊循环方式
这是一种可以通过主程序或中断服务程序中发特殊循环方式操作命令来指定某个中断源的优先级别为最低级,而其余中断源的优先级别也随之循环变化的中断优先级管理方式 - 特殊屏蔽方式
通过操作命令 OCW3 来实现特殊屏蔽方式 - 查询排序方式
这是一种用软件查询方法来响应与 8259A 相连接的 8 级中断请求
12. USB 使用的电缆
USB 的主要规范:
(1)数据传输速度有两种,打印机等设备的 12 Mb/s,键盘、鼠标等的 1.5 Mb/s
(2)最多可连接 127 个外设
(3)连接点的距离可达 5 米
(4)连接电缆种类有两种规格,传送速度为 12 Mb/s 的用带屏蔽双扭线,传输速度为 1.5 Mb/s 的可用普通无屏蔽双扭线。连接器为 4 芯插针,其中 2 条用于信号连接,2 条用于电源馈电线路连接
13. 带符号数的表示方法
[X] 表示机器数,将符号数码化后的数是计算机能识别的数
" 0 " 表示正号," 1 " 表示负号
- 原码表示法
符号位用 “0 ” 和 “ 1 ” 表示的机器数 - 反码表示法
正数的反码表示与原码相同,负数的反码表示为:原码除符号位外,数值位按位取反 - 补码表示法
原码和反码中 “ 0 ” 都有两种表示方法
原码:000000002 和 100000002
反码:000000002 和 111111112
正数的补码表示和原码相同,负数的补码表示为:原码除符号位外,数值位逐位求反再加 1 。
几种表示方法的表示范围(8位数):
(1)原码:-28-1 ~ 28-1 ( -127 ~ +127) 255个数
(2)反码:-28-1 ~ 28-1 ( -127 ~ +127) 255个数
(3)补码:-28-1 ~ 28-1 ( -128 ~ +127) 256个数
14. BCD 码
用 4 位二进制数来表示 1 位十进制数,
15. 算术指令的注意点
- 加减运算指令 ADD、ADC、SUB、SBB、CMP 可用立即数作为一个源操作数
- 除 CBW (字节转换为字)和 CWD (字转换为双字)两条指令外,其余算术指令都影响标志位
- 增量指令 INC 和减量指令 DEC 不影响标志位 CF (进位标志位)
- CMP 指令执行减法操作,但结果不回送,只根据结果修改标志寄存器
- 除法指令 DIV 和 IDIV 的操作过程为:
[AX]/源操作数(字节)------[AH] 为余数,[AL] 为商
[DX]:[AX]/源操作数(字)--------[DX] 为余数,[AX] 为商
16. MOV AX , [BX]
- MOV 是指令,AX作为目的操作数,[BX] 作为源操作数
- [BX] 表示内存中地址偏移量为 BX 中存储的数值的存储器单元
- DS 为数据段,CS 为代码段,SS 为堆栈段,ES 为附加段
17. 位处理指令
- 逻辑运算指令
AND、OR、NOT、XOR、TEST - 移位指令
SHL、SAL、SHR、SAR - 循环移位指令
ROL、ROR、RCL、RCR
18. IN 21H 调用 DOS 功能
DOS (Disk Operation System)和 BIOS(Basic Input and Output System)是为用户提供的两组系统服务程序
-
BIOS 是 IBM PC/XT 的基本 I/O 系统,负责管理系统的测试程序、初始化引导程序、一部分中断矢量装入程序以及外部设备的服务程序,用户可以直接调用
-
DOS 是 IBM PC/XT 的操作系统,负责管理系统的所以资源,协调微机的操作,其中包括大量的可供调用的服务子程序,完成设备的管理和磁盘文件的管理
-
用户控制 PC 机硬件的方法:
高级语言–>调用 DOS 程序 --> 使用 BIOS 程序 --> 直接访问硬件 -
DOS 功能/ BIOS 功能调用是调用系统内核子程序
-
DOS 功能与BIOS 功能均通过 中断方式调用
-
DOS 为程序设计者提供了许多可直接调用的功能子程序,这些功能子程序的主要功能是:
(1)磁盘的读写、控制
(2)内存管理、文件操作、目录操作
(2)基本输入输出管理(如键盘、打印机、显示器、磁带等管理),另外还有时间、日期等子程序
-
调用方法
为了使用方便,所有子程序已按序编号–功能号,从 00H ~ 68H,调用方法:
(1)入口参数送指定寄存器
(2)功能号送 AH
(3)INT 21H
有的子程序不要入口参数,但大部分需要将参数送人指定地点 -
基本功能调用
功能号 | 作用 |
---|---|
1 | 键盘输入 |
5 | 打印输出 |
6 | 直接控制台输入/输出 |
9 | 输出字符串 |
0AH | 字符串输入 |
2B | 日期设置 |
(1)键盘输入 (1 号调用)
功能:等待从标准输入设备输入一个字符并送人寄存器 AL,不需要入口参数
例如:
MOV AH , 1
INT 21H
执行上述指令,系统将扫描键盘,等待有键按下,一旦有键按下,就将键值(相应字符的 ASCII 码值)读入,先检查是否是 Ctrl-Break ,若是,则退出命令执行;否则将键值送人 AL 寄存器,同时将这个字符显示在屏幕上
(2)打印输出(5 号调用)
功能:把 DL 中的字符输出到打印机上
例如:
MOV DL, ‘A’
MOV AH, 5
INT 21H
(3)直接控制台输入/输出(6 号调用)
功能:可以从标注输入设备输入字符,也可以向屏幕输出字符。但不检查 Ctrl-Break
例如:
当 DL = FFH 时,表示从键盘输入,
- 若标志 ZF = 0 ,表示 AL中为键入的字符值
- 若标志 ZF = 0 ,表示 AL 中不是键入的字符值,即尚无键按下
当 DL != FFH 时,表示向屏幕输出,DL 中为输出字符的 ASCII 码,
MOV DL , 0FFH
MOV AH, 6
INT 21H
即为从键盘输入字符
(4)输出字符串(9 号调用)
调用时,要求 DS : DX 必须指向内存中一个以 “ $ ” 作为结束标志的字串中每一个字符(不包括结尾标志 $ )都输出显示或打印
例如:
DATA SEGMENT
BUF DB ‘ABCDEFGHIJ$’
.
.
.
DATA ENDS
CODE SEGMENT
.
.
MOV AX, DATA
MOV DS, AX
.
.
MOV DX, OFFSET BUF
MOV AH, 9
INT 21H
.
.
CODE ENDS
执行本程序,屏幕将显示:ABCDEFGHIJ
(5)字符串输入(0AH 号调用)
从键盘接收字符串到内存输入缓冲区。要求事先定义一个输入缓冲区,缓冲区内第一个字节指出缓冲区能容纳的字符个数,不能为零。第二个字节保留以用作填写输入的字符个数。从第三个字节开始存放从键盘上接收的字符。若实际输入的字符数少于定义的字节数,缓冲区内其余字节填零,若多于定义的字节数,则后来输入的字符丢掉,且响铃
调用时,要求 DS : DX 指向输入缓冲区
例如:
DATA SEGMENT
BUF DB 100 ;缓冲区长度
DB ? ;保留为填入实际输入的字符个数
DB 100 DUP (?) ; 定义 100 个字节存储空间
.
.
DATA ENDS
CODE SEGMENT
.
.
MOV AX , DATA
MOV DS , AX
.
.
MOV DX , OFFSET BUF
MOV AH , 10
INT 21H
.
.
CODE ENDS
(6)日期设置(2BH 调用)
调用时, CX : DX 中必须有一个有效的日期,CX 中存放年号(1980 ~ 2099),DH 中存放月号(1 ~ 12),DL 中放日号,若日期有效,设置成功,AL = 0 ;否则 AL = 0FFH
例如:下列程序可把日期设置为 2000 年 10 月 1 日
MOV CX ,2000
MOV DH ,10
MOV DL , 1
MOV AH , 2BH
INT 21H
19. 8255A 的工作方式
- 可编程并行接口芯片 8255A
由 4 部分组成
(1)数据总线缓冲器
(2)三个 8 位端口 PA、PB、PC
(3) A 组和 B 组的控制电路
(4)读/写控制逻辑
引脚 | 功能 |
---|---|
CS# | 片选信号(输入) |
RD# | 读信号(输入) |
WR# | 写信号(输入) |
A1 、A0 | 片内寄存器选择信号(输入) |
D7 ~ D0 | 与 CPU 侧连接的数据线(双向) |
PA7 ~ PA0 | A 口外设数据线(双向) |
PB7 ~ PB0 | B 口外设数据线(双向) |
PC7 ~ PC0 | C 口外设数据线(双向) |
RESET | 复位信号(输入) |
工作方式 | 说明 (数据端口) |
---|---|
方式 0 | 基本输入输出 (A、B、C) |
方式 1 | 选通输入输出 (A、B) |
方式 2 | 双向选通输入输出 (A) |
- 方式 1 的联络信号
(1)输入:
| 联络信号 | 说明 |
|–|--|
| STB# | 输入的选通信号,低电平有效,外设提供 |
IBF | 输入缓冲器满信号,高电平有效,8255A 输出到外设
INTR | 中断请求信号,高电平有效,8255A 发出到 CPU
INTE | 中断允许信号,PC
输入过程(A 口):
当外设准备好数据,在送出数据的同时,送出一个选通信号 STB# 。8255A 的 A 口数据锁存器在 STB# 下降沿控制下将数据锁存。8255A 向外设送出高电平的 IBF ,表示锁存数据已完成,暂时不要再送数据。如果 PC4 = 1 (INTEA = 1 ),这时就会使 INTR 变成高电平输出,向 CPU 发出中断请求。 CPU 响应中断,执行 IN 指令时,RD# 信号的下降沿清除中断请求,而 RD# 结束时的上升沿则使 IBF 复位到零。外设在检测到 IBF 为零后,可以开始输入下一个字节。
(2)输出:
联络信号 | 说明 |
---|---|
OBF# | 输出缓冲器满信号,低电平有效,8255A 输出 |
ACK# | 响应信号,低电平有效,外设送来 |
INTR | 中断请求信号,高电平有效,8255A 发出到 CPU |
INTE | 中断允许信号, |
20. 8251A 芯片中实现并行数据转换为串行数据的部件
一、数据传送
- 并行传送
数据在多条并行 1 位宽的传输线上同时由源传送到目的。以 1 字节为例,在并行传送中, 1 字节数据通过 8 条并行传输线同时由源传送到目的 - 串行传送
数据在单条 1 位宽的传输线上,一位一位的按顺序分时传送,以 1 字节为例,在串行传送中, 1 字节的数据要通过一条传输线分 8 次由低位到高位按顺序一位一位的传送 - 并行传送与串行传送的比较
(1)从距离上看。并行通信适宜于近距离的数据传送,通常小于 30m,而串行通信适宜于远距离传送,可以从几米到数千公里
(2)从速度上看。在短距离内,并行接口的数据传输速度显然比串行接口的传输速度高得多。另一方面串行和并行数据传送速率与距离成反比
(3)从设备、费用上看。对远距离通信而言,串行通信的费用显然会低得多。另一方面串行通信还可以利用现有的电话网络来实现远程通信,降低通信费用
二、串行通信
串行通信又分为 同步通信 和 异步通信
异步通信
异步通信中,CPU 与外设之间有两项约定:字符格式和波特率
- 字符格式
(1)1 个起始位,低电平
(2)5 ~ 8 个数据位(如标准 ASCII 码,则为 7 位)
(3)1 个奇偶校验位(作为检错用)
(4)1 ~ 2 个终止位(停止位),高电平 - 波特率
指单位时间内传送二进制数据的位数,以 位/s 为单位,它是衡量串行数据传送速度快慢的重要标志和参数
假如数据传送速率是 120 字符/s ,而一个字符格式包含 10 位二进制数据(1 位起始位,1 位终止位,7 位数据位,1 位奇偶校验位),则传送的波特率为
10 X 120 = 1200 位/s = 1200 波特
而每个数据位的传送时间 Td 即为波特率的倒数:
Td = 1/1200 = 0.833ms
异步通信的传送速度一般在 50 ~ 19200 波特之间,常用于计算机到 CRT 终端和 字符打印机之间的通信
同步通信
在异步传送中,每一个字符要用起始位和终止位作为字符开始和结束的标志,占用了一些时间,因而在数据块传送时,为了提高速度,就要设法去掉这些标志,而采用同步传送。此时,在数据块开始处要用同步字符来指明。
同步传送速度高于异步传送速度,可达 500k 波特。但它要求有时钟来实现发送端及接收端之间的同步,故硬件电路比较复杂。通常用于计算机之间的通信或计算机到 CRT 等外设之间的通信等
三、 串行通信的传送方向
通常串行通信数据在两个站(或设备) A 与 B 之间传送,有单工、半双工、全双工 三种传送
- 单工(Simplex)。仅能进行一个方向的传送,即 A 只能作为发送器, B 只能作为 接收器
- 半双工(Half-Duplex)。能交替的进行双向数据传送,但两设备之间只有一根传输线,因此两个方向的数据不能同时进行
- 双全工(Full-Duplex)A、B 之间有两条传输线,能在两个方向上同时进行数据传送
四、信号的调制与解调
- 数字信号通过远距离载波电话线传送后,信号会发生畸变。
- Modem 可分为三类: 调幅、调频、调相
调频方式是常用的一种调制方式 - 调频时,数字信号 “ 1 ” 和 “ 0 ” 被调制成易于鉴别的两个不同频率的模拟信号。这种形式的调制称为 频移键控 FSK
五、串行接口原理
以通用异步收发器 UART 为例,
UART :Universal Asynchronous Receiver/Transmitter,是用硬件实现串行通信的通信接口电路
- UART 由三部分组成
(1)接收器:用来把串行码转换位并行码
(2)发送器:用来把并行码转换位串行码
(3)控制器:用来接收 CPU 的控制信号,执行 CPU 所要求的操作,并输出状态信息和控制信息。 - UART 功能
UART 的功能既能接收异步串行输入码并将其转换为 CPU 所需的并行码,也能将 CPU 内部的并行码转换为串行码输出
六、 可编程通信接口 8251A (USART)
Intel 8251A USART 是通用同步/异步接收/发送器,是专为 Intel 微处理器设计的,可用作 CPU 和串行外设的接口电路
- 基本性能
(1)可用于同步和异步传送
(2)同步传送:
(3)异步传送
(4)可产生中止符
(5)波特率
(6)完全双工、双缓冲器发送和接收
(7)误差检查
(8)与 Intel 8080、8085、8086、8088 CPU 兼容 - 结构
(1)数据总线缓冲器和读写控制逻辑
(2)发送器和接收器以及控制电路
(3)MODEM 控制电路,产生 RS-232C 有关的信号
21. 操作指令
- AND 逻辑“ 与 ” :有“ 0 ”为“ 0 ”,同“ 1 ”为“ 1 ” ;用来清除或保留目的操作数中某些位
- OR 逻辑“ 或 ” :有“ 1 ”为“ 1 ”;用来进行数的组合
- XOR 逻辑" 异或 " :同“ 0 ”异或,其值不变;同“ 1 ”相异或,其值取反;自身异或,则清零;用来将某位取反或保存不变
- TEST 测试:执行逻辑“ 与 ”操作,测试某一位是否为“ 1 ”
22. PTR 类型(重新)指定运算符
格式:类型 PTR exp
(1)类型:可以是:
变量 BYTE、WORD、DWORD、
标号 NEAR、FAR
名字、变量、标号
- 名字
名字有 文件名、标题名、段名、过程名、符号常量 等,它们都是程序员编程时按标识符规定来命名的,其中有些名字可在编程时引用,以方便编程
(1)段名 :是在源程序的定义语句中命名取定的
源程序在进行汇编连接时,系统分配给该段一个段基值,设为 2000H 。这时,段名就可以作为段基值 2000H 被引用
定义语句:
DATA SEGMENT
(2)过程名 :是在源程序的过程定义语句中命名的。
汇编连接时源程序时,系统分配给过程一个地址,即该过程第一条指令所在内存单元的地址,亦即该过程的入口地址,这也就是调用该过程的 CALL 指令中的目的地址
定义语句:
SORT PROC NEAR
过程名在汇编语言程序中可作为调用指令的目的地址使用,
(3)符号常量:符号常量是在源程序的符号常量定义语句中命名的,定义语句:
COUNT EQU 20 - 变量
变量是数据定义语句中的一项,它是由程序员在编程是按照标识符规定取定的
当在数据定义语句的第一项对变量命名后,该变量就是已定义了的,已定义的变量具有下列五种属性
(1)段属性
表示格式:SEG 变量
它表示变量所在的段基值
(2)偏移地址属性
表示格式: OFFSET 变量
它表示变量所在处的偏移地址
(3)类型属性
表示格式:TYPE 变量
它表示变量所在内存数据的类型(用 DB、DW、DD、DQ、DT 予以定义)
(4)长度属性
表示格式:LENGTH 变量
它表示变量所在数组的数据元素个数(用复制符 DUP 定义的数组)
(5)规模属性
表示格式:SIZE 变量
它表示变量所在数组的字节总数(DUP 定义的数组)
SIZE = LENGTH * TYPE - 指令性语句
指令性语句:由指令组成,是构成代码段的基础,只在代码段中才有,在数据段、附加段、堆栈段中是没有指令性语句的。
程序运行时,CPU 执行指令性语句中的指令,而指示性语句在程序运行时,是不由 CPU 执行的,指示性语句是用来指示汇编程序进行汇编操作的
指令性语句的格式为:
【 标号: 】 操作码 【 操作数 】 【 ; 注释】
其中操作码和操作数就是指令 - 标号
标号是程序员编程时按标识符规定取定的,并常常具有它在程序中的作用的含义,如 NEXT 、AGAIN 等,并且标号一定要用冒号(:)结尾
标号的三种属性:
(1)段属性
表示格式: SEG 标号
它表示标号所在段的段基值
(2)偏移地址属性
表示格式: OFFSET 标号
它表示标号所在位置的偏移地址,即该语句的指令的第一字节所在内存单元的偏移地址
(3)类型属性
表示格式:TYPE 标号
标号通常用作转移指令对的目的操作数(即转移去的目的)地址
类型有两种:
NEAR 时,TYPE = -1
FAR 时, TYPE = -2 - 变量和标号的类型的重新定义
(1)用 PTR 重新定义
格式:类型 PTR exp
如:
重新指定变量类型
BUFW DW 1234H ,5678H
下列指令均为合法的
MOV AX , BUFW ; AX <-- 1234H
MOV AL , BYTE PTR BUFW ; AL <-- 34H
(2)属性指定运算符 THIS
格式: THIS 类型
THIS 和 EQU 一起用来定义一个新变量,它与原变量具有相同的段属性和偏移地址属性,但类型属性不同
如:
BUFB EQU THIS BYTE
BUFW DW 1234H , 5678H
这样,BUFB 和 BUFW 具有相同的段属性和偏移地址属性,但 BUFB 的类型属性是字节,
注意:BUFB 语句和 BUFW 语句必须是紧邻的且 BUFB 语句在 BUFW 语句的前面
(3)命令 LABLE
格式: 变量/ 标号 LABLE 类型
23、 8086 CPU 响应可屏蔽中断 INTR 的条件
8086/8088 的中断源可分为外部中断和内部中断
外部中断
8086/8088 有两条中断请求线------- INTR 和 NMI ,8259A (PIC) 可供外设向 CPU 发送中断请求信号
- 可屏蔽中断 INTR
(1)中断请求过程
可屏蔽中断请求线 INTR 通常由 Intel 8259A 驱动,该控制器又同需要中断服务的设备相连,可由软件命令来控制 8259A 的工作。8259A 的主要任务是接收从与其相连的设备来的中断请求,并判断哪个提出请求的设备的 优先级最高,如果被选中设备的优先级比现行正接受服务的设备(如果有的话)的优先级高,就启动 8086/8088 的 INTR 线。
当 INTR 信号有效(为 “ H ”)时,CPU 将根据中断允许标志 IF 的状态而采取不同的措施。
.
如果 IF = “ L ”(置“ 0 ”),表示 INTR 线上的 中断屏蔽(masked)或禁止(disabled), CPU 将不理会该中断请求而处理下一条指令,由于 CPU 并不锁存 INTR 信号,因此 INTR 信号必需保持有效状态,直到接收到响应信号或撤销请求为止。
.
如果 IF = " H "(置 1),表示 INTR 线上的 中断开放,CPU 在完成现行正在执行的指令后,识别该中断请求,并进行中断处理。
中断允许标志 IF 可以用 STI (中断允许位置位)指令或 CLI (中断允许位置零)指令来设定。
也可以将命令写入 8259A ,从而有选择地屏蔽 INTR 线上的中断
CPU 响应中断的条件:
1). 外设有中断请求
2). 可编程中断控制器 8259A 接收中断并判断中断优先级,
3). 请求的优先级高于 CPU 正在执行的中断
4). 启动 8086 的 INTR 线(INTR 为 H )
5). 中断允许标志 IF = H
6). CPU 完成正在执行的命令
(2)中断响应过程
CPU 对 INTR 中断请求的响应过程是执行两个 INTA (中断响应)总线周期,