第一章
第二章
第三章
第四章
第六章
第七章
8253
8255
第八章-8259
第一章-数据表示与计算
一.按8位补码形式计算以下十进制数据s1和s2的和与差,并判断结果是否溢出。
(1)s1=+22, s2=-33
(2)s1=+100,s2=+30
答案:
原码:
符号位:0—正,1—负; 数值位:与数据真值相同;
反码
正数: 与原码相同;
负数: 符号位——1; 数值位——真值数值各位取反);
补码:
正数: 与原码相同;
负数: 符号位——1; 数值位——真值数值各位取反,末位加1;
二.分别将9876H看作为有符号数(补码表示)和无符号数,试写出其二进制真值。
答:
9876H=1001 1000 0111 0110B
若为有符号数,则为负数,按照补码规则:最高位为符号位,数值部分应各位取反,末位加1,其二进制真值为 - 110 0111 1000 1010B
(真值就是带符号位的机器数对应的真正数值,个人理解就是用正负号来代替符号位来表示机器数)
若为无符号数,则所有位均为数值位,其二进制真值为 + 1001 1000 0111 0110
三.请写出下列数据的16位BCD码表示。
(1) 1101 1011B
(2) 456D
(3) 2DAH
答:
(1)1101 1011B的十进制真值为219D,则其BCD为0000 0010 0001 1001B = 219H
(2)456D为十进制真值,则其BCD为0000 0100 0101 0110 B = 0456H
(3)2DAH的十进制真值为730D,则其BCD为0000 0111 0011 0000B = 0730H
四.请以8位编码形式写出下列二进制真值的原码和补码表示。
(1) +10010
(2) -1100
答:
(1)[+10010]原=0001 0010
[+10010]补=0001 0010
(2)[-1100]原=1000 1100
[-1100]补=1111 0100
第二章
1.为什么实地址模式下的每个逻辑段不能超过64KB?
解析 :
实地址模式是兼容8086CPU的一种存储器管理方式,分段方式管理存储器。
由于8086CPU可以直接保存和传送的有效地址只有16位,因此一个逻辑段的存储单元地址为16位的,容量也只能是64KB。
2.CPU进行运算时,判断运算结果正负的标志位是哪个? SF
3.若8086 CPU执行程序过程中,CS=4000H,IP=2200H,则接下来将要执行指令的物理地址是多少? 42200H (PA=(CS)×16 + IP)
4.访问堆栈段栈顶单元时,需要使用到哪个段寄存器? SS
5.根据8086存储器读、写时序图,回答如下问题:
(1)地址信号在哪段时间内有效?
(2)读操作与写操作的区别?
(3)访问存储器和访问IO有什么区别?
解析:
(1)地址信号在每个总线周期的第一个时钟周期T1内有效;
(2)读操作中T2状态周期主要用于地址/数据复用线的信息传送方向的转换缓冲;而写操作中则不需要。另外,读操作中的DT/R#信号、WR#和RD#信号也不同。
(3)存储器/IO控制信号M/IO#信号的状态不同;选中存储器为1,选中IO设备为0。
6.8086有哪些寄存器组?各有什么用途?
(1)通用寄存器
数据AX、BX、CX、DX:暂存数据和地址。
变址寄存器SI、DI:暂存地址,特定场合下可自动更改其值。
堆栈指针SP、BP:暂存地址,访问堆栈段中的单元。
(2)段寄存器CS、DS、ES、SS
存放逻辑段的段地址。
(3)专用寄存器
指令指针IP:暂存下一条将要执行指令的地址。
标志寄存器:反映指令的执行结果或控制CPU的某些功能。
7.8086系统中的物理地址和逻辑地址分别指的是什么?分段管理模式下物理地址是怎样计算的?
8086系统中的物理地址是指主存储器从第一个单元到最后一个单元按顺序编号所得到的地址。8086系统的主存储器为1MB,物理地址为20位。
8086系统中的逻辑地址是指在存储器分段管理模式下,采用“段地址:偏移地址”的形式描述的存储单元地址。
8086系统中的物理地址的计算:
物理地址PA = 段地址×16/10H + 有效地址EA
8.简述8086 CPU的主要控制信号M/IO#、ALE、INTR、INTA#的意义。
(1)M/IO#:存储器/IO控制信号,输出总线,区分CPU访问存储器还是I/O端口;
(2)ALE:地址锁存允许信号,输出总线,每个总线周期的T1周期有效,用于将地址/数据复用总线上的地址信息保存至地址锁存器中;
(3)INTR:中断请求信号,输入总线,引入可屏蔽中断请求信号;
(4)INTA#:中断响应信号,输出总线,低电平有效,用于响应INTR中断请求。
9.设某8086系统中有一个包含8个字的数据区,其起始地址为2100:2A10H,则该数据区最后一个字数据的物理地址是多少?。
8086系统中一个字数据为2个字节,占用两个存储单元,则8个字数据共占用16个存储单元。
该数据区中第一个字数据单元地址为:PA = 2100H×10H + 2A10H=23A10H
该数据区中最后一个字数据单元地址为:
PA = 2100H×10H + 2A10H + 7 × 2(0EH)= 23A1EH
10.请说明8086 CPU的地址数据复用总线是如何使用的。
8086 CPU的地址数据复用总线在每个总线周期的第一个时钟周期作为地址总线使用,送出16位地址,保存至地址锁存器中,由地址锁存器向外提供稳定的16位地址信号;从总线周期的第二个时钟周期开始,地址数据复用总线作为数据总线使用,负责传送CPU与外界交换的数据。
11.请说明8086 CPU的两种工作模式。
(1)最小模式是指系统中仅有8086 CPU一个处理器,由该处理器产生系统所需的所有控制信号;8086 CPU始终占用总线控制权,其他模块使用系统总线需要向CPU申请;
(2)最大模式是指系统中包含多个处理器,8086 CPU为主处理器,和其他协处理器(例如,数值计算协处理器8087、输入输出协处理器8089等)构成多处理器系统;总线控制逻辑由总线控制器8288产生和控制。
12.8086/8088 CPU在内部结构上由哪几部分组成?各部分具备哪些主要功能?
8086/8088 CPU由执行部件EU和总线接口部件BIU两部分组成。
(1)执行部件EU:负责所有指令的译码和执行; 获取指令代码,译码后产生控制信号; 根据运算结果修改标志寄存器状态位状态; 为BIU提供16位有效地址。
(2)总线接口部件BIU:负责CPU所有的访问操作; 从主存中读取指令;计算并形成所要访问主存的物理地址;访问主存、访问I/O,以获取数据或保存结果。
第三章
1.指令MOVAX, [BP][SI]的源操作数在: 堆栈段SS
2.指令MOV AX, BX的源操作数寻址方式是: 寄存器寻址方式
3.指令MOV AX,X的源操作数寻址方式是: 直接寻址方式(MOV AX,X 和 MOV AX,[X] 效果一样,符号地址加不加括号指的都是之前定义的单元)
4.以下指令中,执行后不影响ZF标志位状态的是: NOT
5.以下对伪指令的描述正确的是: 伪指令没有目标代码
第四章
1.输出单个字符的2号DOS功能调用的入口参数是: DL
2.能够将寄存器BX的低4位置1,而其他位保持不变的指令是: OR BX,000FH
3.已知数据定义语句如下所示:
BUF DB 11, 22, 33,‘789’
L EQU $-BUF
则汇编后L的值是: 6
解析:
(符号‘$’表示当前地址,因此L的值为字节数据BUF所占存储单元的个数)
4.以下指令序列执行后,(BL)= 7H
MOV AX , 1A2BH
MOV BL , 0
LP: CMP AX , 0
JE OVER
SHR AX , 1
JNC LP
INC BL
JMP LP
OVER: …
5.若有如下数据段和代码段的定义,则指令序列执行后STR2的值为: 9876543210
数据段: STR1 DB ‘0123456789’
STR2 DB 10 DUP(?)
代码段: LEA SI , STR1
LEA DI , STR2
MOV CX , STR2-STR1
ADD SI , CX
DEC SI
LP: MOV AL , [SI]
MOV [DI] , AL
DEC SI
INC DI
LOOP LP
6.已知DAT和RES均为字节变量,若DAT的值为-5,则下列指令序列执行完成后,RES= 05H;若DAT的值为23,则下列指令序列执行完成后,RES= 18H
MOV AL , DAT
OR AL , AL
JE L1
JNS L2
DEC AL
JMP L1
L2: INC AL
L1: MOV RES , AL
7.已知字节数组BUF定义如下:
BUF DB 1, 2, -3, -1, 5, 0
则以下指令序列执行完成后
LEA BX , BUF
MOV AL , 0FFH
LP: CMP AL , [BX]
JE OVER
MOV Byte PTR [BX] , 0
INC BX
JMP LP
OVER: …
数组BUF的值依次为 0、 0、 0、 -1/0FFH、 5、0
解析:
该程序段的功能为:
依次读取BUF中的每个字节数据,若为-1,则结束;若不为-1,则将该单元清零,继续进行后续数据的处理。因此,-1之前的数据会被清零,-1之后的数据会保持不变。
8.以下指令序列执行完成后,(AL)= D4H。
MOV AL , 54H
SAL AL , 1
SAR AL , 1
9.若字节变量DAT的值为9,则以下指令序列的目标存储单元地址可表示为 DAT+1 / [DAT+1] / DAT[1],指令序列执行后其结果类型为 字,值为 51H
LEA BX , DAT
MOV AX , 0
MOV AL , [BX]
MUL DAT
INC BX
MOV [BX] , AX
10.若字节变量VAR的值为54H,则以下指令序列执行完成后,VAR的值变为 DAH
MOV AL , VAR
AND AL , 70H
OR AL , 8AH
MOV VAR , AL
11.若字节变量NUM的值为76H,则以下指令序列执行完成后,(AL)= 8AH,NUM= 02H。
MOV AL , NUM
NEG AL
AND NUM , AL**
12.已知数据段定义如下,试将C语言语句“for (i = s = 0 ; i < 100 ; i ++ ) s+= data[i] *2”改写为相同功能的汇编语言程序段
DATA SEGMENT
data dw 100 dup(?)
s dw ?
DATA ENDS
假设以上数据运算为无符号数运算,不考虑data数组中数据值的来源,不考虑计算中的溢出问题。
MOV CX , 100
XOR AX , AX
XOR SI , SI
NEXT: MOV BX , data[SI]
SHL BX , 1 ;这里也可改成MUL乘法指令,但应注意默认寄存器的使用
ADD AX , BX
ADD SI , 2
LOOP NEXT
MOV s , AX
13.编写子程序,删除给定字符串两端的空格。
已知字符串以数值0为结束标志,子程序入口参数为DX,其中保存字符串的首地址。
DELBlank PROC
PUSH SI ;保护现场
PUSH DI
PUSH AX
MOV SI , DX
AGAIN: MOV AL , [SI] ;找到第一个非空格字符,位置由SI指定
CMP AL , 20H
JNZ NEXT
INC SI
JMP AGAIN
NEXT: MOV DI , DX ;从第一个非空格字符开始移动字符串
LOOP1: MOV AL , [SI]
CMP AL , 0
JZ OVER
MOV [DI] , AL
INC SI
INC DI
JMP LOOP1
OVER: DEC DI ;删除串尾空格
MOV AL , [DI]
CMP AL , 20H
JNZ EXIT
JMP OVER
EXIT: MOV byte PTR [DI+1] , 0
POP AX ;恢复现场
POP DI
POP SI
RET ;子程序返回
DELBlank
14.试编写一个子程序,将AL寄存器中低四位的值以十六进制形式显示出来。
HEXDISP PROC
PUSH AX ;保护使用到的寄存器
PUSH DX
AND AL ,0FH ;子程序功能
CMP AL ,0
JB EXIT
CMP AL ,09H
JA NEXT
ADD AL ,30H
JMP EXIT
NEXT: CMP AL ,0FH
JA EXIT
ADD AL ,37H
EXIT: MOV DL ,AL
MOV AH , 2
INT 21H
POP DX ;恢复所使用的寄存器的值
POP AX
RET ;子程序返回
HEXDISP ENDP
15.已知数据段定义如下,试将C语言语句“h = ( key & 0xFF00 ) >>8”改写为相同功能的汇编语言程序段。
DATA SEGMENT
key dw 100H
h dw ?
DATA ENDS
MOV AX , key
AND AX , 0FF00H
MOV CL , 8
SAR AX , CL
MOV h , AX
16.设有字变量a、b、c,试将以下C语言语句改写成等价的汇编语言程序
If ( a<1 || b/4 >10 && c%8 == 5)
{
a = 20+ b++;
c<<=2;
}
else
{
a = 21 - ( ++c);
b--;
}
汇编程序:
自由发挥
第六章
1.已知某固定式多端口地址译码电路如下,试完成以下内容。
(1)该电路的译码地址范围是 300H~33FH。
(2)若在硬件连接时,不慎将A3与A6接反,则该电路Y7输出选中的最大地址是 377H
2.若某固定式单端口地址译码电路结构如下,则其译码的地址为 2F9H/02F9H
3.任何时候,系统片间译码电路的多个输出中最多只能有一个有效。(不考虑故障情况) 正确
4.所有单板机系统中,中断控制器可用的端口地址范围都一样。 错误
5.可使用访存指令访问10系统的编址方式是统一编址方式
6.每个接口电路中,数据端口、状态端口、命令端口都只能有一个。 错误
7.数据端口是可读写的
8.如下图所示的可选式译码电路,若开关SO闭合,则Y1对应的译码地址为 220~23FH
9.接口芯片内部的端口选择一般采用低位地址译码。
第七章
##
8253:
1.假定8253A的端口地址为304H~307H,若要读取计数通道1的当前计数值,则首先需向芯片命令端口 307H 写入计数锁存命令字,其值为 40/41H
2.若8253的计数通道2,工作于方式1下,计数初值为300H,采用BCD码计数,则其工作方式命令字为 0B3H
3.若8253的计数通道1,工作于方式2下,计数初值为30H,采用二进制计数方式,则其工作方式命令字为 54H
4.假定输入时钟频率为10MHz,若需要2KHz的方波输出,则需要使用8253的 1 个计数通道,工作于方式 3,计数初值应设置为 5000
5.假定输入时钟频率为10MHz,则8253A需使用 2 个计数通道才能够完成1s的定时。
6.假定输入时钟频率为10MHz,若要8253A定时2ms,则计数初值应为 20000
7.8253A计数通道在计数过程中,改变计数初值即立刻按新的初值重新计数的工作方式 方式0
8.8253A计数通道在计数过程中,GATE信号变为低电平不会影响计数的工作方式是 方式1
9.8253A计数通道在计数过程中,出现GATE信号上升沿不会触发重新计数的工作方式是 方式0
10.8253A输出为连续方波的工作方式是 方式3
11.8253A计数通道内部,CPU可读写的寄存器是 计数初值寄存器
12.控制8253A计数通道计数启停的信号是 门控输入信号GATE
13.8253A的计数通道采用的是 减法计数 方式。
14.8253A三个计数通道都是 16 位的。
15.8253A的方式3在计数过程中若计数初值发生变化,则 当前半个计数周期结束后按新的初值开始计数
16.8253A的方式1,在计数过程中,GATE变为低电平,则 不影响计数
17.8253A只能用硬件脉冲信号触发计数的工作方式是 方式1
18.假定8253A的端口地址为304H~307H,输入时钟频率为4MHz,若要求三个计数通道分别完成以下功能,试写出其对应的初始化程序。
(1)计数通道0输出频率为20KHz的方波。
(2)计数通道1输出宽度为500μs的单脉冲。
(3)计数通道2由硬件触发,输出一个时钟周期的单脉冲,时间常数为26。
1)通道0:
计数初值n=4MHz/20KHz=200
若计数初值为200,则命令字为00 01 011 0B(通道0,8位计数值,计数通道初值只写低8位即可,工作方式3,二进制计数);
若计数初值为200H,则命令字为00 11 011 1B(通道0,16位计数值,计数通道初值需要先写低8位再写高8位,工作方式3,BCD码计数)。
参考初始化程序:
MOV DX , 307H
MOV AL , 16H/37H
OUT DX , AL
MOV DX , 304H
MOV AL , 200/0
OUT DX , AL
(MOV AL , 2
OUT DX , AL)
(2)通道1:
计数初值n=4MHz×500μs=2000
若计数初值为2000,则命令字为01 11 001 0B(通道1,16位计数值,计数通道初值需要先写低8位再写高8位,工作方式1,二进制计数);
若计数初值为2000H,则命令字为01 10 001 1B(通道1,16位计数值,计数通道初值可以只写高8位,工作方式1,BCD码计数)。
参考初始化程序:
MOV DX , 307H
MOV AL , 72H/63H
OUT DX , AL
MOV DX , 305H
二进制计数写初值:
MOV AL , 2000
OUT DX , AL
MOV AL , AH
OUT DX , AL
BCD码计数写初值:
MOV AL , 20H
OUT DX , AL
(3)通道2:
若计数初值为26,则命令字为10 01 101 0B(通道2,8位计数值,计数通道初值只写低8位,工作方式5,二进制计数);
若计数初值为26H,则命令字为10 01 101 1B(通道2,8位计数值,计数通道初值只写低8位,工作方式5,BCD码计数)。
参考初始化程序:
MOV DX , 307H
MOV AL , 9AH/9BH
OUT DX , AL
MOV DX , 306H
MOV AL , 26/26H
OUT DX , AL
##
8255:
1.8255A的数据端口A工作于方式1下,采用查询传送方式,接口会自动分配 3 个PC位用于控制联络。 (PC4作为对打印机的选通信号;PC5作为打印机)
2.8255A的数据端口A工作于方式0下,完成查询数据传送方式,则至少需要 2 个PC位配合联络控制。 (8255A对打印机的选通控制信号;
打印机反馈给8255A的忙状态信号。)
3.8255A不能支持的数据传送方式是 DMA传送方式
4.假定8255A的端口地址为60H-63H,则C口置复位命令字应写入的端口地址是 63H
5.8255A中可工作于方式2下的数据端口有 仅A口
6.当8255A的数据端口A工作于方式2时,不能够用于数据输入输出的PC位是 PC3
7.8255A内部可并行传送数据的端口有 3个8位数据端口
8.由硬件控制完成的数据传送方式是 DMA
9.8255A中能够使用命令字控制端口输出状态的是 C口
10.若8255A的PCO~PC2为数据输出信号线,则A口工作于 不确定
11.若8255A的B口工作与方式1下,采用中断方式实现数据传送,则在完成初始化后,必须设置 PC2 位的有效信号,才能使8255A的内部逻辑产生中断请求。
12.当8255A的A口工作于方式1作为输入端口使用时, PC5 位作为输入缓冲器满的状态信号。
13.若某时刻8255A引脚A1、 A0、RD、WR、CS的输入状态分别是1、0、0、1、0,则CPU对该8255A的操作是 读C口数据
14.方式2是一种带选通的输入输出方式
15.假定8253的端口地址为60H-63H,若要求8255A的PC5输出一个上升沿,试编写其芯片的控制程序。
(1)采用C口置复位命令字,则不需要写工作方式命令字,使PC5输出高电平的命令字值为0BH,使PC5输出低电平的命令字值为0AH,则其控制程序如下:
MOV AL , 0AH
OUT 63H , AL
MOV CX , 0
L1: LOOP L1
MOV AL , 0BH
OUT 63H , AL
(2)若要使PC5按数据输出方式输出上升沿,则应设置命令字为80H(有效部分为C口高4位为输出端口),其后分别从C口(62H)输出相应的数据(20H——PC5=1,00H——PC5=0),则其控制程序如下:
MOV AL , 80H
OUT 63H , AL
MOV AL , 0
OUT 62H , AL
MOV CX , 0
L1: LOOP L1
MOV AL , 20H
OUT 62H , AL
16.假定8255A的端口地址为60H-63H,试按如下要求写出其对应的初始化程序。
(1) A口和C口工作于方式0,A口输出,C口输入;B口工作于方式1,输入端口。
(2) A口工作于方式1,输入端口; B口工作于方式0,作为打印机的数据输出端口,查询方式传送数据。
(3) A口工作于方式2,输入端口;B口工作于方式1,输出端口。
(1)8255A的工作方式命令字为:1 00 0 1 1 1 1B,写入63H端口
MOV AL , 8FH
OUT 63H , AL
(2)B口以方式0完成查询传输方式,则需PC位配合其联络控制打印机,则C口高低4位的输入输出状态必相反,则8255A命令字为1 01 1 0 0 0 1B,或者为1 01 1 1 0 0 0B。
MOV AL , 0B1H/0B8H
OUT 63H , AL
(3)8255A的工作方式命令字为:1 10 1 0 1 0 0B,写入63H端口
MOV AL , 0D4H
OUT 63H , AL
第八章
1.在级联8259A系统中,为保障从片各中断源的优先权顺序,主片的优先权管理方式一般使用 特殊全嵌套 方式;若某时刻从片1的ISR值为03H,非自动EOI方式,则该从片引入的一个中断服务结束时,需要CPU发送 1 个EOI命令。
2.级联总线CAS2-CASO是在8259A级联使用时,从片的级联总线与 主片 连接,在CPU响应从片中断时,中断响应周期的第 1 个INTA有效期间, 主片 在级联总线上发送从8259A的标志码;第 2 个INTA有效期间,选中的从片将 中断类型号 送至 数据总线 上
3.某8086系统中断向量表中,逻辑地址为0000H:003CH的主存单元开始依次存放34H、OFEH、OOH 和OFOH四个字节内容,则该中断源的中断类型号为?H,其中断服务程序的入口地址为?H:?H
填空1:0FH/15
填空2:0F000
填空3:0FE34
4.某8259A的IR2、IR4、IR7同时收到有效的请求信号,当CPU发回第一个中断响应信号INTA之后,中断请求寄存器IRR的值为? H,中断服务寄存器ISR的值为?H
填空1:90
填空2:4
5.某个由4片8259A构成的中断管理系统中,若所有IR引脚均接有中断源,中断请求边沿触发,采用固定优先权,普通EOI方式,非缓冲方式,16位系统,则主8259A的初始化程序中需要写?个ICW初始化命令字,其中ICW1的值为?H
填空1:4
填空2:11
6.8259A的普通EOI命令的值为20H
7.若要屏蔽单片8259A的IR2和IR4引脚引入的中断请求,则OCW1的命令字值应为14 H。
8.若某系统中使用单片8259A,中断请求采用电平触发方式,所管理中断源的中断类型号为60H~67H,一般全嵌套优先权管理方式,非缓冲方式连接,自动EOI方式,则初始化所需的ICW命令字的值分别为?H、?H、?H、?H 注意:若此处初始化不需要某个ICW,则在填空处写“无”。
填空1:1B
填空2:60
填空3:无
填空4:3
9.8259A在进行中断处理时,各寄存器的置复位分别是由硬件,还是软件实现的,请完成以下填空。(1)中断请求寄存器IRR,置位?实现,复位?实现;(2)中断服务寄存器ISR,置位? 实现,复位? 实现;(3)中断屏蔽寄存器IMR,置位? 实现,复位?实现。
填空1:硬件
填空2:硬件
填空3:硬件
填空4:软件
填空5:软件
填空6:软件
10.若某单片使用的8259A系统采用优先权特殊循环方式,则在收到值为OE3H的EOI命令后,当前优先权最高的中断源是 IR4
11.8259A管理的中断源属于 硬件中断
12.某8259A初始设置时,命令字ICW2的值为08H,则接在该8259A的IR5引脚上的中断源的中断类型号是 0DH
13.非缓冲方式下的级联8259A系统中,区分主从片的是 SP引脚
14.中断指令INT 21H执行时,其中断类型号是()。 21H
15.中断允许标志位IF可以控制()中断请求是否可以CPU响应。 INTR中断
16.中断服务程序的终止指令为( )。 IRET
17.CPU响应中断的时间是 一个指令周期结束
18.一般来说,特殊全嵌套的中断优先权管理方式用于( )。 8259A级联系统中的主片
19.在非自动EOI的中断系统中,若中断服务程序中缺少EOI命令,会导致( )。 8259A内部记录状态与实际中断服务状态不一致
20.8086系统的每个中断向量占()个字节,其中断向量表最多可保存()个中断向量。 4, 256
21.某8086系统中,INTR中断的个数为16个,则需要()片8259A才可处理这些中断。 3
22.CPU接收到中断请求,对其优先权的判断是在()阶段。 中断请求
23.中断响应过程中需要执行的操作有()。
关中断
获取中断类型号
保护断点信息
转入中断服务程序
24.中断处理过程包括()。
中断请求
中断响应
中断服务
中断返回
25.中断系统可以处理的事件有()。
除法指令执行时除数为0
硬磁盘损坏
中断指令
单步调试
26.设某系统中有三个可屏蔽中断源L0~L2,其中断类型号分别为24H、28H、2AH,中断请求采用边沿触发方式,优先权从高到低的顺序为L1-L2-L0,非缓冲工作方式非自动EOI方式。试画出该8259A系统的连接图,并编写初始化程序。设主8259A的端口地址为20H和21H,从8259A的端口地址为0A0H和0A1H。
设主8259A的端口地址为20H和21H,从8259A的端口地址为0A0H和0A1H。
(1)由中断类型号可知,中断源L0~L2应由两片8259A管理,所以该系统8259A采用级联方式工作;
§ L0由一片8259A管理,其ICW2为20H;
§ L1和L2由另一片8259A管理,其ICW2为28H;
(2)由中断类型号可确定中断源的引入连接方式;
· L0由IR4引脚引入;
· L1和L2由IR0和IR2引脚引入;
(3)中断源L0~L2的优先权顺序决定硬件连接方式;
连接注意:
若L0由主8259A的IR4引入,则引入L1和L2的从8259A必须接在主片的IR0~ IR3引脚上;若L0由从8259A的IR4引入,则引入L1和L2的主8259A可以在其IR3~IR7引脚上接入从片。
采用不同的连接方式,在初始化程序中的设置也会有所差别!
(4)若L0由主片引入,从片接于主片的IR3引脚,则
§ 主片初始化程序
MOV AL , 11H
OUT 20H , AL ;写ICW1
MOV AL , 20H
OUT 21H , AL ;写ICW2
MOV AL , 08H
OUT 21H , AL ;写ICW3
MOV AL , 11H
OUT 21H , AL ;写ICW4
MOV AL,0E7H
OUT 21H,AL ;写OCW1
§ 从片初始化程序
MOV AL , 11H
OUT 0A0H , AL ;写ICW1
MOV AL , 28H
OUT 0A1H , AL ;写ICW2
MOV AL , 03H
OUT 0A1H,AL ;写ICW3
MOV AL,01H
OUT 0A1H , AL ;写ICW4
MOV AL , 0FAH
OUT 0A1H , AL ;写OCW1
(5)若L0由从片引入,从片接于主片的IR5引脚,则
§ 主片初始化程序
MOV AL , 11H
OUT 20H , AL ;写ICW1
MOV AL , 28H
OUT 21H , AL ;写ICW2
MOV AL , 20H
OUT 21H , AL ;写ICW3
MOV AL,01H
OUT 21H,AL;写ICW4
MOV AL , 0DAH
OUT 21H , AL ;写OCW1
§ 从片初始化程序
MOV AL , 11H
OUT 0A0H , AL ;写ICW1
MOV AL , 20H
OUT 0A1H , AL ;写ICW2
MOV AL , 05H
OUT 0A1H , AL ;写ICW3
MOV AL,01H
OUT 0A1H ,AL;写ICW4
MOV AL , 0EFH
OUT 0A1H , AL ;写OCW1