《微型计算机技术及接口》试验指导手册部分习题解答
2.26 8086/8088的中断向量表中可以看到,如果一个用户想定义某个中断,应该
选择在什么范围?
答:应该选择在中断类型码为32(20H)~255(FFH)范围。
3.7 下面那些正确,那些错误?
XCHG CS, AX
MOV [BX], [1000]
XCHG BX, IP
PUSH CS
POP CS
IN BX, DX
MOV BYTE [BX], 1000
MOV CS, [1000]
3.16 方法一: 串操作指令
注意操作方向3.16 方法二:常规比较法
注意指针DI-1才是要操作的数
AA: MOV SI, 2170H
MOV DI, 100H
MOV CX, 100H
MOV DX, CX
CLD
REP MOVSB
STD
MOV CX, DX
REPNZ SCASB
JNZ AA
MOV [DI], ‘ ’
…..
L0:
L2:
L3:
AA:
MOV SI, 2170H
MOV DI, 100H
MOV CX, 100H
MOV DX, CX
MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
LOOP L0
MOV CX, DX
CMP AL, [DI-1]
JZ L3
DEC DI
LOOP L2
JMP AA
MOV [DI-1], ‘ ’
…….
3.19 找最大值并放在AL中 3.25
题找第一个非零元素,并清零
用串操作方法
最后一条指令,对连续的两个单
元写0
L1: L0: MOV CX, 60H
MOV AL, 0
MOV SI, OFFSET BUF
CMP AL, [SI]
JA L0
MOV AL, [SI]
INC SI
LOOP L1
AA:
MOV DI, OFFSET TABLE
MOV CX, 160
MOV AL, 0
CLD
REPE SCASB
JZ AA
MOV WORD PTR [DI], 00
…..
3.25 找第一个非零元素,并清零
常规比较方法
最后一条指令,对连续的两个单元
写0 3.30
MUL 48
16位数与32数无符号数相乘结
果为48位
L1:
L0: L2: MOV DI, OFFSET TABLE
MOV CX, 160
MOV AL, 0
CMP AL, [DI]
JNZ L0
INC DI
LOOP L1
JMP L2
MOV WORD PTR [DI], 00
…..
STAT:
MUL48:
JMP MUL48
HI0
LO0
HI1
LO1
HI2
LO2
DW ?
DW ?
DW ?
DW ?
DW ?
DW ?
MOV HI0, DX
MOV LO0, AX
MUL BX
MOV HI1, DX
MOV LO1, AX
MOV AX, HI0
MUL BX
MOV HI2, DX
MOV LO2, AX
; 存到AX, BX, CX中
MOV AX, LO1
MOV BX, HI1
ADD BX, LO2
MOV CX, HI2
ADC CX, 0
RET
3.31 MULS48 16位数与32数有符号数相乘结果为48位,先判断两个数的正负,然后调用 MUL48
[1000] 中放符号标志
MULS48: L0:
L1: EXIT: MOV [1000], 0 CMP [DX], 0 JNS L0
NOT AX
NOT DX
ADD AX, 1 ADC DX, 0 NOT [1000] CMP [BX], 0 JNS L1
NOT BX
ADD BX, 1 NOT [1000] CALL MUL48 CMP [1000], 0 JZ EXIT
NOT AX
NOT BX
NOT CX
ADD AX, 1 ADC BX, 0 ADC CX, 0 RET
6.26 用8251异步发送一段数据
注意段地址的使用
COUNT EQU xxxx
……
MOV AL, 7BH
OUT 42H, AL
MOV AL, 35H
OUT 42H, AL
PUSH DS
MOV AX, 2000H MOV DS, AX 程序先前程序的数据段压栈保护DS指向操作数据段
L00: MOV SI, 3000H
MOV CX, COUNT
IN AL, 42H
TEST AL, 01H
JZ L00
MOV AL, [SI]
OUT 40H, AL
INC SI
LOOP L00
POP DS
数据个数
判断发送是否准备好?
发送数据并改变地址指针
出栈恢复以前处理的数据段
6.25 参考初始化流程,用程序对8251A进行同步模式设置。奇地址端口的地址为66H,规定用内同步方式,同步字符为2个,用奇校验,7个数据位。
答:模式字为:00011000B=18H。两个同步字符取16H,控制字为97H,它使8251A 对同步字符进行检索;同时使状态寄存器中的3个出错标志复位;使8251A的
发送器启动,接收器也启动;CPU当前已准备好进行数据传输。具体程序段如
下:
MOV AL,18H ;设置模式字
OUT 66H,AL
MOV AL,16H ;发送两个同步字符
OUT 66H,AL
OUT 66H,AL
MOV AL,97H ;设置控制字
OUT 66H,AL
6.30数据从8255A的端口C往数据总线上读出时,8255A的几个控制信号CS、A1、A0、
RD、WR分别是什么电平?
CS WR
CS
7.12 怎样用8259A的屏蔽命令字来禁止IR3和IR5引腿上的请求?又怎样撤销这一禁止命
令?设8259A 的端口地址为90H 、92H 。 答:1. CLI
IN AL ,92H ;(AL)←(IMR)
OR AL ,28H ;禁止IR 3和IR 5引脚上的中断请求 OUT 92H ,AL ;OCW 1送奇地址端口 STI
2. CLI
IN AL ,92H ;(AL)←(IMR)
AND AL ,0D7H ;允许IR 3和IR 5引脚上的中断请求 OUT 92H ,AL ;OCW 1送奇地址端口 STI 7.32 程将8253计数器0设置为模式1,计数初值为3000H ;计数器1设置为模式2,计数
初值为2010H ;计数器2设置为模式4,计数初值为4030H ;地址设为0070H 、0072H 、0074H 、0076H 。 答: MOV AL ,32H ;设置计数器0为模式1
OUT 76H ,AL
MOV AX ,3000H ;写计数初值 OUT 70H ,AL MOV AL ,AH OUT 70H ,AL
MOV AL ,74H ;设置计数器1为模式2 OUT 76H ,AL
MOV AX ,2010H ;写计数初值 OUT 72H ,AL MOV AL ,AH OUT 72H ,AL
MOV AL ,0B8H ;设置计数器2为模式4 OUT 76H ,AL
MOV AX ,4030H ;写计数初值 OUT 74H ,AL MOV AL ,AH OUT 74H ,AL
8.2
在T 型电阻网络组成的D/A 转换器中,设开关K 0、K 1、K 2、K 3、K 4分别对应一位
二进制数,当二进制数据为10110时,流入运算放大器的电流为多少?画出这个T 型网络。
答:1.流入运算放大器的电流I 为:(n=5)
2.T 型网络如下图:
R 16V 1122R
2V )B 10110(R 2V N R 2V I REF
5REF 5REF N REF =?=?=?=