第一章 1.8 解:
[ X ]补=00111011 [ - X ]补=11000101
[ Y ]补=00111011 [ - Y ]补=11000101
1. [ X + Y ]补=1110011 X + Y = 1001100 = ( -25 )10
0 0 1 1 1 0 1 1
+ 1 0 1 0 1 1 0 0
1 1 1 0 0 1 1 1
C1=0, C2=0
C1 ⊕ C2=0, 无溢出
2. [ X - Y ]补=10001111
0 0 1 1 1 0 1 1
+ 0 1 0 1 0 1 0 0
1 0 0 0 1 1 1 1
C1=1, C2 = 0
C1 ⊕ C2 = 1 , 溢出
3. [ -X + Y ]补=01110001
1 1 0 0 0 1 0 1
+ 1 0 1 0 1 1 0 0
1 0 1 1 1 0 0 0 1
C1=0, C2 = 1
C1 ⊕ C2 = 1 , 溢出
4. [ -X - Y ]补=00011001 -X - Y = 00011001 = ( +25 )10
1 1 0 0 0 1 0 1
+ 0 1 0 1 0 1 0 0
1 0 0 0 1 1 0 0 1
C1=1, C2 = 1
C1 ⊕ C2 = 0 , 无溢出
1.9 解:
1
课后
网 www.khdaw.com
2
1. -( 2-2-23)×2127 ~ -1×2-126
1×2-126 ~ ( 2-2-23)×2127 不含特例±0、±∞
2.
z FB8789ABH
数符s=1,阶码e=11110111=( 247) 10
尾数 f=0.00001111000100110101011=( 0.058888792) 10
v= ( -1) s×2e-127×( 1 + f ) = -1.058888792×2120
z 58EBA987H
数符s=1,阶码e=10110001=( 177) 10
尾数 f= ( 0.841111063) 10
v= ( -1) s×2e-127×( 1 + f ) = -1.841111063×250
3.
z (- 86.57) 10 =1010110.10010001111010111
数符 s=1,阶码 e=127+6=133
尾数 f=0.01011010010001111010111B
单精度浮点数:C2AD23D7H
z (- 86.57) 10 =1010110.1001001
数符 s=1, 阶码 e=127+6=133=10000101B
2 -4 = 0.0625, 2 -7 = 0.0078125
尾数 f=0.0101101001001B
单精度浮点数:
1100 0010 1010 1101 0010 0100 0000 0000
C 2 A D 2 4 0 0 H
课后答案网 www.khdaw.com
3
第二章
2.10 答:
1) MOV AX, [1234H]
直接寻址、EA=1234H、PA=DS×16+EA=11234H
2) MOV AX, TABLE
直接寻址、EA=0100H、PA=DS×16+EA=10100H
3) MOV AX, [BX+100H]
基址寻址、EA= BX+100H=140H、PA= DS×16+EA=10140H
4) MOV AX, TABLE[BP][SI]
带位移的基址变址寻址、EA= BP+SI+TABLE=195H、PA= SS×16+EA
=20195H
2.12 答:
1) 目的操作数是 基址变址寻址,55AAH → 2AD5H
2) 源操作数是 基址寻址,PA=SS×16+BP+100H=30200H
3) 源操作数是 隐含寻址,PA=SS×16+SP=30020H
4) 目的操作数是 变址寻址,PA= DS×16+DI+500H=20800H
5) 目的操作数是 隐含寻址,PA=SS×16+SP=30020H
2.14 解: (BP)=4433H,(SP)=1022H,
2.15
1. ( CL ) = 0F6H
2. [1E4F6H] = 78H
3. ( BX ) = 0056H , ( AX ) = 1E40H
课后答案网 www.khdaw.com
4
4. ( SI ) = 00F6H , [ SI ] = 0024H
5. ( AX ) = 5678H , [ 09226H ] = 1234H
2.16 解:
1)MOV AX, COUNT [SI] [DI]
错,基址寻址用的寄存器只有 BX、BP,不能是 SI。
2)MOV ES, 1000H
错。立即数不能直接送给段寄存器。
3)PUSH [BX][SI]
错。操作数是存储器寻址,且操作数类型不能确定时,要用 PTR 运
算符显式说明操作数的长度。
4)MOV CS, AX
错。CS 不能作目的操作数。
5)SHL AX, 2
16 位微机时错,32 位微机时则对。
6)MOV ES, DS
源操作数和目的操作数不能同为段寄存器。
7)ADD CX, [ AX+100H ]
错。AX 不能作为基址寄存器也不能作为变址寄存器使用。
8) INC DS
错。只能是通用寄存器,不能是段寄存器。
9)CMP [SI], [BX]
错。源操作数和目的操作数不能同为存储器操作数。
10)IMUL DX, AX
课后答案网 www.khdaw.com
5
对。
11)SBB DI, [DI]
对。
12)AND CX, [DX]
错。只有 BX、BP、SI、DI 可作为寄存器间接寻址用的寄存器。
13)OUT CX, AL
错。输入输出指令中只能以 DX 进行间接寻址。
14)IN AX, 380H
错。直接寻址时端口号必须≤255。
15)LDS CS, [BX]
错。目的操作数只能是通用寄存器。
16)LEA AX, BX
错。源操作数只能是存储器操作数。
17)XCHG AH, AL
对。
18)XCHG CX, 2400H
错。立即数不能作为操作数。
19)JMP BX
对。段内寄存器间接寻址。
20)JMP [BX][SI]
错。没有说明内存操作数的类型。应用类型修改运算符 PTR 进行显
式说明。
课后答案网 www.khdaw.com
6
2.17 解:可用 debug 验证
STD ;DF=1
MOV BX, 8080H ;
ADD BH, BL ;BX=0080H, CF=1, OF=1, ZF=1, SF=0, AF=0,
PF=1
RCR BL, 1 ;OF=0, CF=0
CMC ;CF=1
2.18 解:
1) ADD AX, BX ; AX=0FFFDH, SZAPCO = 100000
2) RCL AX, 1 ; AX=3151H, SZAPCO = - - - -11
3) SBB AX, BX ; AX=3152H, SZAPCO = 000001
4) OR AX, BX ; AX=0FFFDH, SZAPCO = 10U000
5) CMP AX, BX ; AX=98A8H, SZAPCO = 000101
2.20 解
( IP ) = 009AH , ( CS ) = 2000H , ( SP ) = 0F178H
[ SP ] = 94H , [ SP+1 ] = 3DH , [SP+2 ] = 50H , [SP+3 ] = 40H
2.26 解:
MOV AL, BUF ;取无符号数变量
CMP AL, 20 ;
JB NEXT1 ;小于 20 则转移到 NEXT1
SUB AL, 20 ;大于 20。Y=AL=X-20
课后答案网 www.khdaw.com
7
JMP NEXT2
NEXT1: MUL 3 ;Y=3X=AL
NEXT2: HLT
2.33 解:
1) L1
2) L3
2.34 解:
1) 从端口 20H 处读入一组字节型数据,并求和,结果放入 AX 中;
读入的字节数由端口 30H 处读入一字节数来决定。
2) 将 ES 段从 EA = 0100H 开始的 128 个字单元清 0。
2.35 解:
MIN: MOV BX, ?1 ;3000H
MOV AL, [BX]
MOV CX, ?2 ;100H
LP1: INC BX
CMP AL, [BX]
?3 LP2 ;JLE
MOV AL, [BX]
LP2: DEC CX
JNZ ?4 ;LP1
MOV ?5, AL ;[3100H]
2.36 解: 70H
课后答案网 www.khdaw.com
8
第三章
3.1 解:
地址 数值 H 注释
0200H FF ARY -1
0201H FF
0202H 02 2
0203H 00
0204H FD -3
0205H FF
0206H 04 4
0207H 00
0208H 08 CNT $-ARY
0209H 00 0208-0200=8H
020AH 00 VAR ARY
020BH 02
020CH 10 $
020DH 02 020C+4=0210H
见程序 P174-31.ASM
MOV AX, ARY ;AX=-1
MOV BX, OFFSET VAR ;BX=20AH
MOC CX, CNT ;CX=8
MOV DX, VAR+2 ;DX=210H
LEA SI, ARY ;SI=200H
课后答案网 www.khdaw.com
3.2 解:见 P174-32.ASM
1.
地址顺序 数值 H
00 01 1
01 00
02 02 2
03 00
04 03 3
05 00
06 42 B
07 41 A
08 43 C
09 00 NUL
0A ?
0B ?
0C ?
0D ?
0E ?
0F ?
10 00 0
2. R1=0010H
3.3 解:
;2008 P175 3.3
9
课后答案网 www.khdaw.com
10
;
DATA SEGMENT
ARRAY DB 3 DUP(1,2,3,0,0,-1)
P_ARR DB 50 DUP(?)
M_ARR DB 50 DUP(?)
D_SUM DB 3 DUP(00H)
P_SUM DB 'PLUS:',00H,0DH,0AH,'$' ;准备 9 号 DOS 系统功
能调用
Z_SUM DB 'ZERO:',00H,0DH,0AH,'$'
M_SUM DB 'MINUS:',00H,0DH,0AH,'$' ;'0D’→ CR 键,’0AH’
→ LF 键
;PLUS:正数的个数。
;ZERO: 0 的个数。
;MINUS:负数的个数。
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX, DATA ;给 DS 赋初值,
MOV DS, AX ;建立其数据段的寻址性。
MOV CX, 18
MOV SI, 00H
XOR BX, BX
NEXT: CMP ARRAY[SI], 00H
JS M_PRO ;负数时则转移到 M_PRO
JZ Z_PRO ;是 0 时则转移到 Z_PRO
P_PRO: INC D_SUM ;是正数!
INC P_SUM+5
MOV AL, ARRAY[SI]
MOV BL, P_SUM+5
MOV (P_ARR-1) [BX], AL
JMP NEXT1
Z_PRO: INC D_SUM+1 ;是 0!
课后答案网 www.khdaw.com
11
INC Z_SUM+5
JMP NEXT1
M_PRO:INC D_SUM+2 ;是负数!
INC M_SUM+6
MOV AL, ARRAY[SI]
MOV BL, M_SUM+6
MOV (M_ARR-1) [BX], AL
NEXT1: INC SI
LOOP NEXT
ADD P_SUM+5, 30H ;假设:[P_SUM+5]≤9
ADD Z_SUM+5, 30H ;假设:[Z_SUM+5]≤9
ADD M_SUM+6, 30H ;假设:[M_SUM+6]≤9
MOV DX, OFFSET P_SUM
MOV AH, 09H
INT 21H ;9 号 DOS 系统功能调用
LEA DX, Z_SUM
MOV AH, 09H
INT 21H ;9 号 DOS 系统功能调用
LEA DX, M_SUM
MOV AH, 09H
INT 21H ;9 号 DOS 系统功能调用
MOV AX, 4C00H
INT 21H
CODE ENDS
END START
3.18 解:
;2008 P176 3.18
;
DSEG SEGMENT
BUF DB 11 ;最多输入 10 个字符(不计回车键)
DB ?
DBUF DB 11 DUP (?)
DISP DB 13 DUP (?)
课后答案网 www.khdaw.com
12
DSEG ENDS
;
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
STR_IN: MOV AX, DSEG
MOV DS, AX
MOV DX, OFFSET BUF
MOV AH, 0AH
INT 21H
MOV CL, BUF+1 ;实际输入字符数
XOR CH, CH
MOV BX, CX
ADD BX, OFFSET DISP
;DEC BX ;待显示字符串的最后一个字符的
偏移地址
INC BX ;为了实现待显示字符串前加回车、
换行键。
XOR SI, SI
XOR DI, DI
NEXT: MOV AL, DBUF[SI]
MOV [BX+DI],AL
INC SI
DEC DI
LOOP NEXT
MOV DISP, 0DH ;回车,光标移到行首位置
MOV DISP+1,0AH ; 换行键,光标移到下一行
MOV (DISP+2)[SI],'$' ;字符串结束标志$
LEA DX, DISP ;字符串显示
MOV AH,9
INT 21H
MOV AX, 4C00H
INT 21H
CSEG ENDS
END STR_IN
3.19 解:
只能输入 30~39 即‘0’~ ‘9’的 ASCII 码
41~46 即‘A’~ ‘F’ 的 ASCII 码
课后答案网 www.khdaw.com
13
3.21 解:
;2008 P176 3.21
;
DATA SEGMENT
BUF DB 08H,12H,34H,56H,78H,9AH,0BCH,0DEH,0F0H,0FFH
KEY DB 78H
DATA ENDS
;
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
CLD
LEA DI, BUF
MOV CL, [DI]
XOR CH, CH ;重复次数为 CX
INC DI
MOV AL, KEY
REPNE SCASB
JNE DONE
DEC BUF ;[BUF]=7H
MOV SI, DI
DEC DI
REP MOVSB
DONE: MOV AH, 4CH
INT 21H
CODE ENDS
END START
‘07H,12H,34H,56H,9AH,0BCH,0DEH,0F0H,0FOH,0FFH’
3.22 解:
;2008 P177 3.22
;
DSEG SEGMENT
BINVAL DW 23457
ASCVAL DB 5 DUP(00H) ;应是单引号’’,而非‘’
DSEG ENDS
;
课后答案网 www.khdaw.com
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
BIN_ASC:MOV AX, DSEG
MOV DS, AX
MOV AX, BINVAL
MOV CX, LENGTH ASCVAL
LEA SI, ASCVAL ;OFFSET
ADD SI, CX
DEC SI
MOV CX, 10
AGAIN: CMP AX, 10
JB DONE ;JBE
XOR DX, DX
IDIV CX
OR DL, 30H
MOV [SI], DL
DEC SI
JMP AGAIN
DONE: OR AL, 30H ;OR
MOV [SI], AL
MOV AX, 4C00H
INT 21H
CSEG ENDS
END BIN_ASC
第四章
P208
4.1 答:○1 C [P267]、○2 A、○3 B、○4 C、○5 D、○6 A、○7 B、A
4.2 答:⑴×、更快 ⑵×、 ⑶×、 ⑷×、指令执行完
毕 ⑸√、 ⑹×
4.3 答: ⑴ I/O 端口读总线周期
⑵ 端口号
⑶ IOR有效
⑷ 20H 端口输入的一字节数据
4.10 答:○1 C3 ○2 C2 ○3 C1
注意:逻辑 0 有效
14
课后答案网 www.khdaw.com
15
第五章
P243
5.1 答:⑴C、⑵A、⑶C、⑷B、⑸A、⑹A、⑺A、⑻C、⑼B、⑽B
5.9 答:
⑴ C F F F F
— A 8 0 0 0 215×5=160K
2 7 F F F H
⑵160÷80×8=80 个
⑶10 组
5.10 答:
MEMR、MEMW 信号的形成。
⑴
A19 A18 A17 A16 A15 A14 A13 A12 A11~A0 地址范围
0 0 … 0
1 1 1 0 0 0 1
1 1 … 1 0E2000H~0E3FFFH
0 0 … 0
1 1 1 0 1 1 1
1 1 … 1 0EE000H~0EFFFFH
⑵ ;P91
MOV AX, 0E200H
MOV ES, AX
MOV DI, 0
MOV CX, 20
CLD
MOV AL, 0
REP STOSB ;
MOV AX, 0EE00H
MOV ES, AX
MOV DI, 0
MOV CX, 20
CLD
MOV AL, 0
REP STOSB
课后答案网 www.khdaw.com
16
5.11 答:
⑴局部译码法
⑵
A15 A14 A13 A12 A11 A10~A0 地址范围
0 … 0
0
1 … 1 8000H~87FFH
0 … 0 1
1
0 0 0
1 … 1 0C000H~0C7FFH
A15 A14 A13 A12 A11 A10~A0 地址范围
0 … 0
0
1 … 1 8800H~8FFFH
0 … 0 1
1
0 0 1
1 … 1 0C800H~0CFFFH
A15 A14 A13 A12 A11 A10~A0 地址范围
0 … 0
0
1 … 1 9000H~97FFH
0 … 0 1
1
0 1 0
1 … 1 0D000H~0D7FFH
A15 A14 A13 A12 A11 A10~A0 地址范围
0 … 0
0
1 … 1 9800H~9FFFH
0 … 0 1
1
0 1 1
1 … 1 0D800H~0DFFFH
⑶重叠
5.12 答:
⑴
A19 A18 A17 A16 A15~A0 地址范围
0 … 0
0 0 1 0
1 … 1 20000H~2FFFFH
0 … 0
0 0 1 1
1 … 1 30000H~3FFFFH
⑵ 把图中 A16 → A0
A0 → A1
A15 → A16
⑶ 1# : 20000H ~ 3FFFEH 中的偶数地址
2# : 20001H ~ 3FFFFH 中的奇数地址
课后答案网 www.khdaw.com
17
5.15 答:
1) E F F F F 215=32K=16K×2
— E 8 0 0 0 两片
7 F F F H
2)
A19 A18 A17 A16 A15 A14 A13 A12 A11~A0 地址范围
1 1 1 0 1 0 0 0 0 … 0 0E8000H
1 1 1 0 1 1 1 1 1 … 1 0EFFFFH
3) MOV AX, 0E000H
MOV ES, AX
MOV DX, 128 ; 28×27=256×128
XOR BX, BX
NEXT1: MOV CX, 256 ;00H ~ FFH,共 256 个。
XOR AL, AL
NEXT2: MOV ES:8000H[BX], AL
INC AL
INC BX
LOOP NEXT2
DEC DX
JNZ NEXT1
课后答案网 www.khdaw.com
18
第六章
6.11 解:
序号 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 地址
1 1 1 1 1 1 1 0 0 × × 3F0H~3F3H
2 1 0 1 1 1 1 0 1 × × 2F4H~2F7H芯片
3 1 1 1 1 1 1 1 1 × × 3FCH~3FFH
1 1 0 1 1 1 1 0 0 0 0 2F0H
2 1 0 1 1 1 1 0 0 0 1 2F1H
3 1 0 1 1 1 1 0 0 1 0 2F2H
端口
4 1 0 1 1 1 1 0 0 1 1 2F3H
6.12 解:
题 5.12
DIP0 DIP1 DIP2 DIP3 DIP4 DIP5
闭合 闭合 闭合 闭合 打开 闭合
6.13 解:
DATA SEGMENT
BUFFER1 DB 128 DUP ( ? ) ;定义128个未初始
化的内存单元
PUBLIC BUFFER1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
READ_CRT MOV AX, DATA
MOV DS, AX
MOV DI, 0
MOV CX, 128 ;128 个
AGAIN: MOV DX, 0020H
WAIT$: IN AL, DX
TEST AL, 00000001B ;CRT 输出缓存
中有数据吗
JZ WAIT$ ;无,则 WAIT$
等待。
MOV DX, 0008H ; 有 , 则 从
课后答案网 www.khdaw.com
19
0008H 口读数据。
IN AL, DX ;
MOV BUFFER1[DI],AL
INC DI
LOOP AGAIN
MOV AH, 4CH
INT 21H
CODE ENDS
END READ_CRT
6.14 解:
DATA SEGMENT
BUFFER2 DB 64 DUP ( ? ) ;定义 64 个未初始
化的内存单元
PUBLIC BUFFER1
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
WR_CRT: MOV AX, DATA
MOV DS, AX
MOV DI, 0
MOV CX, 64
AGAIN: MOV DX, 0020H
WAIT$: IN AL, DX
TEST AL, 10000000B ;CRT 输入缓存
中空闲吗
JNZ WAIT$ ;满,WAIT$等
待。
MOV DX, 0008H ; 空 , 则 向
0008H 口写数据。
MOV AL, BUFFER2[DI]
OUT DX, AL
INC DI
LOOP AGAIN
MOV AH, 4CH
INT 21H
CODE ENDS
END WR_CRT
课后答案网 www.khdaw.com
第七章
7.10 改
[例 6.14] 某 80x86 系统的中断系统由二片 8259A 级联而成,从片
接入主片的 IR2。主、从 8259A 的 IR5 上各接有一个外部中断源,其
中断向量号分别为 75H、85H。假设它们的中断人口地址均在同一段
中,段基址为 4310H.偏移地址分别为 1230H、2340H;所有中断都
采用边沿触发方式、全嵌套方式、正常 EOI 结束方式。
(1)写出主、从 8259A 中断向量号范围;
(2)假定主、从片端口地址分别为 20H、21H 和 26H、27H。
(3)试编写全部初始化程序。
解:(1)已知某个IRi的中断向量号确定整个 8259A中断向量号范围的
方法是:高 5 位取IRi的中断向量号的高 5 位,低 3 位则取变化值范
围 000~111B。于是,由主、从 8259A的IR5中断向量号分别为 75H,
85H可知,主 8259A中断向量号范围:70H~77H;从 8259A中断向量
号范围:80H~87H。
(2)此题硬件连线要考虑各 8059A 与 CPU 的连接,还要考虑两片
8059A 间的级联连接。
z 8259A 与 CPU 连接的方法是:
·端口选择线 Ao 一般与 MPU 低位地址线 Ao 直接相连。
·数据线D0~D7与MPU数据线D0~D7直接相连。
·片选线CS则与 MPU 余下的高位地址线经译码后产生的片选信
号相连。
· RD、WE、 INTR分别与控制总线组合形成的 IOR、 IOW和中断
响应信号 INTA相连。
·主片的 INT 与 MPU 的 INTR 直接相连。
20
课后答案网 www.khdaw.com
z 8259A 级联连接方法是:
·从片的INT与主片的IR2直接相连。
·主片的CAS2~CAS0与各从片的CAS2~CAS0直接相连。
· /SP EN取决于是采用缓冲还是非缓冲方式。
本题采用非缓冲方式,主片 /SP EN接+5v,从片 /SP EN接地。
·端口地址 20H、21H ――― 0000 0000 0010 000× B
26H、27H ――― 0000 0000 0010 011× B
A3A2A1接LS138: 000 → 0Y , 011 → 3Y
A15~A6 经或门的 2AG ,A4接LS138 的 2BG ,A5接LS138 的G1。
由此画出硬件连线图,如图 6.3 所示。
(3)由题意,初始化程序应包括两部分
,即主、从片的初始化
和填写相关中断向量
。程序段如下:
;初始化 8259A 主片
MOV AL, 11H ;写 ICW1,边沿触发、多片级
联、写 ICW4
OUT 20H. AL
21
课后答案网 www.khdaw.com
22
JMP SHORT $+2 ;等待
MOV AL. 70H ;写 ICW2,主片中断向量号为
70H~77H
OUT 21H. AL
JMP SHORT $+2
MOV AL. 04H ;写 ICW3.IR2 接有从片
OUT 21H. AL
JMP SHORT $+2
MOV AL. 00010001B ;写 ICW4,特殊全嵌套、非缓
冲、正常 EOI
OUT 21H, AL
JMP SHORT $+2
MOV AL, 0FFH ;用 OCW1 屏蔽所有中断请求
OUT 21H. AL
;初始化 8259A 从片
MOV AL, 11H ;写 ICW1,边沿触发、多片级
联、写 ICW4
OUT 26H. AL
JMP SHORT $+2
MOV AL, 80H ;写 ICW2,从片中断向量号为
80H~87H
OUT 27H, AL
JMP SHORT $+2
MOV AL, 02H ;写 ICW3.对应主片 IR2 的编
码为 010
OUT 27H, AL
JMP SHORT $+2
MOV AL, 01H ;写 ICW4,一般全嵌套、非缓
冲、正常 EOI
OUT 27H, AL
JMP SHORT $+2
MOV AL, 0FFH ;用 OCW1 屏蔽所有中断请求
OUT 27H, AL
课后答案网 www.khdaw.com
23
; 填写 75H 和 85H 号中断向量
SUB DI, DI
MOV ES, DI ;ES 指向中断向量表段基址
CLD
MOV DI, 75H*4 ; 75H 号中断向量地址
MOV AX, 1230H ;中断处理程序偏移地址
STOSW
MOV AX, 4310H ;中断处理程序段基址
STOSW
MOV DI, 85H*4 ;初始化 85H 号中断向量
MOV AX, 2340H
STOSW
MOV AX, 4310H
STOSW
MOV AL, 00H ;用OCWl开放主片所有中断请
求
OUT 21H, AL
JMP SHORT $+2
MOV AL, 00H ;用OCWl开放从片所有中断请
求
OUT 27H, AL
分析:在多片级联方式下,系统要工作在完全嵌套方式,主片必须设
置为特殊全嵌套方式,以便同级中断能中断同级中断。因为在多片级
联方式下,从片的 8 个中断源是共用主片的一个中断级,而实际上从
片的 8 个中断源也有优先级区别。假定当前正在服务的中断级是从片
的某个中断级,若当 CPU 正在为该中断源服务时,该从片又向主片
提出中断请求,此时对主片而言是同一级中断请求,但对从片来说,
却是出现了一个高优先级中断请求,应该优先处理。
课后答案网 www.khdaw.com
24
[例 6.15]在上题初始化的基础上,假定要求在为从片中断源 IR5
服务时,设置特殊屏蔽方式,开放较低级的中断请求,编写程序
片断。
解:特殊屏蔽方式通过在从片中断源 IR5 的中断处理程序中设置
OCW3 实现,设置时要先关中断,设置完再开中断。程序片段如下:
Interrupt: … ;从片 IR5 中断处理程
序
¦
¦
CLI ; 关中断,以便设置命
令时不响应中断
MOV AL, 68H ;设置特殊屏蔽方式
OUT 26H, AL
IN AL, 27H ;读中断屏蔽字 IMR 状
态
OR AL, 00100000B ;屏蔽从片 IR5 中断
OUT 27H, AL
STI ;设置完,开中断
¦ ;继续中断处理,可响应
低级中断
¦
CLI ;为复位特殊屏蔽方式
而关中断
IN AL, 27H
AND AL, 11011111B ;解除对从片 IR5 的屏蔽
OUT 27H, AL
MOV AL, 48H ;复位特殊屏蔽方式
OUT 26H, AL
STI
¦
¦
MOV AL, 21H ;发 EOI 命令
课后答案网 www.khdaw.com
25
OUT 26H, AL
IRET
分析:特殊屏蔽方式一般用在中断处理程序中,动态地改变中断
优先级。但要注意,在中断处理程序结束前应复位特殊屏蔽方式,以
便恢复正常的中断优先级管理。在设置了特殊屏蔽方式后,用 OCW1
屏蔽 IR5 时,就会同时使 IR5 在当前中断服务寄存器路 ISR 中对应位
清 0,这样,不仅屏蔽了当前正处理的这—级中断.而且真正开放了
其他较低级的中断。
7.11 解:参 P291、P149。
┆
┆
;中断识别
Int_ID: CLI ;关中断,禁止嵌套
MOV AH, 80H ;赋测试屏蔽位初值
MOV CX, 8 ;8 个中断请求输入
IN AL, 0040H ;读状态口
NEXT: ROL AH, 1 ;准备测试 Di 位。
AND AL, AH
LOOPZ NEXT ;仍无中断或没有测
试完 8 位时循环
JNZ INT_JMP ;有中断,跳转
┆
┆ ;没有中断请求,主
程序继续
┆
JMP START ;主程序循环
;实现中断转移
INT_JMP:MOV BX, 7
SUB BX, CX
JMP WORD PTR ADDRTAB[BX * 2] ; 转 各 中
课后答案网 www.khdaw.com
断服务程序
INT_S1: …… ;1 号中断服务程序
┆
INT_S2: ……
┆
INT_S8: …… ;8 号中断服务程序
┆
7.30
答:由图 7.65 可知,A 口为方式 1 输入,PC5、PC4、PC3 为 A 口的固
定应答线,而且采用硬件中断方式来进行数据传送;另外增加一个控
制信号端 PC6(输出),使其输出一正脉冲,作纸带机的启动控制信
号。
8255A 的方式控制字地址为×××× ×011 B:现取 03H 为其
地址。
初始化程序如下:
MOV AL, 0BOH ;A 口方式 1 输入、高位
C 口输出。
MOV DX, 03H
26
课后答案网 www.khdaw.com
27
OUT DX, AL
MOV AL, 09H ;INTEA (PC4) 置 1。
OUT DX, AL
;填中断向量表,PC 开中断。
MOV AL, 0CH ;启动纸带机。 PC6
置 0。
OUT DX, AL
MOV AL, 0DH ; PC6 置 1。
OUT DX, AL
MOV AL, 0CH ; PC6 置 0。
OUT DX, AL
7.31 解:
MOV AL, 8EH ;A 口方式 0 输出、C 口
高位输入。
MOV DX, 0F7H ;B 口方式 1 输入、C 口
低位输出
OUT DX, AL
MOV AL, 05H ;INTEB (PC2) 置 1。
OUT DX, AL
MOV AL, 0CH ;PC6 清 0。
OUT DX, AL
;填中断向量表,PC 开中断。
8254
7.25 解: 题目有错。
1. 由图可知,CH0、CH1 的门控信号 GATE0 和 GATE1 均固定接高
课后答案网 www.khdaw.com
28
电平+5V,所以 CH0 和 CH1 都工作于软启动方式(MODE 0、4、
2、3);
2. CH0、CH1 串联定时,所以 CH0 计数结束必须能自动重装,重新
计数;而且 OUT0 能输出一脉冲信号,作为 CH1 的计数脉冲信号
(CLK1)。方式 0、方式 4 计数结束不能自动重装;因为减一计
数是在 CLK 时钟脉冲的下降沿进行的,而 OUT0 的输出经一反相
器接到 CLK1,定时器在 MODE 2 或 MODE 3 时的 OUT1 输出变
成正脉冲(宽度不同),两者脉冲下降沿的时刻完全相同,所以两
种方式都则可以。
3. 要求定时到时 OUT1 输出由高变低,则 MODE 0、MODE 3 不行;
MODE 4 可以(计数到 0 时 OUT1 输出由高变低,下一个 CLK1
脉冲 OUT 输出又变为高。脉宽为一个 CLK1 周期。);MODE 2 也
可以(计数到 1 时 OUT1 输出由高变低,计数到 0 时 OUT 输出又
变为高。脉宽为一个 CLK1 周期。编程时也要考虑 MODE 2 的自
动重新定时问题。)
CH 0 方式控制字:00110100B=34H ;16 位计数,MODE 2,二
进制计数。
CH 1 方式控制字:01111000B=78H ;16 位计数,MODE 4,二
进制计数。
MOV AL, 34H ;CH 0 方式控制字
OUT 33H, AL
;CH 0 定时系数 TIME0
MOV AX, TIME0
OUT 30H, AL
MOV AL, AH
MOV 30H, AL
MOV AL, 78H ;CH 1 方式控制字
课后答案网 www.khdaw.com
29
OUT 33H, AL
;CH 1 定时系数 TIME1
MOV AX, TIME1
OUT 31H, AL
XCHG AL, AH
MOV 31H, AL
;初始化中断向量表
;中断服务程序首址存储在 INT-TIME
CLI
PUSH DS
PUSH DX
PUSH AX
LDS DX, INT-TIME
MOV AH, 25H
INT 21H
POP AX
POP DX
POP DS
STI
课后答案网 www.khdaw.com
第九章 P444 ADC-DAC
9.8 解:(1)偏移码和补码同属双极性码。二者对应关系为:同一个数的偏移码与
补码,除了符号位相反外,数值位完全相同。所以要实现输入为补码的双极性
DAC,只要在双极性偏移码 DAC 电路基础上,将输入补码的符号位变反,转换
成偏移码即可。苦要实现 DAC1210 与 8 位 PC 总线连接,则需采用双缓冲结构,
接口要提供三个端口地址。电路原理如图 l0.2 所示。
地址:10 0000 000 0 高 8 位地址
10 0000 000 1 低 4 位地址
10 0000 001 x 第二级缓冲寄存器地址(启动 DAC 转换)
30
课后答案网 www.khdaw.com
9.11 为了说明 D/A 转换器的应用,我们来看怎样利用
D/A 转换器产生一个锯齿波电压。
对于图 13-10 的电路,为产生一个锯齿电压,可采用以
下程序:
MOV DX, PORTA ;PORTA 为 D/A 转换器端
口号
MOV AL, 0FFH ;初值为 0FFH
ROTATE: INC AL
OUT DX, AL ;往 D/A 转换器输出数据
JMP ROTATE
31
课后答案网 www.khdaw.com
实际上,上面程序在执行时得到的输出电压会有 256 个小台
阶,不过,宏观看,仍为连续上升的锯齿波。对于锯齿波的周期,
可以利用延迟进行调整。延迟的时间如果比较短,那么,就可以
用几条 NOP 指令来实现,如果比较长,则可用延迟子程序。为
了产生负向的锯齿波,只要将指令 INC AL 改为 DEC AL 就
可以了。另外,只要把正向与负向锯齿波结合起来就容易产生三
角波的输出。
比如,下面的程序段就是利用延迟子程序来控制锯齿波周期
的。
MOV DX, PORTA ;PORTA 为 D/A 转换
器端口号
MOV AL, 0FFH ;初值为 0FFH
ROTATE: INC AL
OUT DX, AL ;往 D/A 转换器输出数
据
CALL DELAY ;调用延迟子程序
JMP ROTATE
DELAY: MOV CX, DATA ;住 CX 中送延迟常数
32
课后答案网 www.khdaw.com
NEXT: LOOP NEXT
RET
函数波形发生器 D/A 转换接口一般设计过程为:
(1)由系统精度、分辨率要求确定 DAC 精度和位数;
(2)按输出要求设计接口电路;
(3)确定参考电压和输出方式(单极性或双极性);
(4)波形产生算法选择;
(5)程序设计。
9.21
答:一、电路图设计
1. 因为 ADC0804 片内具有可控三态输出缓冲器,所以可与微机
系统的数据总线直接相连。
2. 因为输入信号电压范围为 0~+5V,所以VR/2 端不需要接参考
电压芯片。参考电压由ADC0804 内部提供(+2.5V)。
3. fCLK取 640Khz,即C=150PF,R=10K欧姆。
4. 端口地址 0230H → 0000 0010 0011 0000
5. INTR经反相器后接 B4/IR2。
图省略
二、程序设计
;参 P65
;修改 IR2 中断向量号 0AH 的中断服务程序的人口地址
;主程序
33
课后答案网 www.khdaw.com
34
PUSH DS
MOV DX, OFFSET SAMP
MOV AX, SEG SAMP
MOV DS, AX
MOV AL, 0AH
MOV AH, 25H
INT 21H
POP DS
MOV CX, 200
MOV AX, SEG BUF
MOV DS, AX
MOV BX, OFFSET BUF
OUT 230H, AL ;启动ADC转换
;中断服务程序
SAMP: IN AL, 230H
MOV [BX], AL
INC BX