发布时间 : 星期二 文章微机原理期末复习解答题更新完毕开始阅读2e8a74eb551810a6f5248680
TEST AL, 80H ;检测PC7是否为1即是否忙 JNZ WAIT 1 ;为忙则等待 MOV AL,0AH
OUT 00H,AL ;输出换行符 MOV AL, 00H OUT 03H,AL MOV AL, 01H
OUT 03H,AL ;产生选通 MOV AH,4CH INT 21H CODE ENDS END START
29、IBMPC机中,只有一片8259A,可接受外部8级中断。在I/O地址中,分配8259A的端口地址为20H和21H,初始化为:边沿触发、缓冲连接、中断结束采用EOI命令、中断优先级采用完全嵌套方式,8级中断源的中断类型分别为08H—0FH,试编写初始化程序。 解: MOV DX,20H MOV AL,00010011B
OUT DX,AL ;写入ICW1 MOV DX,21H MOV AL,08H
OUT DX,AL ;写入ICW2 MOV AL,00001101B
OUT DX,AL ;写入ICW4 XOR AL,AL
OUT DX,AL ;写入OCW1 。。。。。。 STI 。。。。。。
30、设8259A的端口地址为20H、21H,请读入IRR、ISR、IMR寄存器的内容,并相继保存在数据段2000H开始的内存单元中;若该8259A为主片,请用查询方式,查询哪个从片有中断请求。
解:MOV AL,xxx01010B 发OCW3,欲读取IRR的内容 OUT 20H,AL
IN AL,20H 读入并保存IRR的内容 MOV (2000H),AL
MOV AL,xxx01011B 发OCW3,欲读取ISR的内容 OUT 20H,AL
IN AL,20H 读入并保存ISR的内容 MOV (2001H),AL
IN AL,21H 读入并保存ISR的内容 MOV (2002H),AL
MOV AL,xxx0110xB 发OCW3,欲查询是否有中断请求
OUT 20H
IN AL,20H 读入相应状态,并判断最高位是否为1 TEST AL,80H JZ DONE
AND AL,07H 判断中断源的编码 ………… DONE:HLT
33、8253的计数通道0连接如下图,试回答
(1)计数通道0工作于何种方式,并说明理由。
(2)写出计数通道0的计数初值,CLK0输入的频率是多少?并说明理由。
解:(1)方式2,因为是周期性波形,并且波形不对称 (2)N=1ms/400ns=2500,2.5MHZ
34、如图所示8086与DAC0832的接口 (1)在图中画出单极性输出的电路图。
(2)写出输出锯齿波的程序片断,包括延时程序。
解:
DACONTOR1: MOV DX,81H MOV AL,00H ;延时
DACON1: CALL DELAY OUT DX,AL
INC AL ;数字量加1
JMP DACON1 ;循环转换得到锯齿波 HLT
DELAY PROC NEAR PUSH BX
MOV BX,1000 NEXT: DEC BX
JNZ NEXT POP BX
RET DELAY ENDP
35、将两片6264连接到8088系统总线上,要求其内存地址范围为7000H-73FFH,试画出连接图。 解:
70000H=0111 0000 0000 0000 0000,则连接图如图所示。
36、设8253三个计数器的端口地址为201H、202H、203H,控制寄存器端口地址200H。输入时钟为2MHz,让1号通道周期性的发出脉冲,其脉冲周期为1ms,试编写初化程序段。 解:要输出脉冲周期为1ms,输出脉冲的频率是1000,当输入时钟频率为2MHz时,计数器初值是2000使用计数器1,先读低8位,后读高8位,设为方式3,二进制计数,控制字是76H。设控制口的地址是200H,计数器0的地址是202H。程序段如下: MOV DX,200H MOV AL,76H
OUT DX,,AL MOV DX,202H MOV AX,2000 OUT DX,AL
MOV AL,AH OUT DX,AL
8、编写程序设计一个16位带符号数和32位带符号数相乘程序。(DX、AX)*CX->DX、CX、AX,为有符号数
解: MULS48: MOV [1000], 0 ; 1000单元作为负数标志 CMP DX, 0 ; 乘数为负数吗? JNS CHKK ; 否,则转CHKK NOT AX ; 是,则取补码 NOT DX ADD AX, 1 ADC DX, 0
NOT [1000] ; 负数标志置1
CHKK: CMP CX, 0 ; 乘数为负数吗? JNS GOMUL ; 否,则转GOMUL NOT CX ; 是,则取补码 ADD CX, 1
NOT [1000] ; 将负数标志取反
GONUL: CALL MUL48 ; 调用32位*16位无符号数乘法程序 CMP [1000], 0 ; 结果为正数吗? JZ EXIT0 ; 是正数,则转移 NOT AX ; 是负数,则取补码 NOT CX NOT DX ADD AX, 1 ADC CX, 0 ADC DX, 0 EXIT0: RET
10、编写程序段设计一个实现16位非组合BCD码减法的程序。 解: SUBCD: MOV CH, AH ; AX-BX->AX,为非组合BCD码 SUB AL, BL AAS
XCHG AL,CH SBB AL,BH AAS
MOV AH,AL MOV AL,CH RET