五、编程题(10分)41.数据段中以BUF为首地址的区域中存放着字节数据12H, 34H, 56H, 78H, 9AH,0, 0BCH, 0DEH, 0FFH, 统计其中正数,负数,零的个数送ZHENG、FU和ZERO单元中,要求编写完整的汇编语言程序(10分)六、应用题(共45分,每题15分)42.查询方式打印机接口如图所示,图中的8255A的B口作为输出打印数据口,工作于方式0,PC5引脚作为打印机的数据选通信号STB,由它产生一个负脉冲,将数据线D7-D0上的数据送入打印机,PC0引脚接收打印机的忙状态信号,当打印机在打印某字符时,忙状态信号BUSY 为1。
现要求打印的字符存于缓冲区BUF中,共有800个字符。
设8255A的端口地址为800H--803H。
利用查询BUSY信号,编写CPU与打印机之间数据交换的程序段(包括8255A 初始化)。
43.计数器/定时器8253,振荡器(频率为2MHZ)振荡器的脉冲输出端接通道0的计数输入端CLK0,设8253的端口地址为200H---203H请回答:(1)该电路中一个通道的最大定时时间是多少?如何计算?(2)若要8253的OUT端,能产生周期为1秒的连续方波,该如何解决?(3)写出实现功能的8253初始化程序44.在对存储芯片进行译码寻址时,如果只有部分高位地址参与,这种译码方法被称为部分译码。
现有EPROM芯片2732(4KX8位),以及3-8译码器74LS138,各种门电路若干,要求在8088CPU上扩展容量为16KX8 EPROM内存,要求采用部分译码,不使用高位地址线A19、A18、A15,选取其中连续、好用又不冲突的一组地址,要求首地址为20000H。
请回答1)2732的芯片地址线、数据线位数是多少?2)组成16KX8需要2732芯片多少片?3)写出各芯片的地址范围。
4)画出存储扩展图(要求画出地址线、数据线及控制线的连接)五、编程题(10分)41.DA TA SEGMENTBUF DB 12H, 34H, 56H, 78H, 45H, 9AH,0, 0BCH, 0DEH, 0FFH 1分COUNT EQU $-BUF 1分ZHENG DB ?FU DB ?ZERO DB ?DA TA ENDSCODE SEGMENTASSUME CS:CODE, DS:DA TA 1分START: MOV AX, DATAMOV DS, AX 1分MOV CX, COUNTMOV BX, 0MOV SI, 0MOV DI, 0 1分AGAIN: CMP WORD PTR [BX+BUF], 0JLE LORE 1分INC DIJMP NEXT 1分LORE: JL NEXT 1分INC SINEXT: ADD BX, 2LOOP AGAIN 1分MOV AX , COUNTSUB AX, SISUB AX , DIMOV ZHENG, DIMOV FU, AXMOV ZERO, SI 1分MOV AH, 4CHINT 21HCODE ENDSEND START六、应用题(共45分,每题15分)42. BUF DB ‘XXXXXXX (1)MOV DX,803HMOV AL,1xxx0001B 2分OUT DX,ALMOV AL,0BH 2分OUT DX,ALMOV CX,800MOV SI,OFFSET BUF 2分LOP:MOV DX,802H 1分IN AL,DXTEST AL,01H 2分JNZ LOP 1分MOV AL,[SI]MOV DX,801HOUT DX,AL 1分MOV AL,0AHMOV DX,803HOUT DX,AL 1分MOV AL,0BHOUT DX,ALINC SILOOP LOP 2分HLT43.(1)输入脉冲周期=0.5Μs,一个通道最大计数为65536=216,所以最大定时时间=0.5μS×65536=65.536ms 3分(2)可以将8253的通道串联使用,各通道的计数:通道0=2000,通道1=1000 2分(3)MOV AL,00100101BMOV DX,203HOUT DX,AL 3分MOV AL,20HMOV DX,200HOUT DX,AL 2分MOV AL ,01100101BMOV DX,203HOUT DX,AL 3分MOV DX,201HMOV AL,10HOUT DX,AL 2分44.(1)地址线12根,数据线8根;2分(2)片;2分(3)1# 20000H~20FFFH2# 21000H~21FFFH 3# 22000H~22FFFH 4# 23000H~23FFFH 4分4)7分27. 数据段中以BUF为首地址的区域中存放着字节数据12H, 34H, 56H, 78H, 9AH,0, 0BCH, 0DEH, 0FFH, 统计其中正数,负数,零的个数送ZHENG、FU和ZERO单元中,要求编写完整的汇编语言程序。
五、应用题(每题15分,共45分)28. CPU通过8255同开关K0~K3和LED显示器的接口见下图,开关设置的二进制信息由B口输入,经程序转换成对应的七段LED段码后,通过A口输出,由七段LED显示开关二进制的状态值,试编写其控制程序(设8255的端口地址为80H~83H)。
注:若B口读入的值为0000,则LED显示器将显示0;以此类推,若B口读入的值为1111,则LED显示器将显示F。
29. 计数器/定时器8253,振荡器(频率为2MHZ)振荡器的脉冲输出端接通道0的计数输入端CLK0,设8253的端口地址为200H---203H Array请回答:(1)该电路中一个通道的最大定时时间是多少?如何计算?(2)若要8253的OUT端,能产生周期为1秒的连续方波,该如何解决?(3)写出实现功能的8253初始化程序30. 在对存储芯片进行译码寻址时,如果只有部分高位地址参与,这种译码方法被称为部分译码。
现有EPROM芯片2732(4KX8位),以及3-8译码器74LS138,各种门电路若干,要求在8088CPU上扩展容量为16KX8 EPROM内存,要求采用部分译码,不使用高位地址线A19、A18、A15,选取其中连续、好用又不冲突的一组地址,要求首地址为20000H。
请回答1)2732的芯片地址线、数据线位数是多少?2)组成16KX8需要2732芯片多少片?3)写出各芯片的地址范围。
4)画出存储扩展图(要求画出地址线、数据线及控制线的连接)27.DATA SEGMENT 1分BUF DB 12H, 34H, 56H, 78H, 45H, 9AH,0, 0BCH, 0DEH, 0FFH 1分COUNT EQU $-BUF 1分ZHENG DB ?FU DB ?ZERO DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA 1分START: MOV AX, DATAMOV DS, AX 1分MOV CX, COUNTMOV BX, 0MOV SI, 0MOV DI, 0 1分AGAIN: CMP WORD PTR [BX+BUF], 0 1分JLE LORE 1分INC DIJMP NEXT 1分LORE: JL NEXT 1分INC SINEXT: ADD BX, 2LOOP AGAIN 1分MOV AX , COUNTSUB AX, SISUB AX , DIMOV ZHENG, DIMOV FU, AXMOV ZERO, SI 1分MOV AH, 4CHINT 21H 1分CODE ENDSEND START 1分五、应用题(每题15分,共45分)28. SEGCODE DB 0C0H,0F9H,A4H,B0H,…,8EH 2分………………MOV AL,10000010B 2分OUT 83H,AL 1分LOP: IN AL,81H 2分AND AL,0FH 2分MOV BX,OFFSET SEGCODE 2分XLAT 2分OUT 80H,AL 1分JMP LOP 1分29. (1)输入脉冲周期=0.5Μs,一个通道最大计数为65536=216,所以最大定时时间=0.5μS×65536=65.536ms 3分(2)可以将8253的通道串联使用,各通道的计数:通道0=2000,通道1=1000 2分(3) MOV AL,00100101B 1分MOV DX,203H 1分OUT DX, AL 1分MOV AL,20H 1分MOV DX,200H 1分OUT DX,AL 1分MOV AL ,01100101B 1分MOV DX,203HOUT DX,AL 1分MOV DX,201HMOV AL,10H 1分OUT DX,AL 1分30. (1)地址线12根,数据线8根; 2分(2)4片; 1分(3)1# 20000H~20FFFH 1分2# 21000H~21FFFH 1分3# 22000H~22FFFH 1分 4# 23000H~23FFFH 1分(4) 8分。