第56章习题解答.ppt
,第 五、六 章 习 题 解 答,5.1 8086CPU对其I/O端口的寻址采用哪种方式?它的输入指令:IN AL,PORT;IN AL,DX;IN AX,PORT;IN AX,DX的作用有何区别?,5.1 答:8086CPU对I/O端口的寻址采用的是I/O端口单独寻址方式,它安排有专门的输入/输出指令即IN、OUT指令。4条输入指令的区别是:IN AL,PORT:端口地址和输入的数据均为8位,即:(PORT)ALIN AL,DX:端口地址为16位,输入的数据为8位,即:(DX)ALIN AX,PORT:端口地址为8位,输入的数据为16位,即:(PORT)AL,(PORT+1)AH IN AX,DX:端口地址和输入的数据均为16位,即:(DX)AL,(DX+1)AH,5.4 在查询方式、中断方式以及DMA方式中,有一个共性的问题是:系统如何知道接口部件已准备好,可以进行I/O数据传送?试简述之。,答:在查询方式中,通过程序来检测接口电路中状态寄存器的“准备好”(Ready)位,以确定当前可否进行数据传输;在中断方式下,当外设已准备好时,接口电路会向CPU发一个中断请求,CPU响应后,便通过运行中断服务程序来实现数据输入/输出;在DMA方式中,外设要求传输数据时,接口电路会向DMA控制器发出DMA请求信号,导致DMA传输数据。,5.5 某输入设备的接口电路中,其数据端口地址为3F8H,状态端口地址为3FEH,当其D7位为1时,表示输入数据已准备好。试编写查询方式数据传送的程序段,要求从该设备读入100个字节,并存入到自2000H:2000H开始的内存单元之中。,解:MOV AX,2000H MOV DS,AX;设置数据段基址为2000H MOV BX,2000H MOV CX,64H;计数器初值为100NEXT:MOV DX,3FEH;状态端口地址WAIT:IN AL,DX;读入状态 TEST AL,80H;设备准备好?JZ WAIT;否,转回继续查询状态 MOV DX,3F8H;数据端口 IN AL,DX;输入数据 MOV BX,AL;存入缓冲区 INC BX;指向下一单元 LOOP NEXT;循环控制共输入100个字节,5.6 设计一个采用74LS138的I/O端口的地址译码器,要求能寻址的端口地址范围分别是:340H347H;348H34FH;350H357H;378H37FH。,答:由题目要求,该译码器使用CPU的十根地址总线A9A0,其中A9A3与一起用于对74LS138的输入,A2A0用于各接口芯片的片内I/O端口的寻址,设计的电路如图5.1所示。,M/,5.12 8259A只占用2个I/O端口地址(奇、偶地址),对其编程时将如何区别7个可编程的寄存器:ICW1ICW4、OCW1OCW3?,答:7个可编程的寄存器中占用偶地址的有ICW1、OCW2、OCW3,它们之间的互相区分则采用写入的控制字中不同的特征位的方式来进行。其中:ICW1的D4位必须为1;OCW2的D4D3位必须为00;OCW3的D4D3位必须为01。,占用奇地址的有ICW2、ICW3、ICW4和OCW1,它们之间的互相区分则采用写入顺序来进行,其中:ICW2、ICW3、ICW4在8259A初始化编程过程中,必须严格按顺序依次写入;而OCW1则是在初始化完成后,在8259A的工作过程中写入。,5.16 某8086系统中有三片8259A安排为非缓冲、级连使用,两从片A、B分别接入主片的IR2、IR4;三片8259A的端口地址分别为20H、22H;30H、32H;40H、42H;主片及从片A、从片B的IR5上各接有一个外部中断源,其中断类型号分别为75H、7DH和85H;所有中断都采用电平触发方式、全嵌套、非自动EOI方式。试完成:画出该系统中3片8259 A级连部分电路简要的电气原理图;编写出全部初始化程序,答:该系统的电气原理图如下图所示。,各片的初始化程序如下:,主片的初始化程序:,MOV AL,19H;ICW1=0001,1001B,电平触发,多片级连使用,要 ICW4OUT 20H,AL;写入偶地址MOV AL,70H;ICW2控制字:中断类型号为70H77HOUT 22H,AL;写入奇地址MOV AL,14H;ICW3:IR4、IR2上接有从片OUT 22H,ALMOV AL,11H;ICW4=00010001B,特殊全嵌套方式,;非自动中断结束方式,8086系统OUT 22H,AL,从片A的初始化程序:,MOV AL,19H;ICW1控制字:同主片OUT 30H,ALMOV AL,78H;ICW2控制字:中断类型号为OUT 32H,AL78H7FHMOV AL,02H;ICW3控制字:本从片的标识码OUT 32H,AL(INT接主片的IR2)MOV AL,01H;ICW4控制字:全嵌套、非缓冲、非自动结束中断,8086系统OUT 32H,AL,从片B的初始化程序:,MOV AL,19H;ICW1控制字:同主片OUT 40H,ALMOV AL,80H;ICW2控制字:中断类型号为 80H87HOUT 42H,ALMOV AL,04H;ICW3控制字:本从片的标识码(INT接到主片的IR4)OUT 42H,ALMOV AL,01H;ICW4控制字:同从片AOUT 42H,AL,产生:20H、22H、30H、32H、40H、42H片选信号的译码电路如右图所示。(一),ABC 74LS138,A4,A5,A6,A7,A2,20H、22H(主片),30H、32H(从片A),40H、42H(从片B),M/,1,1,A3,A0,产生:20H、22H、30H、32H、40H、42H片选信号的译码电路如右图所示。(二),ABC 74LS138,A4,A5,A6,A7,A0,20H2EH(主片),30H3EH(从片A),40H4EH(从片B),M/,6.4 设8253计数器02和控制字寄存器的端口地址依次为F8HFBH,说明如下程序的作用。,MOV AL,33HOUT 0FBH,ALMOV AL,80HOUT 0F8H,ALMOV AL,50HOUT 0F8H,AL,程序的作用是:对8253芯片的计数器0初始化为:工作方式1、BCD码计数、十六位计数器,计数器的初始值为5080。,6.5 设8253的4个端口地址分别为300H、302H、304H和306H,由CLK0输入计数脉冲频率为2MHz。要求通道0输出1.5kHz的方波,通道1、通道2均用通道0的输出作计数脉冲,通道1输出频率为300Hz的序列负脉冲,通道2每秒钟向CPU发50次中断请求。试编写初始化程序,并画出8253相关引脚的连线图。分析:按要求可知:(1)计数器0用作方波发生器(方式3),其分频系数为:N0=2106(1.5103)1333=0535H(2)计数器1用作分频器(方式2),其分频系数为:N1=1500300=5(3)计数器2用作分频器(方式2),其分频系数为:N2=150050=30=1EH,MOV DX,306HMOV AL,37H(或 36H);通道0,16位初值,方式3,BCD进制计数OUT DX,AL;写入通道0控制字MOV DX,300HMOV AL,33H(或 35H)OUT DX,AL;写入初值1333(或0535H)的低8位入通道0MOV AL,13H(或 05H)OUT DX,AL;写入初值1333(或 0535H)的高8位入通道0MOV DX,306HMOV AL,54H(或 55H);通道2,8位初值,方式2,二进制计数OUT DX,AL;写入通道2控制字MOV DX,302HMOV AL,05HOUT DX,AL;写入通道2初值05H,MOV DX,306HMOV AL,95H(或 94H);通道2,8位初值,方式2,;BCD(或 二)进制计数OUT DX,AL;写入通道1控制字MOV DX,304HMOV AL,30H(或 1EH)OUT DX,AL;,