微机原理期末复习解答题 联系客服

发布时间 : 星期二 文章微机原理期末复习解答题更新完毕开始阅读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