微机原理陈继红版部分答案 下载本文

第三章 8086/8088 指令系统和寻址方式 习题答案(部分)

1.1 总结计算机中十进制、二进制、八进制及十六进制数的书写形式。123D、0AFH、 77Q、1001110B 分别表示什么计数制的数?

答案:123D、0AFH、77Q、1001110B 分别表示十进制、十六进制、八进制、二进制。 1.2 字长为8 位、16 位二进制数的原码、补码表示的最大数和最小数分别是什么?

答案:8 位原码表示的最大数:(27-1)、8 位补码表示的最大数:(27-1)、8 位原码表示的最小数:-(27-1)、8 位补码表示的最小数-27。

16 位原码表示的最大数:(215-1)、16 位补码表示的最大数:(215-1)、16 位原码表示的最小数:-(215-1)、16 位补码表示的最小数-215。 1.3 把下列十进制数分别转换为二进制数和十六进制数。 (1)125 (2)255 (3)72 (4)5090

答案:(1) 125 二进制数:0111 1101B;十六进制数:7DH。 (2)255 二进制数:1111 1111B;十六进制数:0FFH。 (3)72 二进制数:0100 1000B;十六进制数:48H。

(4)5090 二进制数:0001 0011 1110 0010B;十六进制数:13E2H。 1.4 把下列无符号二进制数分别转换为十进制数和十六进制数。 (1)1111 0000 (2)1000 0000 (3)1111 1111 (4)0101 0101

答案:(1)1111 0000 十进制数:240D;十六进制数:0F0H。 (2)1000 0000 十进制数:128D;十六进制数:80H。 (3)1111 1111 十进制数:255D;十六进制数:0FFH。 (4)0101 0101 十进制数:85D;十六进制数:55H。

1.5 把下列无符号十六进制数分别转换为十进制数和二进制数。 (1)FF (2)ABCD (3)123 (4)FFFF

答案:(1)FF 十进制数:255D;二进制数;1111 1111B。

(2)ABCD 十进制数:43981D;二进制数;1010 1011 1100 1101B。 (3)123 十进制数:291D;二进制数;0001 0010 0011B。

(4)FFFF 十进制数:65535D;二进制数;1111 1111 1111 1111B。

1.6 分别用8 位二进制数和16 位二进制数写出下列十进制数的原码和补码。 (1)16 (2)-16 (3)+0 (4)-0 (5)127 (6)-128 (7)121 (8)-9 答案:

(1)16 8 位二进制数原码:0001 0000 补码:0001 0000;16 位二进制数原码:0000 0000 0001 0000 补码: 0000 0000 0001 0000。

(2)-16 8 位二进制数原码:1001 0000 补码:1111 0000;16 位二进制数原码:1000 0000 0001 0000 补码:1111 1111 1111 0000。

(3)+0 8 位二进制数原码:0000 0000 补码:0000 0000;16 位二进制数原码:0000 0000 0000 0000 补码:0000 0000 0000 0000。

(4)-0 8 位二进制数原码:1000 0000 补码:0000 0000;16 位二进制数原码:1000 0000 0000 0000 补码: 0000 0000 0000 0000。

(5)127 8 位二进制数原码:0111 1111 补码: 0111 1111;16 位二进制数原码:0000 0000 0111 1111 补码: 0000 0000 0111 1111。

(6)-128 8 位二进制数原码:无 补码: 1000 0000 ;16 位二进制数原码:1000 0000 1000 0000 补码:1111 1111 1000 0000。

(7)121 8 位二进制数原码:0111 1001 补码: 0111 1001;16 位二进制数原码:0000 0000 0111 1001 补码: 0000 0000 0111 1001。

33

(8)-9 8 位二进制数原码:1000 1001 补码:1111 0111;16 位二进制数原码:1000 0000 1000 1001 补码:1111 1111 1111 0111。 1.7 试实现下列转换。

(1)[X]原=10111110B,求[X]补 (2)[X]补=11110011B,求[-X]补 (3)[X]补=10111110B,求[X]原 (4)[X]补=10111110B,求[X]反 答案:(1) 1100 0010 (2) 0000 1101 (3) 1100 0010 (4) 1011 1101

1.8 假设两个二进制数A=01101010,B=10001100,试比较它们的大小。 (1)A、B 两数均为带符号的补码数 (2)A、B 两数均为无符号数 答案:(1)A、B 两数均为带符号的补码数:A>B (2)A、B 两数均为无符号数:A<B

1.9 下列各数均为十进制数,请用8 位二进制数补码计算下列各题,用十六进制数表示 其运算结果,并判断是否溢出,验证教材中所给的判断依据。 (1)90+71 (2)90-71 (3)-90-71 (4)-90+71 (5)-90-(-71) 答案:(1)90+71=161>127 溢出

[90]补+[71]补=0101 1010+0100 0111=1010 0001=0A1H=[-91]补 (2)90-71=19<127 无溢出

[90]补+[-71]补=0101 1010+1011 1001=0001 0011=13H=[19]补 (3)-90-71=-161<-128 溢出

[-90]补+[-71]补=1010 0110+1011 1001=0101 1111=5FH=[95]补 (4)-90+71=-19>-128 无溢出

[-90]补+[71]补=1010 0110+0100 0111=1110 1101=0EDH=[-19]补 (5)-90-(-71)=-19>-128 无溢出

[-90]补+[71]补=1010 0110+0100 0111=1110 1101=0EDH=[-19]补 3.10 完成下列8 位二进制数的逻辑运算。

(1)11001100∧10101010 (2)11001100∨10101010 (3)11001100⊕10101010 (4)10101100∧10101100 (5)10101100⊕10101100 (6)10101100∨10101100 (7)10101100

答案:(1)11001100∧10101010=1000 1000 (2)11001100∨10101010=1110 1110 (3)11001100⊕10101010=0110 0110 (4)10101100∧10101100=1010 1100 (5)10101100⊕10101100=0000 0000 (6)10101100∨10101100=1010 1100 (7)10101100=0101 0011

1.11 以下均为2 位十六进制数,试说明当把它们分别看作无符号数或字符的ASCII 码 值,它们所表示的十进制数和字符是什么? (1)30H (2)39H (3)42H (4)62H (5)20H (6)7H

答案:(1)30H 所表示的十进制数是:48D;字符是:0。 (2)39H 所表示的十进制数是:57D;字符是:9。 (3)42H 所表示的十进制数是:66D;字符是:B。 (4)62H 所表示的十进制数是:98D;字符是:b。

(5)20H 所表示的十进制数是:32D;字符是:sp 空格。 (6)7H 所表示的十进制数是:7D;字符是:BEL 报警。

1.12 把以下十进制数分别以压缩BCD 码、非压缩BCD 码、ASCII 码串表示。 (1)2 (2)78

答案:(1)2 压缩BCD 码:0010、非压缩BCD 码:0000 0010、ASCII 码:011 0010

33

(2)78 压缩BCD 码:0111 1000、非压缩BCD 码:0000 0111 0000 1000、ASCII 码:0110111 011100

1.13 设浮点数格式如下图所示:

阶码、尾数均以补码表示,基数为2,求:+25.6 和-361.25 的规格化浮点数。 答案:1) +25.6D=11001.1001100110B=0.110011001100110×25

+5=0101B,补码:0101,尾数:[ 0.110011001100110]补=0.110011001100110 规格化浮点数:0 0000101 0 110011001100110

2) -361.25D=-101101001.01B=29×(-0.101101001010000)

+9=1001,补码:1001,尾数:[ -0.101101001010000]补=1.010010110110000 规格化浮点数:0 0001001 1 010010110110000

1.14 设某计算机用12 位表示一个浮点数,该浮点数从高位到低位依次为:阶符1 位、 阶码3 位(原码表示)、数符1 位、尾数7 位(补码表示),则0 100 1 0110011 的真值是多少? 答案:-9.625

3.1 8086 汇编语言指令的寻址方式有哪几类?哪种寻址方式的指令执行速度最快?

解:寻址方式分为:立即数寻址方式、寄存器操作数寻址方式和存储器操作数寻址方式。 其中,寄存器操作数寻址方式的指令执行速度最快。

3.2 在直接寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用 某个段寄存器指出段地址,指令中应该如何表示?

解:默认的数据访问,操作数在DS 段;堆栈操作在SS 段;串操作源操作数(SI)在DS

段,目的操作数(DI)在ES 段;用BP 作为指针在SS 段。如果要显式地指定段地址,则在操作 数中规定段寄存器。例如: MOV AX, ES:(BX+10H)

3.3 8086 系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H, BP=0100H,VAR 的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目 标操作数为存储器操作数,计算它们的物理地址。 (1)MOV BX,12 ;目标操作数为寄存器寻址

(2)MOV [BX],12 ;目标操作数为寄存器间址 PA=10300H

(3)MOV ES:[SI],AX ;目标操作数为寄存器间址 PA=20200H (4)MOV VAR,8 ;目标操作数为存储器直接寻址 PA=10600H

(5)MOV [BX][SI],AX ;目标操作数为基址加变址寻址 PA=10500H

(6)MOV 6[BP][SI],AL ;目标操作数为相对的基址加变址寻址 PA=12306H (7)MOV [1000H],DX ;目标操作数为存储器直接寻址 PA=11000H (8)MOV 6[BX],CX ;目标操作数为寄存器相对寻址 PA=10306H (9)MOV VAR+5,AX ;目标操作数为存储器直接寻址 PA=10605H

3.4下面这些指令中哪些是正确的?那些是错误的?如果是错误的,请说明原因。 (1)XCHG CS,AX ;错,CS 不能参与交换 (2)MOV [BX],[1000] ;错,存储器之不能交换 (3)XCHG BX,IP ;错,IP 不能参与交换

(4)PUSH CS ;错,CS 不能为PUSH 的操作数 (5)POP CS ;错,不能将数据弹到CS 中 (6)IN BX,DX ;输入/输出只能通过AL/AX

(7)MOV BYTE[BX],1000 ;1000 大于255,不能装入字节单元 (8)MOV CS,[1000] ;CS 不能作为目标寄存器

(9)MOV BX,OFFSET VAR[SI] ;OFFSET 只能取变量的偏移地址

33

(10)MOV AX,[SI][DI] ;SI、DI 不能成为基址加变址

(11)MOV COUNT[BX][SI],ES:AX ;AX 是寄存器,不能加段前缀 3.5 试述以下指令的区别:

⑴ MOV AX,3000H 与 MOV AX,[3000H]

答案:⑴ MOV AX,3000H 指令源操作数的寻址方式为立即寻址方式,指令执行结果为: (AX)=3000H。 而MOV AX,[3000H]指令源操作数的寻址方式为直接寻址方式,指令执行结 果为:DS:3000H)_AX。

⑵ MOV AX,MEM 与 MOV AX,OFFSET MEM

答案:⑵ MOV AX,MEM 指令源操作数的寻址方式为直接寻址方式,指令执行结果为: DS:MEM)_AX。 而MOV AX,OFFSET MEM 指令的执行结果是把MEM 的偏移量送AX。 ⑶ MOV AX,MEM 与 LEA AX,MEM

答案:⑶ MOV AX,MEM 指令的执行结果是?DS:MEM)_AX。 而LEA AX,MEM 的执行结果是把MEM 的偏移量送AX。 (4) JMP SHORT L1 与 JMP NEAR PTR L1

答案:JMP SHORT L1 为段内无条件短程转移,跳转的范围不得超过带符号的8 位二进 制数表示的字节范围;JMP NEAR PTR L1 为段内无条件近程转移,跳转的范围不得超过带 符号的16 位二进制数表示的字节范围。 (5) CMP DX,CX 与 SUB DX ,CX

答案:CMP DX,CX 是比较,也是利用减法比较,但是dx 中的值不变,标志寄存器改 变。SUB DX ,CX 是做减法运算,dx 中为减后的值,标志寄存器改变 (6)MOV [BP][SI],CL 与 MOV DS:[ BP][SI],CL

答案:BP 默认的段基址是SS,物理地址PA=SS+BP+SI;第二个重定义为DS 段基址, 物理地址PA=DS+BP+SI

3.6 设DS=2100H,SS=5200H,BX=1400H,BP=6200H,说明下面两条指令所进行的 具体操作:

MOV BYTE PTR [BP], 20H MOV WORD PTR [BX], 20H

解:前一条指令是把立即数20H,传送至堆栈段(BP 的默认段)偏移量由BP 规定的字节单 元,地址为:52000H+6200H=58200H

第二条指令是把立即数20H,传送至数据段(BX 的默认段)偏移量由BX 规定的字单元,地 址为:21000H+1400H = 22400H。

3.7 设当前 SS=2010H,SP=FE00H,BX=3457H,计算当前栈顶的地址为多少?当执 行 PUSH BX 指令后,栈顶地址和栈顶2 个字节的内容分别是什么? 答案:当前栈顶的地址=2FF00H

当执行PUSH BX 指令后,栈顶地址=2FEFEH (2FEFEH)=57H (2FEFFH)=34H

3.8 设DX=78C5H,CL=5,CF=1,确定下列各条指令执行后,DX 和CF 中的值。 (1) SHR DX,1 ;DX=3C62H CF=1 (2) SAR DX,CL ;DX=03C6H CF=0 (3) SHL DX,CL ;DX=18A0H CF=1 (4) ROR DX,CL ;DX=2BC6H CF=0 (5) RCL DX,CL ;DX=18B7H CF=1 (6) RCR DH,1 ;DX=BCC5H CF=0

33

3.9 设AX=0A69H,VALUE 字变量中存放的内容为1927H,写出下列各条指令执行 后寄存器和CF、ZF、OF、SF、PF 的值。 AX CF ZF OF SF PF

(1)XOR AX,VALUE ; 134EH 0 0 0 0 1 (2)AND AX,VALUE ; 0821H 0 0 0 0 1 (3)SUB AX,VALUE ; F142H 1 0 0 1 1 (4)CMP AX,VALUE ; 0A69H 1 0 0 1 1 (5)NOT AX ; F596H X X X X X

(6)TEST AX,VALUE ; 0A69H 0 0 0 0 1

3.10 设AX 和BX 中是符号数,CX 和DX 是无符号数,请分别为下列各项确定CMP 和条件转移指令。 CX 值超过DX 转移。 AX 未超过BX 转移。 DX 为0 转移。

CX 值等于小于DX 转移。 答案:

(1) CMP CX,DX JA NEXT

(2) CMP AX,BX JLE NEXT

(3) CMP DX,0 JZ NEXT

(4) CMP CX,DX JBE NEXT

3.11 阅读分析下列指令序列: ADD AX,BX JNO L1 JNC L2

SUB AX,BX JNC L3 JNO L4 JMP L5

若AX 和BX 的初值分别为以下5 种情况,则执行该指令序列后,程序将分别转向何处 (L1~L5 中的一个)。 AX=13C6H, BX=80DCH AX=0B568H,BX=54B7H AX=42C8H, BX=608DH AX=0D023H,BX=9FD0H AX=9FD0H, BX=0D023H

答案:(1)转L1:不溢出,转移到L1 处; (2)转L1:不溢出,转移到L1 处;

(3)转L2:溢出,不转移到L1 处,进位CF=0,转移到L2 处;

(4)转L3:溢出,不转移到L1 处,进位CF=1,不转移到L2 处,减法借位CF=0,转移 到L3 处;

33

(5)转L5:溢出,不转移到L1 处,进位CF=1,不转移到L2 处,减法借位CF=1,不转 移到L3 处,不溢出OF=0,转移到L4 处;

3.12 用普通运算指令执行BCD 码运算时,为什么要进行十进制调整?具体地讲,在进行 BCD 码的加、减、乘、除运算时,程序段的什么位置必须加上十进制调整指令?

解:因为8086 指令把操作数作为二进制数进行二进制运算,要得到正确的BCD 结果,需 要进行调整。在加、减、乘法指令之后加上BCD 调整指令,而在除法指令之前先用BCD 调 整指令再用除法指令。

3.13 在编写乘除法程序时,为什么常用移位指令来代替乘除法指令?编写一段程序,实 现将BX 中的数除以10,结果仍然放在BX 中。

解:用移位指令时,左移l 位相当于将操作数乘2,右移1 位相当于将操作数除2。用

移位指令实现一些简单的乘除法程序,比用乘法指令和除法指令进行乘、除运算要快得多。 用除法指令实现: MOV CL 0AH MOV AX,BX IDIV CL

MOV BX,AX

3.14 串操作指令使用时特别要注意和SI,DI 这两个寄存器及方向标志DF 密切相关。请 具体就指令MOVSB/MOVSW、CMPSB/CMPSW、SCASB/SCASW、LODSB/LODSW、 STOSB/STOSW 列表说明和SI、DI 及DF 的关系。 解答: SI DI DF

MOVSB/MOVSW 指出源地 址

指出目的地 址

不带 REP 重复前缀时,DF=0,每传送一次,SI、 DI 加1 或加2,DF=1,SI、DI 则减1 或减2 CMPSB/CMPSW 存放源字 符串首地 址

存放目的字 符串首地址

DF=0,每次比较后,SI、DI 加1 或加2,CX 减 1,DF=1,SI、DI 减1 或减2,CX 减1 SCASB/SCASW 无 指出字符串 首址偏移量 无

LODSB/LODSW 作为地址 指针

存放处理结 果

DF=1 时,地址作增量修改,DF=0 时,地址作减 量修改

STOSB/STOSW 无 存放目的地

33

址 无

3.15 用串操作指令设计实现以下功能的程序段:首先将100H 个数从2170H 处搬到 1000H 处,然后,从中检索相等于VAL 中字符的单元,并将此单元值换成空格符。 解答:

START:MOV AX, DS MOV ES, AX MOV SI, 2170H MOV DI, 1000H MOV CX, 100H CLD

REP MOVSB

ANOTHER:MOV DI, 1000H MOV AL, VAL MOV CX, 100H CLD

AGE: SCASB JZ FIN DEC CX JNZ AGE JMP OVER

FIN: MOV BYTE PTR[DI-1],20H CMP CX,0 JNZ AGE OVER: RET

3.16 求双字长数DX∶AX 的相反数。 答:

NEG DX NEG AX SBB DX,0

3.17 试对数据段偏移地址为101H 单元中的单字节数求补后存入102H,最高位不变, 低7 位取反存入103H,高4 位置1,低4 位不变,存入104H。 答:

MOV AX,[0101H] MOV BX,AX MOV CX,AX NOT AX

MOV [0102H],AX XOR BX,7FH MOV [0103H],BX AND CX,0F0H MOV [0104H]

3.19 试编写一个程序,比较两个同长字符串STRING1 和STRING2 所含字符是否相同, 若相同MATCH 单元赋值1,若不相同MATCH 单元赋值0。 答案:

33

程序段为: ;数据定义

STRING1 DB ?ABCDEFGHIJK ;串1,作为源串 STRING2 DB ?ABCDFGKJ ;串2,作为目标串 MATCH DB ? ;定义MATCH 单元 ;功能代码

MOV AX,SEG STRING1

MOV DS,AX ;源串段地址送DS MOV AX,SEG STRING2

MOV ES,AX ;目标串段地址送ES LEA SI, STRING1 ;源串偏移地址送SI LEA DI, STRING2 ;目标串偏移地址送DI

MOV CX, STRING1- STRING2 ;重复次数送CX CLD ;地址增

REPE CMPSB ;相等继续比较,不相等退出 JZ EQUAL ;退出时,若ZF=1,表示两串相等 MOV MATCH,0 ;不相同,MATCH 单元赋值0 JMP OVER

EQUAL:MOV MATCH,1 ;相同MATCH 单元赋值1 OVER:HLT

3.20 编写代码,计算a+10b+100c+20d,其中a、b、c、d 均为单字节无符号数,结果为16 位,存入SUM 开始的两单元中。 data segment ma db 12 mb db 21 mc db 86 md db 150 SUM dw 0 data ends code segment

assume ds:data,cs:code start:mov ax,data mov ds,ax mov dh,0 mov dl,ma mov ah,0 mov al,10 mul mb add dx,ax mov ah,0 mov al,100 mul mc add dx,ax mov ah,0

33

mov al,20 mul md add dx,ax mov SUM,dx code ends end start

3.21 试编写一段程序把LIST 到LIST+100 中的内容传到BLK 到BLK+100 中去。 答案: 程序段为:

MOV AX,SEG LIST

MOV DS,AX ;源串段地址送DS MOV AX,SEG BLK

MOV ES,AX ;目标串段地址送ES LEA SI, LIST ;源串偏移地址送SI LEA DI, BLK ;目标串偏移地址送DI MOV CX, 101 ;重复次数送CX CLD ;地址增 REP MOVSB

3.23 设CS:0100H 单元有一条两字节的JMP SHORT LAB 指令,若其中的位移量为: ⑴56H ⑵80H ⑶78H (4)0E0H

试写出转向目标的物理地址是多少?

答:因为CS:0100H 处存放两字节指令JMP SHORT LAB,所以当执行该指令时 (IP)=0102H

(1) 转向目标的物理地址是:(CS)*10H+(IP)+0056H=CS:0058H

(2) 转向目标的物理地址是:(CS)*10H+(IP)+0FF80H=CS:0082H;80H 对应的负数为-80H (向上转移,负位移量)

(3) 转向目标的物理地址是:(CS)*10H+(IP)+0078H=CS:0180H

(4) 转向目标的物理地址是:(CS)*10H+(IP)+0FFE0H=CS:00E2H;E2H 对应的负数为 -1EH(向上转移,负位移量)

3.24 不使用除法指令,将堆栈段中10H、11H 单元中的双字节带符号数除以8,结果存 入12H、13H 单元(注:多字节数存放格式均为低位在前,高位在后)。 POP AX POP BX

TEST AX,8000H ;测试被除数符号位 MOV CL,3

JZ ZS ;若为正数,跳转到ZS SAR AX,CL JMP OVER

ZS: SHR AX,CL OVER:PUSH AX

3.26 数据段中3030H 起有两个16 位的带符号数,试求它们的积,存入3034H-3036H 单 元中。 答案:

MOV AX,[3030H]

33

MOV BX,[3032H] IMUL BX

MOV [3034H],AX MOV [3036H]

第四章 汇编语言程序设计 习题答案(部分) 4.1 什么是标号?它有哪些属性?

答:标号是一种特殊的标识符,它代表代码段中的某个具体位置,它主要用于表明 转移的目标位置。源程序中的标号都有三种属性:段、偏移及类型。 4.2 什么是变量?它有哪些属性?

答:变量名代表存储器中的一个数据区的名字。源程序中的变量有五种属性:段、偏 移、类型、长度、规模。

4.3 什么是伪指令?什么是宏指令?伪指令在什么时候被执行?宏指令在程序中如何 被调用?

答:伪指令语句是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应 如何汇编。伪指令语句是在汇编程序对源程序汇编期间由汇编程序处理的操作。

宏是若干语句组成的程序段,宏指令语句用来定义宏。一旦把某程序段定义成宏,则可 以用宏名代替那段程序。在汇编时,要对宏进行宏展开,展开的过程是将宏名用程序段代替。 4.4 汇编语言表达式中有哪些运算符?它们所完成的运算是在什么时候进行的? 答:汇编语言表达式中的运算符有: 算术运算符 +、-、*、/、MOD

逻辑运算符 AND、OR、NOT、XOR

关系运算符 EQ、NE、LT、GT、LT、LE、GE

分析运算符 SEG、OFFSET、TYPE、LENGTH、SIZE 属性运算符 PTR、THIS、SHORT 其 它 LOW、HIGH

这些运算符都是在在汇编时由汇编程序对其运算的。 4.5 画出下列语句中的数据在存储器中的存储情况。 ORG 100H

VARB DB 34,34H,?GOOD?,2 DUP(1,2 DUP(0)) VARW DW 5678H,?CD?,$+2,2 DUP(100) VARC EQU 12

VARB DS:0100H 22H DS:010BH 00H DS:0101H 34H VARW DS:010CH 78H DS:0102H 47H DS:010DH 56H DS:0103H 4FH DS:010EH 44H DS:0104H 4FH DS:010FH 43H DS:0105H 44H DS:0110H 12H DS:0106H 01H DS:0111H 01H DS:0107H 00H DS:0112H 64H DS:0108H 00H DS:0113H 00H DS:0109H 01H DS:0114H 64H DS:010AH 00H DS:0115H 00H

4.6 按下列要求,写出各数据定义语句。

DB1 为10H 个重复的字节数据序列:1,2,5 个3,4。

33

DB2 为字符串?STUDENTS?

DB3 为十六进制数序列:12H,ABCDH

用等值语句给符号COUNT 赋以DB1 数据区所占字节数,该语句写在最后。 解答:

DB1 DB 16 DUP(1,2,5 DUP(3),4) DB2 DB ?STUDENTS? DB3 DW 12H,0ABCDH COUNT EQU DB2-DB1

4.7 指令OR AX,1234H OR 0FFH 中两个OR 有什么差别?这两个操作数分别在什么时 候执行?

解答:(1)指令OR AX,1234H OR 0FFH 中的第一个OR 是指令系统中的“或”指令,而 第二个OR 是表达式中表示逻辑“或”关系的。(2)指令OR AX,1234H OR 0FFH 中的第一个

OR 是在CPU 执行指令操作时才会执行。而第二个OR 是在汇编时就会将1234H 和0FFH 作

逻辑“或”运算,得到结果12FFH。然后执行第一个OR 指令,完成AX 的内容与12FFH 的 逻辑“或”运算。

4.8 对于下面的数据定义,各条MOV 指令单独执行后,有关寄存器的内容是什么? PREP DB ?

TABA DW 5 DUP(?) TABB DB ?NEXT? TABC DD 12345678H

(1)MOV AX,TYPE PREP ;AX=1 (2)MOV AX,TYPE TABA ;AX=2 (3)MOV AX,LENGTH TABA ;AX=5 (4)MOV AX,SIZE TABA ;AX=10 (5)MOV AX,LENGTH TABB ;AX=1 (6)MOV DX,SIZE TABC ;AX=4

4.9 设数据段DSEG 中符号及数据定义如下,试写出数据在内存中的存储示意图。 (数据段DSEG 定义略) 解答:

DAB DS:0100H 2FH DS:0113H DS:0101H 47H DS:0114H DS:0102H 4FH DS:0115H DS:0103H 54H DS:0116H DS:0104H 4FH DS:0117H DS:0105H 2FH DS:0118H DS:0106H 0DH DS:0119H DS:0107H 0AH DS:011AH

DBB DS:0108H 05H DS:011BH

DS:0109H 13H DDW DS:011CH 32H DS:010AH 61H DS:011DH 31H CCB DS:010BH DS:011EH 64H DS:010CH DS:011FH 00H

33

DS:010DH DS:0120H 33H DS:010EH DS:0121H 03H DS:010FH DS:0122H 78H DS:0110H DS:0123H 00H DS:0111H DS:0124H 64H DS:0112H DS:0125H 00H

4.10 若自STRING 单元开始存放有一个字符串(以字符?$?结束),试完成: (1)编程统计该字符串长度(不包含 $ 字符,并假设长度为两字节)。 (2)把字符串长度放在STRING 单元,把整个字符串往下移两个单元。 程序段为: (1)

MOV SI, OFFSET STRING XOR BX, BX

CONT:MOV AL, [SI] CMP AL, ?$? JZ NEXT INC BX INC SI JMP CONT

NEXT:MOV AH, 4CH INT 21H

(2)STRING DB ? $? COUNT EQU $-STRING MOV SI, OFFSET STRING MOV CX, COUNT ADD SI, CX CONT: DEC SI MOV AL, [SI] MOV [SI+2], AL LOOP CONT

MOV CX, COUNT MOV STRING, CX MOV AH, 4CH INT 21H

4.11 将字符串STRING 中的?&?字符用空格代替,字符串STRING“It is FEB&03”。 解答程序为: DATA SEGMENT

STRING DB ?It is FEB&03? COUNT EQU $-STRING DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX

33

MOV SI,OFFSET STRING MOV CX,COUNT MOV AL,?$?

CONT:CMP AL,[SI] JNZ NEXT

MOV BYTE PTR[SI],? ? NEXT: INC SI LOOP CONT MOV AH,4CH INT 21H CODE ENDS END START

4.15 试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。 解答程序为: data segment

message db 'please enter the small letter:',0ah,0dh,'$' message2 db 'the capital letter is:',0ah,0dh,'$'

error db 'enter must be small!please enter again:',0ah,0dh,'$' message3 db 'the capital letter is:','$' letter db ? data ends stack segment db 100h dup(?) stack ends code segment

assume cs:code,ds:data,ss:stack start:mov ax,data mov ds,ax jmp l1 xor ax,ax

error1:lea dx,error mov ah,09h int 21h

l1:lea dx,message mov ah,09h int 21h lea dx,letter mov ah,01h int 21h push ax mov dl,0ah mov ah,02h int 21h mov dl,0dh

33

int 21h

lea dx,message3 mov ah,09h int 21h pop ax

cmp al,'z' ;比较,判断是否小写字母 ja error1 cmp al,'a'

jb error1 ;大写字母重新输入

sub al,20H ;减20H 转换为大写字母 mov dl,al mov ah,02h int 21h

mov ax,4c00h int 21h code ends end start

4.16 键盘输入十个学生的成绩,试编制一个程序统计69~69 分,70~79 分,80~89 分, 90~99 分及100 分的人数,分别存放到S6,S7,S8,S9 及S10 单元中。 解答程序为: DATA SEGMENT BUF DB 10 DUP(?) S6 DB ? S7 DB ? S8 DB ? S9 DB ? S10 DB ? DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

MOV SI,OFFSET S6 XOR AL,AL MOV CX,0504H

CONT: MOV [SI],AL INC SI

LOOP CONT MOV CX,10

MOV SI,OFFSET BUF CONT1: MOV AH,1 INT 21H SHL AL,CL MOV BL,AL

33

MOV AH,1 INT 21H SUB AL,30H OR AL,BL MOV [SI],AL CMP AL,70H JAE NEXT1

INC BYTE PTR S6 NEXT1: CMP AL,80H JAE NEXT2

INC BYTE PTR S7 NEXT2: CMP AL,90H JAE NEXT3

INC BYTE PTR S8 NEXT3: CMP AL,99H JA NEXT4

INC BYTE PTR S9 JMP NEXT5

NEXT4: INC BYTE PTR S10 NEXT5: INC SI LOOP CONT1 MOV AH,4CH INT 21H CODE ENDS END START

第五章 8086 系统时序和微机总线 习题答案(部分) 5.1 什么是时钟周期、总线周期、指令周期?

答:8086CPU 执行一条指令是由取指令、译码和执行等操作组成的,为了使 8086CPU 的各种操作协调同步进行,8086CPU 必须在时钟信号 CLK 控制下工作,时钟信号是一个 周期性的脉冲信号,一个时钟脉冲的时间长度称为一个时钟周期(Clock Cycle),是时钟频率 (主频)的倒数,时钟周期是计算机系统中的时间基准。8086CPU 要通过总线才能与外部交换信息,CPU 通过总线接口单元与外部交换一次信息,称为一次总线操作,所耗用的时间称为一个总线周期(Bus Cycle),也称机器周期(MachineCycle)。一个总线周期由若干个时钟周期组成,总线操作的类型不同,总线周期也不同。一个总线周期内完成的数据传输,一般有传送地址和传送数据两个过程。8086CPU 执行一条指令所需要的时间称为指令周期(Instruction Cycle),一个指令周期由若干个总线周期组成, 5.3 8086 和8088 有何区别?

答:这两种CPU 的主要区别如下:

⑴ 外部数据总线位数:8086 CPU 的外部数据总线有16 位,在一个总线周期内可输入/ 输出一个字(16 位数据),使系统处理数据和对中断响应的速度得以加快;而8088 CPU 的 外部数据总线为8 位,在一个总线周期内只能输入/输出一个字节(8 位数据)。

⑵ 指令队列容量:8086 CPU 的指令队列可容纳6 个字节,且在每个总线周期中从存储 器中取出2 个字节的指令代码填入指令队列,这可提高取指操作和其它操作的并行率,从而 提高系统工作速度;而8088 CPU 的指令队列只能容纳4 个字节,且在每个总线周期中能取

33

一个字节的指令代码,从而增长了总线取指令的时间,在一定条件下可能影响取指令操作和 其它操作的并行率。

⑶ 引脚特性:两种CPU 的引脚功能是相同的,但有以下几点不同:

1) AD15~AD0 的定义不同:在8086 中都定义为地址/数据复用总线;而8088 中,由于 只需8 条数据总线,因此,对应于8086 的AD15~AD8 这8 条引脚定义为A15~A8,只作 地址线使用。

2) 34 脚的定义不同:在8086 中定义为BHE信号;而在8088 中定义为SSO,它与DT / R, IO /M一起用作最小方式下的周期状态信号。

3) 28 脚的相位不同,在8086 中为M / IO;而在8088 中被倒相,改为IO/M,以便与 8080/8085 系统的总线结构兼容。

5.4 8086 是怎样解决地址线和数据线的复用问题的?ALE 的作用是什么?

答:(1)、AD15-AD0 采用分时的多路转换方法来实现对地址线和数据线的复用。在总 线周期T1 状态下,这些引线表示为低16 位地址线,在总线周期为T2、T3、TW 状态,这 些引线用作数据总线,可见对复用信号是用时间来加以划分的,他要求在T1 状态下先出现 低16 位地址时,用地址锁存器加以锁存,随后的T 状态,即使这些用作数据线,而低16 位地址线的地址状态去被记录保存下来,并达到地址总线上。 (2)、ALE 是地址锁存允许信号,高电平有效。 第六章 存储器 习题答案(部分) 6.1 试说明半导体存储器的分类。 答:半导体分为:RAM 和ROM。RAM 分为静态RAM 和动态RAM。ROM 分为:掩膜ROM、 PROM、EPROM、E2PROM。

6.2 试说明CMOS 静态存储器基本存储电路数据读、写的原理。 第七章 基本输入/输出接口 习题答案(部分) 7.1 简述I/O 接口的主要功能。

答:(1)对输入输出数据进行缓冲和锁存 (2)对信号的形式和数据的格式进行变换 (3)对I/O 端口进行寻址 (4)提供联络信号

7.2 CPU 与外设之间的数据传输方式有哪些?简要说明各自含义。

答:(1)程序方式:微机系统与外设之间的数据传输过程在程序的控制下进行

(2)中断方式:在中断传输方式下,当输入设备将数据准备好或输出设备可以接收数

据时,便向CPU 发出中断请求,使CPU 暂时停止执行当前程序,而去执行数据输入/输出 的中断服务程序,与外设进行数据传输操作,中断服务程序执行完后,CPU 又返回继续执 行原来的程序。

(3)直接存储器存取(DMA)方式:DMA 方式是指不经过CPU 的干预,直接在外设 和内存之间进行数据传输的方式。

7.3 什么是端口?通常有哪几类端口?计算机对I/O 端口编址时通常采用哪?在80x86 系统中,采用哪一种方法?

每个I/O 接口内部一般由三类寄存器组成。CPU 与外设进行数据传输时,各类信息在 接口中进入不同的寄存器,一般称这些寄存器为I/O 端口。 I/O 端口通常有数据端口、状态端口、控制端口。

计算机对I/O 端口编址时通常采用:I/O 端口与内存统一编址、I/O 端口独立编址两种 方法。

在80x86 系统中,采用I/O 端口独立编址方法。

33

7.4 现有一输入设备,其数据端口地址为FFE0H,状态端口地址为FFE2H,当其D0 为1 时表明输入数据准备好。试采用查询方式,编程实现从该设备读取100 个字节数据并保 存到2000H:2000H 开始的内存中。 程序为:

CODE SEGMENT ASSUME CS:CODE

START: MOV AX,2000H MOV DS,AX MOV SI,2000H MOV CX,100

CONT: MOV DX,0FFE2H CONT1:IN AL,DX TEST AL,01 JZ CONT1

MOV DX,0FFE0H IN AL,DX MOV [SI],AL INC SI

LOOP CONT MOV AH,4CH INT 21H CODE ENDS END START

7.5 硬件如图7.5 所示,试编程实现:S0 控制8 个发光二极管1 亮7 暗,S1 控制8

个 8 个发光二极管7 亮1 暗,S2 控制某一亮点(或暗点)以一定时间间隔循环向左移动, S3 控制某一亮点(或暗点)以一定时间间隔循环向右移动,两个或两个以上开关闭合,则 结束程序。

CODE SEGMENT ASSUME CS:CODE MAIN PROC FAR START: PUSH DS MOV AX,0 PUSH AX

NEXT1: MOV AH,1 INT 16H

CMP AL 1BH JZ EXIT1

MOV DX 200H IN AL,DX

TEST AL,0FEH JZ NEXT2

TEST AL 0FDH IN AL,0BFH MOV CX,8

33

JPM NEXT3

NEXT2:MOV CX,8 NOT AL

NEXT3:ROR AL,1 MOV DX,200H OUT DX,AL LOOP NEXT3 EXIT: RET MAIN ENDP CODE ENDPS END START

程序段为:(省略伪指令) DATA SEGMENT BUF1 DB 01H BUF2 DB 80H DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA MOV AX,DATA MOV DS,AX MOV DX,200H

AGAIN: IN AL,DX XOR BL,BL MOV CX,8

CONT: ROR AL,1 JNC NEXT INC BL

NEXT: LOOP CONT CMP BL,2 JAE EXIT

CMP AL,0FEH JZ 1L7A

CMP AL,0FDH JZ 1A7L

CMP AL,0FBH JZ ZSHL

CMP AL,0F7H JZ YSHR

1L7A: MOV AL,80H OUT DX,AL JMP AGAIN

7A7L: MOV AL,7F OUT DX,AL JMP AGAIN

33

ZSHL: MOV AL,BUF1 ROL AL,1

MOV BUF1,AL OUT DX,AL CALL D500MS JMP AGAIN

YSHR: MOV AL,BUF2 ROR AL,1

MOV BUF1,AL OUT DX,AL CALL D500MS JMP AGAIN

EXIT: MOV AH,4CH INT 21H CODE ENDS END

第8 章 中断习题

8.1 80x86 的中断系统有哪几种类型中断?其优先次序如何?

80x86 的中断系统可处理256 种个中断源。这些中断源可分为两大类:外部中断(硬件 中断)、内部中断(软件中断)。软件中断包括:除法中断、单步中断、指令中断、溢出中断。

硬件中断包括:INTR 和NMI。

中断优先级的次序是:内部中断(高)_非屏蔽中断_可屏蔽中断_单步中断(低)

8.3 已知中断向量表表中地址0020H ~ 0023H 的单元中依次是40H,00H,00H,01H, 并知INT 08H 指令本身所在的地址为9000H:00A0H。若SP=0100H,SS=0300H,标志寄 存器内容为0240H,试指出在执行INT 08H 指令,刚进入它的中断服务程序时,SP,SS, IP,CS 和堆栈顶上三个字的内容(用图表示)。 执行后 SS=0300H SP=00FAH

CS=0100H IP=0040H ,堆栈顶上三个字的内容如下所示: 0 0 F AH 0 0 F CH

执行后:0300H:00FEH 初始: 0300H:01000H

8.4 某一用户中断源的中断类型号为40H,其中断服务程序名为INTR40,请用两种不 同的方法设置它的中断向量。 法一:MOV AX,0000H MOV DS,AX MOV SI,0100H

MOV AX,OFFSET INTR40 MOV [SI],AX

MOV AX,SEG INTR40 MOV [SI+2],AX

法二:MOV BX,SEG INTR40 MOV DS,BX

33

MOV DX,OFFSET INTR40 MOV AH,25H INT 21H

8.5 试编写一段将8259A 中IRR、ISR、IMR 的内容读出,存入到BUFFER 开始的数 据缓冲区去的程序。8259A 的端口地址为30H、31H。

START: MOV AX,DATA ;取BUFFER 所在数据段的段基址DS MOV DS,AX

LEA SI,BUFFER ;取BUFFER 所在数据段的偏移地址SI

MOV AL,0AH ;读出命令字OCW,P=0,RR=1,RIS=0,选IRR 栈区 A2H 00H 00H 90H 40H 02H XX

OUT 30H,AL

IN AL,30H ;读出IRR 的内容 MOV [SI],AL ;IRR 内容送内存

MOV AL,0BH ;读出命令字OCW,P=0,RR=1,RIS=1,选ISR OUT 30H,AL

IN AL,30H ;读出ISR 的内容

MOV [SI+1],AL ;ISR 内容送内存 IN AL,31H ;读IMR 的内容

MOV [SI+2],AL ;IMR 的内容送内存

8.6 某一8086CPU 系统中,采用一片8259A 进行中断管理。设8259A 工作在全嵌套 方式,发送EIO 命令结束中断,边沿触发方式,IR0 对应的中断向量号为90H,8259A 在系

统中的端口地址为FFDCH(A0=0)和FFDDH(A0=1),试编写8259A 的初始化程序段。 初试化程序段为:

MOV AX,0FFDCH ;取8259A 的偶地址端口 MOV DX,AX

MOV AL,13H ;控制初始化命令字ICW1 设为13H,中断请求为边沿触 ;发方式,单片8259A,需写入ICW4 OUT DX,AL ;设置ICW1

MOV AX,0FFDDH ;取8259A 的奇地址端口 MOV DX,AX

MOV AL,90H ;中断类型码初始化命令字ICW2 设为90H,对应于 ;IR0 ~IR7 的中断类型码为90H~97H OUT DX,AL ;设置ICW2

MOV AL,01H ;方式控制初始化命令字ICW4 设为01H,全嵌套方式, ;非缓冲方式,非自动中断结束方式,工作于8086 系统中 OUT DX,AL ;设置ICW4

33

第九章 可编程接口芯片及应用习题

9.1 试按如下要求分别编写初始化程序,已知计数器0 ~ 2 和控制字寄存器的端口地址 依次为204H ~ 207H。

(1)使计数器1 工作在方式0,仅用8 位二进制计数,计数初值为128。 (2)使计数器0 工作在方式1,按BCD 码计数,计数值为3000。 (3)使计数器2 工作在方式2,按二进制计数,计数值为02F0H。 初始化程序为:

(1) MOV DX,207H MOV AL,50H OUT DX,AL MOV DX,205H MOV AL,80H OUT DX,AL

(2) MOV DX,207H MOV AL,33H OUT DX,AL MOV DX,204H

MOV AX,3000H ;注意,不是3000 OUT DX,AL MOV AL,AH OUT DX,AL

(3) MOV DX,207H MOV AL,0B4H OUT DX,AL MOV DX,206H MOV AL,0F0H OUT DX,AL MOV AL,02 OUT DX,AL

9.2 硬件如题9.2 图,利用PC 内部8253 定时器0,并用中断方式实现每隔1s 使发光

二极管亮暗交替显示。(PC 内部8253 输入时钟频率为1.1932MHz,8253 定时器0 端口地址

为40H,控制寄存器端口地址为43H。Y0 为350H)。 定时器计数值=1.1932MHz÷5=32864=83D5H 软件计数值:50

程序为:(硬件图见教材P345 题9.2 图) MOV AL,34H OUT 43H,AL MOV AL,0D5H OUT 40H,AL MOV AL,83H OUT 40H,AL MOV BL,50 ┇

33

T0 中断服务程序为: DEC BL JNZ EXIT1 MOV BL,50 MOV AL,BUF NOT AL

MOV BUF,AL MOV DX,350H OUT DX,AL

EXIT1:MOV AL,20H

OUT 20H,AL;(设8259A 的端口地址为20H,21H) IRET

9.3 硬件如题9.3 图,8253 采用方式0,BCD 码计数方式,初始值为1000,每按一次 按钮S,计数器值减1。试编程实现显示8253 当前计数值,直至计数值为0。8253 端口地 址范围为80H ~ 83H。

(略。在何处显示---屏幕/LED/液晶?)

9.4 图9.4 为一简化的键盘/数码管显示接口电路,假设端口线a? ~ h?及1、2 脚送“1” 电平,可使显示点亮并能实现扫描,试问U1、U2 及数码显示器的选用。 (1)U1 为 (同相驱动器 / 反相驱动器)。 (2)U2 为 (同相驱动器 / 反相驱动器)。 (3)数码显示器为 (共阴 / 共阳)数码管。 (4)若A 键闭合,则端口线3,4 的电平为 。 图9.4 见教材P295 选用同相驱动器 选用反相驱动器 选用共阴数码管

若A 键闭合,则端口线3,4 的电平为0,1

9.5 硬件如题 9.5 图,试编程实现循环检测S0、S1,当S0 按下,数码管显示0,当

S1 按下,数码管显示1,S0、S1 同时按下,则结束程序。8255 的端口地址范围为80H83H。 程序为:

MOV AL,82H OUT 83H,AL

AGAIN: IN AL,81H TEST AL,03 JZ EXIT

TEST AL,01 JZ NEXT

MOV AL,3FH OUT 80H,AL JMP AGAIN

NEXT: TEST AL,02 JZ NEXT1 MOV AL,06 OUT 80H,AL

33

JMP AGAIN

NEXT1: MOV AL,00 OUT 80H,AL JMP AGAIN

EXIT: MOV AH,4CH INT 21H__

习题与练习题1 第1章 绪论

1. 计算机分那几类?各有什么特点? 答:传统上分为三类:大型主机、小型机、微型机。大型主机一般为高性能的并行处理系统, 存储容量大,事物处理能力强,可为众多用户提供服务。小型机具有一定的数据处理能力,提供一定用户规模的信息服务,作为部门的信息服务中心。微型机一般指在办公室或家庭的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系结构,兼容性好。 2. 简述微处理器、微计算机及微计算机系统三个术语的内涵。

答:微处理器是微计算机系统的核心硬件部件,对系统的性能起决定性的影响。微计算机包括微处理器、存储器、I/O接口电路及系统总线。微计算机系统是在微计算机的基础上配上相应的外部设备和各种软件,形成一个完整的、独立的信息处理系统。 3. 80X86微处理器有几代?各代的名称是什么?

答:从体系结构上可分为3代: ? 8080/8085:8位机。 ? 8086/8088/80286:16位机。?80386/80486:32位机.

第2章 微处理器结构及微计算机的组成

1. 8086是多少位的微处理器?为什么?

答:8086是16位的微处理器,其内部数据通路为16位,对外的数据总线也是16位。 2. EU与BIU各自的功能是什么?如何协同工作?

答:EU是执行部件,主要的功能是执行指令。BIU是总线接口部件,与片外存储器及I/O接口电路传输数据。EU经过BIU进行片外操作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供服务时,BIU可进行填充指令队列的操作。 3. 8086/8088与其前一代微处理器8085相比,内部操作有什么改进?

答:8085为8位机,在执行指令过程中,取指令与执行执令都是串行的。8086/8088由于内部有EU和BIU两个功能部件,可重叠操作,提高了处理器的性能。 4. 8086/8088微处理器内部有那些寄存器,它们的主要作用是什么?

答:执行部件有8个16位寄存器,AX、BX、CX、DX、SP、BP、DI、SI。AX、BX、CX、DX一般作为通用数据寄存器。SP为堆栈指针存器,BP、DI、SI在间接寻址时作为地址寄存器或变址寄存器。总线接口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。 5. 8086对存储器的管理为什么采用分段的办法?

答:8086是一个16位的结构,采用分段管理办法可形成超过16位的存储器物理地址,扩大对存储器的寻址范围 (1MB,20位地址)。若不用分段方法,16位地址只能寻址64KB空

33

间。

6.在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体说明。 答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段内偏移地址两部分组成,如1234H:0088H。偏移地址是指段内某个存储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。

7.给定一个存放数据的内存单元的偏移地址是20C0H,(DS)=0C00EH,求出该内存单元的物理地址。

答:物理地址:320F8H。

8.8086/8088为什么采用地址/数据引线复用技术?

答:考虑到芯片成本,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所有信号是不够用的,采用地址/数据线复用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不会同时出现,二者可以分时复用同一组引线。 9. 8086与8088的主要区别是什么?

答:8086有16条数据信号引线,8088只有8条;8086片内指令预取缓冲器深度为6字节,8088只有4字节。 10. 怎样确定8086的最大或最小工作模式?最大、最小模式产生控制信号的方法有何

不同

答:引线MN/MX#的逻辑状态决定8086的工作模式,MN/MX#引线接高电平,8086被设定为最小模式,MN/MX#引线接低电平,8086被设定为最大模式。

最小模式下的控制信号由相关引线直接提供;最大模式下控制信号由8288专用芯片译码后提供,8288的输入为8086的S2#~S0#三条状态信号引线提供。 11. 8086被复位以后,有关寄存器的状态是什么?微处理器从何处开始执行程序? 答:标志寄存器、IP、DS、SS、ES和指令队列置0,CS置全1。处理器从FFFFOH存储单元取指令并开始执行。 12. 8086基本总线周期是如何组成的?各状态中完成什么基本操作?

答:基本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为T1、T2、T3、T4。在T1期间8086发出访问目的地的地址信号和地址锁存选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;T3期间完成数据的访问;T4结束该总线周期。 13. 结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT/R#、RD#、READY

信号的功能。

答:ALE为外部地址锁存器的选通脉冲,在T1期间输出;M/IO#确定总线操作的对象是存储器还是I/O接口电路,在T1输出;DT/R#为数据总线缓冲器的方向控制信号,在T1输出;RD#为读命令信号;在T2输出;READY信号为存储器或I/O接口“准备好”信号,在T3期间给出,否则8086要在T3与T4间插入Tw等待状态。 14. 8086中断分哪两类?8086可处理多少种中断?

答:8086中断可分为硬件中断和软件中断两类。8086可处理256种类型的中断。 15. 8086可屏蔽中断请求输入线是什么?“可屏蔽”的涵义是什么? 答:可屏蔽中断请求输入线为INTR;“可屏蔽”是指该中断请求可经软件清除标志寄存器中IF位而被禁止。 16. 8086的中断向量表如何组成?作用是什么?

答:把内存0段中0~3FFH区域作为中断向量表的专用存储区。该区域存放256种中断的处理程序的入口地址,每个入口地址占用4个存储单元,分别存放入口的段地址与偏移地址。 17.8086如何响应一个可屏蔽中断请求?简述响应过程。

33

答:当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,请除IF、TF;8086将类型码乘4后得到中断向量表的入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程。

18.什么是总线请求?8086在最小工作模式下,有关总线请求的信号引脚是什么?

答:系统中若存在多个可控制总线的主模块时,其中之一若要使用总线进行数据传输时,需向系统请求总线的控制权,这就是一个总线请求的过程。8086在最小工作模式下有关总线请求的信号引脚是HOLD与HLDA。

19.简述在最小工作模式下,8086如何响应一个总线请求? 答:外部总线主控模块经HOLD引线向8086发出总线请求信号;8086在每个时钟周期的上升沿采样HOLD引线;若发现HOLD=1则在当前总线周期结束时(T4结束)发出总线请求的响应信号HLDA;8086使地址、数据及控制总线进入高阻状态,让出总线控制权,完成响应过程。

20.在基于8086的微计算机系统中,存储器是如何组织的?是如何与处理器总线连接的?

BHE#信号起什么作用?

答:8086为16位处理器,可访问1M字节的存储器空间;1M字节的存储器分为两个512K字节的存储体,命名为偶字节体和奇字节体;偶体的数据线连接D7~D0,“体选”信号接地址线A0;奇体的数据线连接D15~D8,“体选”信号接BHE#信号;BHE#信号有效时允许访问奇体中的高字节存储单元,实现8086的低字节访问、高字节访问及字访问。 21.“80386是一个32位微处理器”,这句话的涵义主要指的是什么?

答:指80386的数据总线为32位,片内寄存器和主要功能部件均为32位,片内数据通路为32位。

22.80X86系列微处理器采取与先前的微处理器兼容的技术路线,有什么好处?有什么不足?

答:好处是先前开发的软件可以在新处理器组成的系统中运行,保护了软件投资。缺点是处理器的结构发展受到兼容的约束,为了保持兼容性增加了硅资源的开销,增加了结构的复杂性。

23.80386内部结构由哪几部分组成?简述各部分的作用。

答:80386内部结构由执行部件(EU)、存储器管理部件(MMU)和总线接口部件(BIU)三部分组成。EU包括指令预取部件、指令译码部件、控制部件、运算部件及保护检测部件,主要功能是执行指令。存储器管理部件包括分段部件、分页部件,实现对存储器的分段分页式的管理,将逻辑地址转换成物理地址。总线接口部件作用是进行片外访问:对存储器及I/O接口的访问、预取指令;另外的作用是进行总线及中断请求的控制 24.80386有几种存储器管理模式?都是什么?

答:80386有三种存储器管理模式,分别是实地址方式、保护方式和虚拟8086方式 25.在不同的存储器管理模式下,80386的段寄存器的作用是什么?

答:在实地址方式下,段寄存器与8086相同,存放段基地址。在保护方式下,每个段寄存器还有一个对应的64位段描述符寄存器,段寄存器作为选择器存放选择符。在虚拟8086方式下,段寄存器的作用与8086相同。

26.试说明虚拟存储器的涵义,它与物理存储器有什么区别?80386虚拟地址空间有多大? 答:虚拟存储器是程序员面对的一个巨大的、可寻址的存储空间,这个空间是内存与外存联合形成的,在操作系统的管理下,程序可象访问内存一样去访问外存而获得所需数据。物理存储器是指机器实际拥有的内存储器,不包括外存。80386的虚拟地址空间为64TB大。

33

27.试说明描述符的分类及各描述符的作用。

答:描述符分为三类:存储器段描述符、系统段描述符、门描述符。存储器段描述符由8字节组成,它用来说明一个段中保存信息的情况。32位段基地址和20位段界限值定位了该段在存储空间中的位置,其它有关位决定访问权限及段的长度单位。系统段描述符与存储器段描述符大多数字节段相同,有关访问权及属性字节段有些不同。门描述符用来改变程序的特权级别、切换任务的执行以及指出中断服务程序的入口。 28.描述符表的作用是什么?有几类描述符表? 答:描述符表顺序存放一系列描述符,描述符表定义了在80386系统中被使用的全部存储器段。有3类描述符表,即全局描述符表、局部描述符表及中断描述符表。 29.80386的分段部件是如何将逻辑地址变为线性地址的? 答:分段部件根据段选择符从全局描述符表或局部描述符表中取出对应的段描述符。把段描述符32位段基地址与逻辑地址中的32位偏移量相加就形成了线性地址。 30.80386中如何把线性地址变为物理地址?

答:分段部件形成的32位线性地址中高10位作为寻址页目录表的偏移量,与控制寄存器CR3中页目录表基地址共同形成一个32位的地址指向页表中的一个页项,即为一个页面描述符。该页面项中高20位作为页面基地址,线性地址的低12位为偏移量,相加后形成指向某一存储单元的32位物理地址。若禁止分页功能,线性地址就是物理地址。 31.80386对中断如何分类? 答:80386把中断分为外部中断和内部中断两大类,外部中断经NMI和INTR引线输入请求信号。内部中断也叫内部异常中断,分为陷阱中断、内部故障异常中断、异常终止中断。 32.80386在保护方式下中断描述符表与8086的中断向量表有什么不同?

答:8086工作在实地址方式,向量表是在存储器的0段中最低1024字节内存中。80386在保护方式下要通过中断描述符表中的描述符访问虚拟空间的中断向量,中断描述符表的位置不是固定的,要由IDTR寄存器实现在虚拟空间的定位。 33.简述80386在保护方式下的中断处理过程。

答:80386响应中断后,接收由中断源提供的类型码并将其乘8,与IDTR寄存器中基地址相加,指出中断描述符的位置,读出中断描述符,依其中的段选择符及条件决定从两个描述符表LDT或GDT中的一个得到段描述符,形成中断服务程序入口所在存储器单元的线性地址。

微计算机中处理器与I/O设备间数据传输控制方法

1.试说明一般中断系统的组成和功能。

答:处理器内部应有中断请求信号的检测电路,输出中断响应信号,保存断点的逻辑,转向中断处理程序的逻辑,中断返回逻辑。系统中要有一中断控制器,管理多个中断源,提供处理机所需的中断处理信息。系统中请求中断处理的I/O接口电路要有提供中断请求信号及接收中断响应信号的逻辑。

2.什么是中断类型码、中断向量、中断向量表?在基于8086/8088的微机系统中,中断类型码和中断向量之间有什么关系? 答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型中断处理程序入口地址的一个默认的内存区域。在8086系统中,中断类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。

3.什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不同? 答:硬件中断是通过中断请求线输入电信号来请求处理机进行中断服务;软件中断是处理机

33

内部识别并进行处理的中断过程。硬件中断一般是由中断控制器提供中断类型码,处理机自动转向中断处理程序;软件中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理程序,不需外部提供信息。

4.试叙述基于8086/8088的微机系统处理硬件中断的过程。

答:以INTR请求为例。当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保护现场的操作,CS、IP内容进入堆栈,清除IF、TF;8086将类型码乘4后得到中断向量入口地址,从此地址开始读取4字节的中断处理程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求的响应过程。 5.在PC机中如何使用“用户中断”入口请求中断和进行编程?

答:PC机中分配给用户使用的中断是IRQ9,经扩展插槽B4引出,故把用户的中断请求线连接到B4上。在应用程序中,利用25H号系统调用将中断服务程序的入口地址写入对应0AH类型中断对应的中断向量表中去。在应用程序中把主片8259A D2屏蔽位清0,把从片8259A D1屏蔽位清0,使主片的IR2、从片的IR1可以输入中断请求。中断服务程序结束前向主片8259A发中断结束命令。应用程序结束之前对主片的IR2和从片的IR1进行屏蔽,关闭用户中断请求。

6.8259A中断控制器的功能是什么? 答:8259A中断控制器可以接受8个中断请求输入并将它们寄存。对8个请求输入进行优先级判断,裁决出最高优先级进行处理,它可以支持多种优先级处理方式。8259A可以对中断请求输入进行屏蔽,阻止对其进行处理。8259A支持多种中断结束方式。8259A与微处理器连接方便,可提供中断请求信号及发送中断类型码。8259A可以进行级连以便形成多于8级输入的中断控制系统。

7.8259A初始化编程过程完成那些功能?这些功能由那些ICW设定?

答:初始化编程用来确定8259A的工作方式。ICW1确定8259A工作的环境:处理器类型、中断控制器是单片还是多片、请求信号的电特性。ICW2用来指定8个中断请求的类型码。ICW3在多片系统中确定主片与从片的连接关系。ICW4用来确定中断处理的控制方法:中断结束方式、嵌套方式、数据线缓冲等。

8.8259A在初始化编程时设置为非中断自动结束方式,中断服务程序编写时应注意什么? 答:在中断服务程序中,在返回主程序之前按排一条一般中断结束命令指令,8259A将ISR中最高优先级位置0,结束该级中断处理以便为较低级别中断请求服务。

9.8259A的初始化命令字和操作命令字有什么区别?它们分别对应于编程结构中那些内部寄存器? 答:8259A的工作方式通过微处理器向其写入初始化命令字来确定。初始化命令字分别装入ICW1~ICW4内部寄存器。8259A在工作过程中,微处理器通过向其写入操作命令字来控制它的工作过程。操作命令字分别装入OCW1~OCW3内部寄存器中。8259A占用两个端口号,不同的命令字对应不同的端口,再加上命令字本身的特征位及加载的顺序就可以正确地把各种命令字写入对应的寄存器中。

10.8259A的中断屏蔽寄存器IMR与8086中断允许标志IF有什么区别?

答:IF是8086微处理器内部标志寄存器的一位,若IF=0,8086就不响应外部可屏蔽中断请求INTR引线上的请求信号。8259A有8个中断请求输入线,IMR中的某位为1,就把对应这位的中断请求IR禁止掉,无法被8259A处理,也无法向8086处理器产生INTR请求。 11.若8086系统采用单片8259A中断控制器控制中断,中断类型码给定为20H,中断源的

请求线与8259A的IR4相连,试问:对应该中断源的中断向量表入口地址是什么?若中断服务程序入口地址为4FE24H,则对应该中断源的中断向量表内容是什么,如何定

33

位?

答:中断向量表入口地址为:0段的0090H地址。对应4FE24H中断服务程序入口,在向量表中定位情况:(0090H)=24H、(0091H)=00H、(0092H)=E0H、(0093H)=4FH。

12.试按照如下要求对8259A设定初始化命令字:8086系统中只有一片8259A,中断请求

信号使用电平触发方式,全嵌套中断优先级,数据总线无缓冲,采用中断自动结束方式。中断类型码为20H~27H,8259A的端口地址为B0H和B1H。

答:ICW1=1BH (送B0H端口),ICW2=20H (送B1H端口),ICW4=03H (送B1H端口) 13.比较中断与DMA两种传输方式的特点。 答:中断方式下,外设需与主机传输数据时要请求主给予中断服务,中断当前主程序的执行,自动转向对应的中断处理程序,控制数据的传输,过程始终是在处理器所执行的指令控制之下。

直接存储器访问(DMA)方式下,系统中有一个DMA控制器,它是一个可驱动总线的主控部件。当外设与主存储器之间需要传输数据时,外设向DMA控制器发出DMA请求,DMA控制器向中央处理器发出总线请求,取得总线控制权以后,DMA控制器按照总线时序控制外设与存储器间的数据传输而不是通过指令来控制数据传输,传输速度大大高于中断方式。 14.DMA控制器应具有那些功能?

答:DMA控制器应有DMA请求输入线,接收I/O设备的DMA请求信号;DMA控制器应有向主机发出总线请求的信号线和接收主机响应的信号线;DMA控制器在取得总线控制权以后应能发出内存地址、I/O读写命令及存储器读写命令控制I/O与存储器间的数据传输过程。

15.8237A只有8位数据线,为什么能完成16位数据的DMA传送?

答:I/O与存储器间在进行DMA传送过程中,数据是通过系统的数据总线传送的,不经过8237A的数据总线,系统数据总线是具有16位数据的传输能力的。 16.8237A的地址线为什么是双向的? 答:8237A的A0~A3地址线是双向的,当8237A被主机编程或读状态处于从属状态,A0~A3为输入地址信号,以便主机对其内部寄存器进行寻址访问。当8237A取得总线控制权进行DMA传送时,A0~A3输出低4位地址信号供存储器寻址对应单元用,A0~A3必需是双向的。

17.说明8237A单字节DMA传送数据的全过程。

答:8237A取得总线控制权以后进行单字节的DMA传送,传送完一个字节以后修改字节计数器和地址寄存器,然后就将总线控制权放弃。若I/O的DMA请求信号DREQ继续有效,8237A再次请求总线使用权进行下一字节的传送。

18.8237A单字节DMA传送与数据块DMA传送有什么不同?

答:单字节传送方式下,8237A每传送完一个字节数据就释放总线,传送下一字节时再请求总线的控制权。块传送方式下8237A必须把整个数据块传送完才释放总线。 19.8237A什么时候作为主模块工作,什么时候作为从模块工作?在这两种工作模式下,控

制信号处于什么状态,试作说明。 答:8237A取得总线控制权后,开始进行DMA传送过程,此时8237A作为主模块工作。8237A在被处理器编程或读取工作状态时,处于从模块工作状态。

8237A处于从模块时,若CS#=0、HLDA=0说明它正被编程或读取状态,IOR#与IOW#为输入,A0~A3为输入。8237A处于主模块时,输出地址信号A0~A15 (低8位经A0~A7输出,高8位经DB0~DB7输出)。8237A还要输出IOR#、IOW#、MEMR#、MEMW#、AEN、ADSTB等有效信号供DMA传送过程使用。 20.说明8237A初始化编程的步骤。

33

答:(1)写屏蔽字,阻止某通道的DMA请求。(2)写命令字(8号地址),确定信号有效电平、优先级方式、通道工作允许等。(3)写模式字(B号地址),确定某通道传送方式、传送类型、地址寄存器变化方式等。(4)置0先/后触发器。(5)设置地址寄存器、字节数寄存器的初值。(6)清除某通道屏蔽位,允许8237A响应其DMA请求。

21.8237A选择存储器到存储器的传送模式必须具备那些条件?

答:必须使用8237A内部的暂存器作为数据传送的缓冲器。8237A通道0的地址寄存器存放存储器的源地址、通道1的地址寄存器存放存储器的目的地地址、字节计数器存放传送的字节数,建立通道0的软件DMA请求来启动这一传输过程。

微机的基本接口技术

1.简述行列式键盘矩阵的读入方法。

答:将行线接输出口,列线接输入口,采用行扫描法,先将某一行输出为低电平,其它行输出为高电平,用输入口来查询列线上的电平,逐次读入列值,如果行线上的值为0时,列线上的值也为0,则表明有键按下。否则,接着读入下一列,直到找到该行有按下的键为止。如该行没有找到有键按下,就按此方法逐行找下去,直到扫描完全部的行和列。 2.简述用反转法实现键的识别的基本方法。

答: 将题目中的键改为闭合键。用反转法识别闭合键,需要用可编程的并行接口。行线和列线分别接在PA和PB 2个并行口上,首先让行线上的PA口工作在输出方式,列线上的PB口工作在输入方式,通过编程使PA口都输出低电平,然后读取PB口的列线值,如果某一列线上的值为0,则判定改列有某一键按下。为了确定是哪一行要对PA和PB进行反转,即对PA口重新进行初始化工作在输入方式,列线上的PB口工作在输出方式,并将刚读取的列线值从列线所接的PB口输出,再读取行线所接的PA口,取得行线上的输入值,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可读得一对唯一的行值和列值。根据这一对行值和列值就可判断是哪一行哪一列的键被按下。 3.LED数码管显示器共阴极和共阳极的接法主要区别是什么?

答:LED数码管显示器共阴极的接法是发光二极管的阴极接地,当数码管的笔划发光二极管的阳极为高电平时,该笔划被点亮。共阳极的接法是发光二极管的阳极接高电平,当数码管的笔划发光二极管的阴极为低电平时,该笔划被点亮。总之,主要区别在于LED数码管的接法和驱动笔划的数据电平的不同。

4.试绘图说明LED数码管显示器的动态显示原理。

答:使用书上的图7.8在图中LED数码管是共阴极的,总共可带动8位这样的LED数码管。动态驱动显示接口与静态驱动显示接口的一个明显特点是:动态驱动法将多位LED同名段的选择线都并联在一起,即8位中的所有同名段a接在一起,所有b段都接在一起??,这样只要一个8位的锁存器来控制段码a,b,c,d,e,f,g就够了。另外用一个锁存器来控制点亮的位。因此需要2个8位的I/O端口。

由于所有位的位选择码是用一个I/O端口控制,所有段的段选择码也是用一个I/O端口控制,因此在每个瞬间,8位LED只可能显示相同的字符。要想每位显示不同的字符,必须要采用扫描的显示方式。即在每一瞬间只能使某一位显示相应的字符,在此瞬间,由位选择控制的I/O端口在要显示的位上送入选通电平(共阴极接法送入低电平,共阳极接法送入高电平),以保证让该位显示字符;再由段选择控制的I/O端口输出相应字符的段选择码。如此循环下去,使每一位都显示该位应显示的字符,并保持延时一段时间,然后再选中下一位,利用发光显示器的余辉及人眼的视觉暂留特点,给人一种显示器同时被点亮的效果。段选择码,位选择码在每送入一次后一般需要延时1~5ms时间。

33

5.A/D和D/A转换在微机应用中分别起什么作用?

答:在微机应用中A/D转换器完成输入模拟量到数字量的转换,供微机采集数据。D/A转换器完成微机输出数字量到模拟量的转换,实现微机控制。

6.D/A转换器和微机接口中的关键问题是什么?对不同的D/A芯片应采用何种方法连接? 答:D/A转换器和微机接口时主要注意两点:第一要了解所选用的D/A转换器本身是否带有数据锁存器,如果芯片内部带有锁存器可以直接和CPU的数据总线相连接;如果芯片内部不带有锁存器,在接口电路中需要通过数据锁存器来连接CPU的数据总线和D/A转换器的数据线。第二是要注意D/A转换器的位数和所要连接的微机数据总线的位数是否一致。以便决定在需要加数据锁存器时,加几级锁存器,如果CPU的数据总线是8位,使用的是大于8位的D/A转换器,通常采用两级缓冲结构和CPU数据总线相连。 7.什么叫D/A转换器的分辨率?

答:D/A转换器的分辨率指它所能分辨的最小输出电压与最大输出电压的比值。通常用D/A转换器输入数字量的位数来表示。

8.若一个D/A转换器的满量程(对应于数字量255)为10V。若是输出信号不希望从0增长到最大,而是有一个下限2.0V,增长到上限8.0V。分别确定上下限所对应的数。 答: 因为满量程为10V,则每一步的电压变化量为

10V= 0.039V/步

256步 于是,下限是

2.0V =51.3步 取51,即33H。

0.039V/步上限是

8.0V = 205.1步 取205,即CDH。

0.039V/步

9.DAC与8位总线的微机接口相连接时,如果采用带两级缓冲器的DAC芯片,为什么有时要用三条输出指令才能完成10位或12位的数据转换?

答:因为在使用内部不带数据寄存器的DAC时,常常需要在DAC前面增加数据缓冲器,用来锁存CPU通过数据总线发出的数字。如果总线为8位,而DAC超过8位(例如10位或12位)时,CPU必须分2次才能把控制数字送入数据缓冲器,例如先送数据的低8位,然后送剩下的高位,因此需要执行2条输出指令。另外,为了避免DAC在得到局部输入时,其输出端输出并不是最后结果的模拟量,通常采用2级数据缓存结构,相应地CPU也需要再增加执行一次输出指令,使在第一级缓冲器中锁存的数据经第二级缓冲器后能一次加到DAC输入端。第三条输出指令仅仅是使第二级缓冲器得到一个选通信号。

10. 已知某DAC的输入为12位二进制数,满刻度输出电压Vom=10V,试求最小分辨率电压VLSB和分辨率。

11??0.0244% 122?1409511?Vom??10?0.00244V 最小分辨率电压VLSB?1240952?1答:12位D/A的分辨率?

12. A/D转换器和微机接口中的关键问题有哪些?

33

答:A/D转换器和微机接口时的关键问题主要有6个。① A/D转换器输出和CPU的接口方式,主要有2种连接方式:

一种是A/D芯片输出端直接和系统总线相连;另一种是A/D芯片输出端通过接口电路和总线相连。② A/D转换器的分辨率和微机数据总线的位数匹配:当10位以上的A/D转换器和8位数据总线连接时,由于数据要按字节分时读出,因此从8位数据线上需分2次来读取转换的数据。设计接口时,数据寄存器要增加读写控制逻辑。③ A/D转换的时间和CPU的时间配合问题:要注意A/D转换的启动方式,通常启动信号分为电平控制启动和脉冲启动两种。其中又有不同的极性要求。还要注意转换后信号的处理。④A/D的控制和状态信号。因为A/D转换器的控制和状态信号的类型与特征对接口有很大影响,在设计时必须要注意分析控制和状态信号的使用条件。⑤ 输入模拟电压的连接,特别是多路模拟电压的切换控制。 ⑥ 接地问题,为了减轻数字信号脉冲对模拟信号的干扰,数字地和模拟地要正确连接。 13. A/D转换器为什么要进行采样?采样频率应根据什么选定?

答:因为被转换的模拟信号在时间上是连续的,瞬时值有无限多个,转换过程需要一定的时间,不可能把每一个瞬时值都一一转换成模拟量。因此对连续变化的模拟量要按一定的规律和周期取出其中的某一瞬时值,这个过程就是将模拟量离散化,称之为采样,采样以后用若干个离散的瞬时值来表示原来的模拟量。

通常为了使A/D输出信号经过D/A还原后能更好地反映输入模拟信号的变化,根据采样定理,采样频率一般要高于或至少等于输入信号中最高频率分量的2倍,就可以使被采样的信号能够代表原始的输入信号。在输入信号频率不是太高的实际应用中,一般取采样频率为最高频率的4~8倍。

14. 若ADC输入模拟电压信号的最高频率位20KHz,取样频率的下限是多少?完成一次A/D

转换时间的上限是多少?

1答:取样频率的下限为20kHZ×2=40 kHZ 完成一次转换的最长时间是40kHZ?0.025ms

微计算机总线

1. 采用一种总线标准进行微型计算机的硬件结构设计具有什么优点?

答:为适应用户不断变化的要求,微机系统设计必须采用模块化设计,不同的模块组合形成一定的功能。模块之间的连接关系采用标准的总线结构可使不同功能的模块便于互连,兼容性好、生命周期长。模块采用标准化总线结构设计可使模块的生产供应规模化、多元化、价格低、有利于用户。

2. 一个总线的技术规范应包括哪些部分?

答:总线技术规范应包括:(1)机械结构规范:模块尺寸、总线插头插座形式与结点数以及模块与插头插座的机械定位。(2)功能规范:总线信号名称、功能以及相互作用的协议。(3)电气规范:总线中每个信号工作时的有效电平、动态转换时间、负载能力以及电气性能的额定值与最大值。

3. 总线的定义是什么?简述总线的发展过程。

答:总线就是两个以上模块(或子系统)间传送信息的公共通道,通过它模块间可进行数据、地址码及命令的传输。

最早的标准化总线是S-100总线(1975),80年代初IBM PC/XT个人计算机采用8位ISA总线,之后又在IBM PC/AT机上推出16位ISA总线。随着外设接口对总线性能要求的不断提高,出现了EISA总线及PCI总线。PCI总线目前已被个人计算机广泛采用,成为新的工业标准。

4. 微型计算机系统总线由哪三部分组成?它们各自的功能是什么?

33

答:由地址总线、数据总线和控制总线三部分组成。地址总线用于指出数据的来源或去向;数据总线提供了模块间数据传输的路径;控制总线用来传送各种控制信号以便控制数据、地址总线的操作及使用。

5. 扩充总线的作用是什么?它与系统总线的关系是什么?

答:扩充总线是将许多I/O接口连接在一起,集中起来经桥接电路与系统总线相连,减轻系统总线的负载,提高系统性能。系统总线与扩充总线的之间有专门的连接电路,它们各自工作在不同的频宽下,可适应不同工作速度的模块的需要。 6. 为什么要引入局部总线?它的特点是什么?

答:早期的扩充总线(ISA总线)工作频率低,不能满足象图形、视频、网络接口等高数据传输率I/O设备的要求。在处理器的系统总线与传统扩充总线之间插入一个总线层次,它的频率高于传统扩充总线,专门连接高速I/O设备,满足它们对传输速率的要求。这一层次的总线就是局部总线。局部总线与系统总线经桥接器相连,局部总线与传统扩充总线也经桥接器相连,三个层次的总线相互隔开,各自工作在不同的频宽上,适应不同模块的需要。 7. 总线定时协议分哪几种?各有什么特点?

答:总线有三种定时方法。(1)同步定时,信息传输由公共时钟控制,总线信号中包括一个时钟信号,各模块上所有的操作都在时钟开始时启动。(2)异步定时,信息的传输的操作均由源或目的的特定信号跳变所确定,总线上每一个操作的发生均取决于前一个操作的发生,总线操作过程不用公共时钟来同步。(3)半同步定时,总线上各操作之间的时间间隔可以变化,但这个变化只允许为公共时钟周期的整数倍,信号的出现,采样和结束以公共时钟为基础。

8. 总线上数据传输分哪几种类型?各有什么特点?

答:分单周期方式和突发方式两种。在单周期方式中,每个总线周期只传送一个数据。在突发方式下,占用一次总线要进行多个数据的传输,源模块发出首地址去访问目的模块的数据1,以后的数据是在首地址的基础上按一定的规则去寻址目地模块。 9. 总线的指标有哪几项,它工作时一般由哪几个过程组成?

答:总线的指标有(1)总线宽度,一次总线操作可以传输的数据位数;(2)总线工作频率,总线上基本定时时钟的频率,它代表总线操作的最高频率;(3)单个数据传输所用时钟周期数。总线上信息传输过程可分解为:(1)请求总线;(2)总线裁决;(3)寻址;(4)数据传送;(5)错误检查。 10. 为什么要进行总线仲裁? 答:总线结构的特点是,一个传送信息的公共通路总线为多个模块共同使用。但在某一时刻,只能允许一个主模块使用总线进行数据传输。当有多个主模块要占用总线进行数据传输时,要有一个总线的请求及转交的过程,首先按一定规则进行总线使用权的仲裁,把总线的使用权交给优先级最高的请求者。 11. 为什么集中式总线仲裁方式优于菊花链式? 答:菊花链式为串行总线仲裁逻辑,离处理器较远的主模块因前级主模块的占用而在较长时间内得不到响应,优先权的级别与逻辑上级连位置有关,因此灵活性差,缺少公平性。 集中式为并行总线仲裁逻辑,请求与响应信号都是独立与仲裁逻辑相连,优先级的处理可采用多种方式,不至因为某个请求设备的故障而造成整个仲裁逻辑的瘫痪,灵活性好。 12. ISA总线信号分为多少组,它的主要功能是什么?

答:分为总线基本信号、总线访问信号及总线控制信号。总线基本信号主要用来提供基本定时时钟、系统复位、电源和地信号。总线访问信号主要用来提供对总线目标模块访问的地址、数据、访问应答控制信号。总线控制信号的主要功能是提供中断、DMA处理时的请求及响应信号以及扩展模块主控状态的确定信号。

33

13. ISA 16位总线是在ISA 8位总线基础上扩充了哪些信号而形成的?

答:ISA 16位总线在ISA 8位总线基础上把数据线由8位扩充到16位,把地址线由20位扩充到24位;还扩充了中断请求信号、DMA请求与响应信号;还增加了16位数据访问的控制信号等。 14.PCI总线访问时,怎样的信号组合启动一个总线的访问周期,又怎样结束一个访问周期? 答:PCI总线上的主设备取得总线控制权以后,在CLK-1期间发出FRAME#有效信号、要访问的从设备的地址信号及操作类型的命令字,从而启动了一个总线访问周期。结束一个访问周期是通过使FRAME#信号变为无效且保持主设备准备就绪信号IRDY#为有效,完成最后的数据传送后结束这个总线操作。此外用STOP#信号从设备可以主动仃止数据访问周期。

先进微处理器介绍

1.提高微处理器性能的途径有哪些?

答:(1)提高芯片内部时钟的工作频率;(2)增加芯片数据总线的宽度,提高微处理器与片外传送数据或指令代码的速率,同时片内的数据路径也必然加宽,内部的数据处理速度会加快。(3)采用能够并行执行指令的微体系结构及其它相关技术。 2.提高微处理器内部执行的并行性有哪些措施?

答:(1)采用超级流水线技术。把指令执行的过程分成很多级,各级所对应的操作可并行进行,即多条指令在同一时刻完成不同级的操作,实现了指令的并行执行。流水线级分的越多,可并行执行的指令条数也越多。(2)采用超标量技术。在芯片内部设置多重功能相同或接近的功能部件,同一时刻可向多个功能部件分派指令去流水执行,实现了指令执行的并行化。 3.奔腾微处理器采用什么技术来提高指令执行的效率? 答:第一代奔腾微处理器采用了超标量结构来提高指令执行的效率。它内部设有两条流水线,一个时钟周期内可发射两条整数指令给两条流水线去执行,另外还有一个浮点部件可执行浮点指令。这种多重功能部件的结构就是一种超标量的结构。

4.高能奔腾微处理器与第一代奔腾微处理器相比,采取了哪几种主要的技术措施来进一步提高性能?

答:(1)采用了RISC的设计概念。高能奔腾把X86指令转换成多个较小且易执行的指令,这些转换后的指令是三操作数格式,内部设置大量物理寄存器,这是RISC结构的特点,可以提高指令执行的效率。(2)采用超级流水线与超标量技术,处理器具有较高的吞吐率,处理器工作频率尽可能提高,增加了指令执行的并行度,性能有明显的改善。(3)采用动态执行技术,处理器对指令的执行进行调度,打破原有指令顺序,对以后指令执行的顺序进行预测,形成最佳执行顺序来达到最高的指令执行并行度,避免因分支或数据相关等因素对指令执行的并行性所产生的影响。

33