或者
MOV DX, 889Fh (控制寄存器的端口地址正确,可得1分) MOV AL, 01110111b (初始化控制寄存器的值正确,可得1分) OUT DX, AL
MOV DX, 889Dh (计数器1的端口地址正确,可得1分) MOV AX, 2000h
OUT DX, AL ;低8位 (低8位数据正确,可得1分) MOV AH, AL
OUT DX, AL ; 高8位 (高8位数据正确,可得1分)
3. 下图是使用SRAM芯片,在ISA总线上扩充内存。图中SBHE为总线高字节允许信号,高有效;SA0~SA23和SD0~SD15分别为系统地址线和系统数据线,请回答如下问题:(本题8分)
(1)写出每片SRAM 的存储容量。(2分) 答:每片容量为64KB(Bytes)(或512kbit)。 (2)写出各片的地址范围。(2分)
答:SRAM0的地址为:0C0000H~0DFFFFH的128KB中的偶地址,
SRAM1的地址为:0C0000H~0DFFFFH的128KB中的奇地址。
(3)该地址译码电路是全译码电路还是部分译码电路?(1分)
答:为全译码电路。
(4)说明信号SBHE和SA0在电路中的作用(按两信号的
编码说明)。(3分)
答:SBHE和SA0的作用是对两个存储体如何选择的信号,编码如下: SBHE SA0
1 0 存取16位数据; 1 1 存取高8位数据; 0 0 存取低8位数据; 0 1 无操作
SA1~SA16地址译码器SA23SA22SA21SA20SA19SA18SA17A0~A15RDWRSRAM0CEA0~A15RDWRSRAM1CEMEMRMEMWCS1SA0SBHECS2SD0~SD7SD0~SD15SD8~SD15图1. 在ISA总线上扩充存储器
4. (10分)某人设计出一定时电路。该电路每隔1秒通过8259向8088请求一次中断,相应的中断服务程序(名为INTPR)只完成对中断的次数进行统计。此人已编写好了名为INCINIT的用于填写相
应中断向量及相关8259初始化操作的子程序。试编写程序(包括中断服务程序),用DOS 2号功能显示系统时间(只需显示每小时内秒的变化情况)。设8259中断结束由如下两条指令完成:MOV AL,20H,OUT 20H,AL。要求写出完整的数据段与代码段。
* 注: DOS 2号功能 - 入口:AH置2,DL = 待显示字符的ASCII码。
DATA SEGMENT INCNUM DB 0
LTVAL DB 2 ;前次在屏幕上显示的数 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA ;中断服务程序
INTPR: PUSH AX ; 保护现场 PUSH DS
MOV AX, DATA
MOV DS, AX STI ;开中断 INC INCNUM ; 加1
MOV AL, 20H ;发EOI命令 OUT 20H, AL POP DS POP AX ; 恢复现场 IRET ;主程序
START: MOV AX, DATA
MOV DS, AX
CALL INCINIT ;与中断相关的初始化
STI
;开中断
LOOP1: CLI ;检查数是否已达60,注意数据完整性
分钟
LT60: 位数
MOV AL, INCNUM CMP AL, 60
JC LT60
SUB AL, 60 ;设显示速度足够快,滞后小于1MOV INCNUM, AL STI
CMP AL, LTVAL
JZ LOOP1 ;该数已在屏幕上显示了
MOV LTVAL, AL
MOV AH, 0 MOV BL, 10 DIV BL MOV BX, AX
;BH含秒的个位数,BL含秒的十MOV DL, ‘ ’ ;为区分前一个显示,先显示空格 MOV AH, 2 INT 21H MOV DL, BL
;显示秒值
MOV AH, 2 INT 21H MOV DL, BH MOV AH, 2 INT 21H JMP LOOP1