最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

微机原理课后习题参_2011_简版

来源:动视网 责编:小OO 时间:2025-09-26 00:47:13
文档

微机原理课后习题参_2011_简版

第一章一.思考题(略)二.综合题1.设机器字长为8位,写出下列用真值表示的二进制数的原码、补码和反码。答:真值原码反码补码(1)+0010101B000101010001010100010101(2)+1110001B011100010111000101110001(3)+1010011B010100110101001101010011(4)-0010101B100101011110101011101011(5)-1111011B111110111000010010000101(6)-1001
推荐度:
导读第一章一.思考题(略)二.综合题1.设机器字长为8位,写出下列用真值表示的二进制数的原码、补码和反码。答:真值原码反码补码(1)+0010101B000101010001010100010101(2)+1110001B011100010111000101110001(3)+1010011B010100110101001101010011(4)-0010101B100101011110101011101011(5)-1111011B111110111000010010000101(6)-1001
第一章

一.思考题(略)

二.综合题

1. 设机器字长为8位,写出下列用真值表示的二进制数的原码、补码和反码。答:

真值原码反码补码
(1)+0010101B

000101010001010100010101
(2)+1110001B

011100010111000101110001
(3)+1010011B

010100110101001101010011
(4)-0010101B

100101011110101011101011
(5)-1111011B

111110111000010010000101
(6)-1001010B

110010101011010110110110
2. 下列各数均为十进制数,试用8位二进制补码计算下列各题,将运算结果用两位十六进制数表示。 答:    

原题【X+Y】补

【X+Y】原

(X+Y)真值

117+7=0001 0001B+0000 0111B=0001 1000B= 18H

18H18H
28+18=00001 000B+0001 0010B=0001 1010B= 1AH

1AH1AH
39-6=00001 001B+1111 1010B=0000 0011B= 03H

03H3H
4-26+7=1110 0110B+00000111B=11101101B= EDH

93H-13H
58-18=0000 1000B+1110 1110B=1111 0110B= F6H

8AH-0AH
619-(-17)

=0001 0011B+0001 0001B=0010 0100B= 24H

24H24H
7-25-6=1110 0111B+1111 1010B=1110 0001B= E1H

9FH-1FH
887-15=0101 0111B+1111 0001B=0100 1000B= 48H

48H48H
3. 已知以十六进制数形式给出的补码,求出其相应的真值,真值用十进制数表示:答: 

补码真值
48H72   1001000B
9DH-99   -110 0011B
B2H-78   -100 1110B
5C10H

23568  101110000010000B

F2A1H

-3423   -1101 0101 1111 B
4. 下列各数均为十进制数,试用8位二进制补码计算下列各题,判断说明运算结果是否溢出。答:

原题【X+Y】补

对应的真值溢出否
43+18=0010 1011B+0001 0010B=0011 1101B

61未溢出
-52+17=1100 1100B+0001 0001B=1101 1101B

-35未溢出
72-8=0100 1000B+1111 1000B=0100 0000B

未溢出
50+87=0011 0010B+0101 0111B=1000 1001B

-119溢出
(-33)+(-47)=1101 1111B+1101 0001B=1011 0000B

-48未溢出
(-91)+(-75)=1010 0101B+1011 0101B=0101 1010B

90溢出
-127+=1000 0001B+0100 0000B=1100 0001B

-63未溢出
5. 设机器字长为8位。根据给出的不同形式的机器数,如下表,计算其对应的十进制表示的真值。答:   

二进制机器数(若为)无符号数(若为)原码(若为)反码(若为)补码
01101 1110110110110110
0101 1001

1000 1101141-13-114-115
1111 1001 249-121-6-7

第二章

一.思考题(略)

二.综合题

1. 设当前SS=C000H,SP=2000H,AX=2355H,BX=2122H,CX=8788H,则当前栈顶的物理地址是多少?若连续执行PUSH AX,PUSH BX,POP CX 3跳指令后,堆栈的内容发生了什么变化?AX ,BX,CX中的内容是什么?

答:物理地址=C0000H+2000H=C2000H;

执行指令后,地址C000H:1FFFH内容是23H;

            地址C000H:1FFEH内容是55H;

            地址C000H:1FFDH内容是21H;

            地址C000H:1FFCH内容是22H;

(AX)=2355H,(BX)=(CX)=2122H;

2. 假设某CPU的时钟频率是8MHz,如果在进行存储器写操作时插入了一个等待周期,完成该写操作的总线周期所需要的时间是多少ns? 答:

时钟周期=1/8MHz=125ns;

所以所需时间=时钟周期*5=625ns。

3. 设存储器内数据段中存放了两个字2FE5H和3EA8H,已知DS=3500H,数据存放的偏移地址为4B25H和3E5AH,画图说明两个字在存储器中的存放情况。若要读取这两个字,需要对存储进行几次总线读操作?答:

   

A8H38E5AH
3EH38E5BH
E5H39B25H
2FH39B26H
2个字共需要3次总线操作。

4. 8086中的标志寄存器FR中有哪些状态标志和控制标志?这些标志位各有什么含义?假设(AH)=03H,(AL)=82H,试指出将AL和AH中的内容相加和相减后,标志位CF、AF、OF、SF、IF和PF的状态。答:

   6个状态标志:

      CF:进位标志;

      PF:奇偶标志;

      AF:辅助进位标志;

      ZF:零标志;

      SF:符号标志;

      OF:溢出标志;

  3个控制标志:

      IF:中断允许标志;

      DF:方向标志;

      TF:单步标志。

03H+82H=85H计算后:CF=0;PF=0;AF=0;ZF=0;SF=1;OF=0。

03H-82H=81H计算后:CF=1;PF=1;AF=0;ZF=0;SF=1;OF=1。

82H-03H=7FH计算后:CF=0;PF=0;AF=1;ZF=0;SF=0;OF=1。

5. 有一个22个字的数据组成的数据区,起其实地址为6101H:1CE7H。试计算出该数据区首末存储单元的物理地址?答:

起始物理地址为:62CF7H

数据区末的物理地址为:62CF7H+(22*2-1)2 = 62D22H

堆栈必须为字操作—只有PUSH  BX 是正确的

此时,BX中的高8位BH不能确定,但不影响压栈操作,不影响SP的变化

6. 假设(SS)=20A0H,(SP)=0032H,将(CS)=0A5BH,(IP)=0012H,(AX)=0FF42H,(SI)=537AH,(BL)=5CH依次压入堆栈保存。要求:

   (1)画出堆栈数据存放示意图;

   (2)写出压栈完毕后SS和SP的值。

答:(1)

堆栈必须为字操作

    

(2)SS=20A0H, SP=0028H

7. 若某存储单元的实际地址为2BC60H,且该存储单元所在的段首地址为2AF00H,则该存储单元在段内的偏移地址为多少?答:

   偏移地址=2BC60H-2AF00H=0D60H

第三章

1. 指出下列指令的错误原因。

(1) AND AX, DL                     ;类型不匹配

(2) ADD CS, DX                     ;CS不能作为目的操作数

(3) MOV AX, IP                     ;IP不能作为指令的操作数

(4) MOV [BP][SI], [SI]                ;两个操作数不能同时为内存操作数

(5) SUB [BP][SI], ES:DX              ;段超越前缀只能用在内存操作数之前

(6) XCHG AL, [SI][DI]                ;没有[SI][DI]这种操作数形式

(7) JGE AX                         ;条件转移指令的操作数只能是标号

(8) PUSH DL                        ;对堆栈不能进行字节操作

2. 用一条指令将BX清0。(请给出3种方法)

方法1:MOV BX, 0 

方法2:SUB BX, BX  

方法3:AND BX, 0  ;将BX和0做与,可以将BX清零

方法4:XOR BX, BX

3. 写出实现下列功能的指令序列。

(1) 判断AX的值,若AX等于0,则转到标号LABEL处。(请写出3种方法)

方法1:

CMP AX, 0    

JZ  LABEL  ; 如果 ZF = 0,说明AX为0,因为CMP指令是做减法,但是不写回结果,因此指令执行后AX内容不会受到破坏

方法2:

TEST AX, 0FFFFH

JZ  LABEL   ; 如果ZF = 0,说明AX为0

方法3:

AND AX, 0FFFFH  

JZ  LABEL

(2) 将AL的高4位与低4位分别放入AH与AL的低4位,并将AH与AL的高4位清0。

MOV AH, AL    

AND AL, 0FH    ; AL高4位通过与清零,而低4位保持不变

MOV CL, 4      

SHR AH, CL ; 这两条指令通过逻辑右移将AH的高4位清零,因为SHR在右移后,高位补零

(3) 若AX和BX中的数恰好1个是奇数、1个是偶数,则将奇数放入AX,偶数放入BX;否则,AX和BX不变。

MOV  DX,AX    ;首先判断是否是1奇1偶,如是则保持不变

ADD  DX,BX

TEST   DX,01H      ;检测AX与BX是否同为偶数或同为奇数

JZ  CONTINUE    

TEST AX, 01H          ;检测AX的最低位

JNZ  CONTINUE       

XCHG AX, BX    

CONTINUE : ….        ;无需处理,AX,BX中内容将不变

4. 分析下列指令序列完成什么功能。

MOV     CL, 4

SHL     DX, CL

MOV     BL, AH

SHL     AX, CL

SHR     BL, CL

OR         DL, BL

答案:将DX.AX中的32位数整体逻辑左移4位。

5. 给出下列各条指令执行后AL以及CF、OF、SF、和ZF的值。

指令ALCFOFSFZF备注
MOV AL, 100

100/HMOV指令不影响标志位

XOR  AL, AL

100/H0001除NOT外,逻辑运算后CF=OF=0,其余据结果设置;逻辑运算指令下,AF标志位为任意值

MOV  AL, -1

-1/0FFH0001MOV指令不影响标志位

INC AL

00001INC不影响CF,其余根据结果设置

NOT AL

0FFH0001NOT指令不影响标志位

SHL AL, 1

0FEH1010位移指令根据移出的位设CF;根据结果设SF,ZF,PF;只移动一位时,根据移位前后最高位是否变化设置,决定OF,有变化OF = 1, 无变化OF = 0;移动多位时,OF位无定义;位移运算指令下,AF标志位为任意值

CMP AL, 10

0FEH0010CMP指令根据结果设置6个标志位

SUB AL, 7FH

7FH0100SUB根据结果设置6个标志位

SHL AL, 1

0FEH0110解释同上
6. 比较AX,BX和CX中无符号数的大小,将最小数放入AX中。

答案:

CMP AX, BX

JC BBB            ; 如果AX <= BX,跳转

XCHG AX, BX      ; 否则,交换AX和BX的值,将两者中的小值放到AX中去

BBB:

CMP AX, CX       

JC CCC           ; 如果AX <= CX,跳转

XCHG AX, CX     ; 否则,交换AX和CX的值,将两者中的小值放到CX中去

CCC:

INT 20H           ;返回DOS

7. 变量定义伪指令与符号定义伪指令的主要作用是什么?

答案:

变量定义伪指令:主要用来为某种类型(比如字节型、字型)的内存单元的地址,指定一个可以引用的名字标识。

符号定义伪指令:其实就是定义一个宏替换常量,用定义的符号代表一个文本串或者一个数值,在程序中遇到定义的符号时,用相应的文本串或者数值去替换。

8. 设有下列段定义:

DSEG  SEGMENT

X    DW        1, 3

DSEG  ENDS

给出下列两组指令序列分别执行后AX的值。

(1) MOV  AX, DSEG

   MOV  DS, AX

   MOV  AX, X+1                       ;地址运算

(2) MOV  AX, SEG X

   MOV  ES, AX

   MOV  AX, ES: X

   INC   AX

答案:

(1)  (AX) = 0300H             (2)  (AX) = 0002H

0010HV114H
0011H00H
0012H14H
0013H00H
0014H1EH
0015H00H
0016HBUF1‘1’

0017H‘0’

0018H‘0’

0019H05H
001AH0
001BH0
001CH0
001DH0
001EHBUF201H
001FH00H
0020H02H
0021H00H
0022HA9H
0023H02H
0024HVA16H
0025H00H
9. 设有如下定义的数据段:

DATA      SEGMENT

        ORG     10H

V1        DW        2 DUP (20), $ + 10

BUF1     DB        ‘100’, 5

        DD        0

BUF2    DW        1, 2, 2A9H

LEN        EQU    BUF2 – BUF1

VA        DW        BUF1

DATA    ENDS

则:V1+1中存放的字节数据为 ( 00H );

V1+4中存放的字数据为(001EH);

VA的内容为(16H);

LEN的值为(8)。

10. 在数据段定义的两个变量S1和S2,要求设计一个完整的程序,

将以S1为首地址的50个字节依次传送到以S2为首地址的内存单元中。

datasg        segment

s1 db  25  dup  ('12')

s2 db  50  dup  (?)

datasg        ends

codesg    segment

        assume  cs : codesg,    ds : datasg

start:  mov     ax, datasg

      mov     ds, ax

      mov     es, ax

      mov     si, offset s1

      mov     di, offset s2

      mov     cx, 50

AND AX,0

LOP:     MOV  AL,[SI]

        MOV  [DI],AL

        INC SI

        INC DI

        LOOP  LOP

mov ax, 4c00h

        int 21h    

codesg    ends

end        start 

    end    start

习题五

一. 思考题

⒈ 半导体存储器主要分为哪几类?简述它们的用途和区别。

答:按照存取方式分,半导体存储器主要分为随机存取存储器RAM(包括静态RAM和动态RAM)和只读存储器ROM(包括掩膜只读存储器,可编程只读存储器,可擦除只读存储器和电可擦除只读存储器)。

RAM在程序执行过程中,能够通过指令随机地对其中每个存储单元进行读\写操作。一般来说,RAM中存储的信息在断电后会丢失,是一种易失性存储器;但目前也有一些RAM芯片,由于内部带有电池,断电后信息不会丢失,具有非易失性。RAM的用途主要是用来存放原始数据,中间结果或程序,与CPU或外部设备交换信息。

而ROM在微机系统运行过程中,只能对其进行读操作,不能随机地进行写操作。断电后ROM中的信息不会消失,具有非易失性。ROM通常用来存放相对固定不变的程序、汉字字型库、字符及图形符号等。

根据制造工艺的不同,随机读写存储器RAM主要有双极型和MOS型两类。双极型存储器具有存取速度快、集成度较低、功耗较大、成本较高等特点,适用于对速度要求较高的高速缓冲存储器;MOS型存储器具有集成度高、功耗低、价格便宜等特点,适用于内存储器。

⒉ 存储芯片结构由哪几部分组成?简述各部分的主要功能。

答:存储芯片通常由存储体、地址寄存器、地址译码器、数据寄存器、读\写驱动电路及控制电路等部分组成。

存储体是存储器芯片的核心,它由多个基本存储单元组成,每个基本存储单元可存储一位二进制信息,具有0和1两种状态。每个存储单元有一个唯一的地址,供CPU访问。

地址寄存器用来存放CPU访问的存储单元地址,该地址经地址译码器译码后选中芯片内某个指定的存储单元。通常在微机中,访问地址由地址锁存器提供,存储单元地址由地址锁存器输出后,经地址总线送到存储器芯片内直接进行译码。

地址译码器的作用就是用来接收CPU送来的地址信号并对它进行存储芯片内部的“译码”,选择与此地址相对应的存储单元,以便对该单元进行读\写操作。

读\写控制电路产生并提供片选和读\写控制逻辑信号,用来完成对被选中单元中各数据位的读\写操作。

数据寄存器用于暂时存放从存储单元读出的数据,或暂时存放从CPU送来的要写入存储器的数据。暂存的目的是为了协调CPU和存储器之间在速度上的差异。

⒊ 简述SRAM和DRAM的应用特点。

答:SRAM具有鲜明的应用特点:

a、由电路结构的特点,可以保证存储的数据信息只要不断电,就不会丢失;不需要定时刷新,简化了外部电路。

b、相对动态RAM,存取速度更快。

c、内部电路结构复杂,集成度较低;制造价格成本较高。

d、双稳态触发电路总有一个处于导通状态,使得静态RAM的电功耗较大。

e、一般用作高速缓冲存储器(cache)。

DRAM的应用特点主要有:

a、集成度高、功耗小,制作成本低,适合制作大规模和超大规模集成电路,微机内存储器几乎都是由DRAM组成。

b、由于电容存在漏电现象,存储的数据不能长久保存,因此需要专门的动态刷新电路,定期给电容补充电荷,以避免存储数据的丢失或歧变。

⒋ 8086/8088CPU与存储器连接时,三总线应如何实现连接?

答:1)、存储器与CPU数据总线的连接

CPU的数据总线和存储器的数据线直接连接。当需要进行位扩充时,各芯片的数据线分别连接到数据总线的不同位线上,CPU需一次选中多片并从多片芯片上读\写一个字节的数据。当需要进行字扩充时,各存储芯片的数据线均连接到数据总线上,CPU只能选中其中的一个芯片,并从该片中读\写一个字节数据。

2)、存储器与CPU控制总线的连接

存储器与CPU控制总线的连接的控制信号主要有:地址锁存允许信号、读\写对象选择信号、读写选通信号、准备就绪信号等。存储器的控制信号将与CPU上述的对应信号线连接。

3)、存储器与CPU地址总线的连接

存储器与CPU地址总线的连接涉及译码和寻址问题。通过全译码或部分译码,可以规划设计微机系统中存储器的地址空间分配,将整个地址空间合理地分配到ROM和RAM等不同类型的存储器上。将构成存储器的各个存储芯片的地址信号线与CPU地址总线中低位相连接;CPU地址总线的高位地址线连接译码器,产生并送出片选信号,连接到对应芯片的片选信号引脚;或将高位地址线直接连接到芯片的选引脚。

⒌ 简述线选、部分译码和全译码的应用特点。

答:线选的应用特点是不需要地址译码设备,线路简单,适用于连接存储芯片数量较少的场合;部分译码方式由于一定有一些未参与实际译码的地址线,他们的取值具有“无关性”,既可以为1,也可以为0,因此采用部分译码法虽然可以简化译码电路,但每个存储单元必将对应多个地址,出现“地址重叠”的现象,一部分地址空间将被浪费。因此在系统存储容量要求不大的情况下,适合采用该译码方式;在全译码译码方式下,全部20位地址总线信号都参加译码,存储器芯片上的每一个单元在整个内存空间中具有唯一的一个地址,不会出现“地址重叠”的问题。

⒍ 简述存储器芯片中存储单元数量、存储位数与所连接的总线数量的对应关系。

答:存储单元数=;(M为地址线数量);

数据线数=存储单元的存储位数。

⒎ 简述CPU与Cache、主存、外(辅)存之间的关系。

答:CPU可直接用指令对内存储器进行读/写访问。为了解决和协调容量、速度、价格之间的矛盾,在主存和CPU之间增加速度更高、但容量较小的高速缓冲存储器(cache)来提高CPU的存取速度。外存的容量最大,每单位存储容量的相对价格最低,但访问速度也是较慢的。

⒏ 简述存储芯片的位扩充和字扩充的意义。

答:位扩充指的是对存储单元的位数不足8位的芯片,通过多片“并联”的连接方式,扩充为8位的存储位数。字扩充是对存储器容量的扩充,或称对存储单元数量的扩充。

二. 综合题

⒈ 已知一个SRAM 芯片的容量为16K×4位,该芯片的地址线为多少条?数据线为多少条?

答:芯片容量为213B=8KB,所以该芯片的地址线为14条,数据线为4条。

⒉ 巳知一个DRAM 芯片外部引脚信号中有4条数据线,7条地址线,计算其存储容量。

答:位。

3.某存储芯片上有1024个存储单元,每个存储单元可存放4位二进制数值,则该存储芯片的存储容量是多少字节。

答:512B。

4. 某 RAM 芯片的存储容量为 1024×8 位,该芯片的外部引脚最少应有几条?其中几条地址线?几条数据线?若已知某 RAM 芯片引脚中有 13 条地址线,8 条数据线,那么该芯片的存储容量是多少?(本题表述的不够清楚)

答:该芯片外部引脚最少应有1;其中10条地址线,数据线。

芯片的存储容量是8KB。

5. 在部分译码电路中,若CPU的地址线A15、A14和A13未参加译码,则存储单元的重复地址有多少个。

答:个。

6. 假设选用一片62芯片(8K*8位)和一片27芯片(8K*8位)构成内存储系统。采用线选法控制片选端,至少需要多少条片选地址线?若采用部分译码法控制片选端,至少需要多少条片选地址线?采用全部译码法控制片选端,则需要多少条的片选地址线?

答:用线选法控制片选端,至少需要 1 条片选地址线;若采用部分译码法控制片选端,至少需要 1条片选地址线;采用全部译码法控制片选端,则需要全部的高位片选地(对于该题为7条)址线。

7.设某微型机的内存RAM区的容量为128KB,若用 21(K*1位) 芯片构成这样的存储器,需多少片 21?至少需多少根地址线?其中多少根用于片内寻址?多少根用于片选译码?

答:需16片 21;至少需17根地址线;其中16根用于片内寻址;1根用于片选译码。

8. 设有一个存储器系统,由2个8KB的62SRAM芯片构成。其中1#芯片的地址范围为0A6000H~0A7FFFH,2#芯片的地址范围为0AA000H~0ABFFFH,下图画出了74LS138译码器、存储器与8088CPU的连接图,但只画出了连线图的一部分,请将电路连接图补充完整。

答:

应该是一个或门

9. 选用8088CPU设计一个微处理器系统,要求存储器的容量为8KB的EPROM,采用27芯片(8K×8位);RAM的容量为16KB,采用62芯片(8K×8位)。连接电路如下图所示。假设工作在最小模式下。试计算确定各个存储芯片的地址空间。

答:27的存储地址为8E000H~8FFFFH;1#62的存储地址为82000H~83FFFH;2#62的存储地址为80000H~81FFFH.

10.在第8题的基础上,若仍选用1片27增加8KB的ROM,选用1片62增加8KB的RAM。试画出电路连接示意图,并确定扩充芯片的地址空间。

答:2#27地址空间为8C000H~8DFFFH,3#62地址空间为84000H~85FFFH。

第7章

1.列举中断的具体应用。

要点:符合如下四种的均可

(1)响应外部突发事件。

(2)实时多任务调度。

(3)实现外设与CPU的并行处理

(4)分时多任务操作系统的基础。

2.中断的分类方式及其关系。

要点:

可屏蔽中断和不可屏蔽中断

内部中断和外部中断

软件中断和硬件中断

软件中断内部中断不可屏蔽中断
硬件中断外部中断/内部中断

可屏蔽/可屏蔽

3.中断向量表的功能时什么, 8086/8088CPU 如何对中断源识别并跳转到正确的中断服务程序入口?

要点:中断向量表是存放中断服务程序入口地址的一个特定的内存区域,中断号都与一个中断服务程序的入口地址相对应,实现中断处理程序的直接跳转

8086/8088cpu通过中断号标识中断源,外部中断的中断号由中断控制器(如8259a)提供,内部中断中断号和不可屏蔽中断号系统固定分配

发生中断时:

1)将标志寄存器、CS、IP内容压入堆栈。

2)获取中断类型号n,生成中断向量表地址4*n。

3)从中断向量表地址为4*n的存储单元中取出中断向量送入CS和IP,继而转去执行中断服务子程序。

4.中断的一般处理流程包括那些步骤,分别完成什么功能?

要点:

中断处理的一般过程由中断请求、中断优先级判别、中断响应、现场保护、中断服务、现场恢复和中断返回构成。

中断请求:发起中断信号

中断判优:优先级判断确定响应那个中断

中断响应:通过中断屏蔽确定是否响应中断,回复中断响应信号

现场保护:保存状态寄存器、地址寄存器和相关重要寄存器

中断服务:中断处理程序

现场恢复:恢复状态寄存器、地址寄存器和其他重要寄存器

中断返回:跳转到断点

5.8259A如何进行优先级管理?

要点:全嵌套方式、特殊全嵌套方式和优先级自动循环方式,分别针对单片,级联和特殊情况下的应用

6.设8259A的端口地址为80H和81H,用程序清除中断服务寄存器的ISR6。

要点:

MOV   AL, 66H        : EOI=1;SL=1;R=0;L2L1L0=6

OUT   80H, AL          ; 设置OCW2

7.2片8259A组成的级联系统,设备A接在从片的IR0上,从片接在主片的IR4上,说明A设备发生中断到CPU响应的全过程。

要点:

1),A设备产生中断请求

2),从片8259A进行优先级判断,如果IR0上的中断优先级高于当前从片的其它优先级,从片8259A响应中断,向主片的IR4脚发起中断请求

3),主片8259A进行优先级判断,如果IR4上的中断请求优先级高于当前主片的其它优先级,则主片通过INT管脚向CPU发起中断请求

4),CPU接收到中断请求后,若允许中断,则向主片8259A发送两个INTA响应。在第一个INTA周期,主8259A通过这CS0-3级联线,发出优先权最高的从8259A设备标志代码ID。第二个INTA周期,与ID相一致的从8259A把中断向量号代码送上数据总线。

5),进入中断服务程序处理

6),中断结束,CPU要发两次EOI命令,分别使主8259A和正在服务的从8259A结束执行中断操作。因为在中断响应周期,与主、从8259A相应的ISR都被置位。

8.下列程序分别是8259A初始化程序和中断服务程序,分析程序并为每行程序加上注释。

[注1:程序中标红色的地方有误,应该将OFFSET 改为SEG;]

[注2:INT 21调用书上没有具体讲,该程序用到INT21调用的25号功能]

[注3:中断服务程序中的0A0H和20H分别为2片8259A的地址]

INT1  PROC  FAR

PUSH DS         ; 保存DS

PUSH AX         ; 保存AX

PUSH DX         ; 保存DX

MOV DX,OFFSET INT2    ; 获取中断服务程序INT2的偏移量

MOV AX,SEG INT2       ; 获取中断服务程序INT2的段地址

MOV DS,AX             ; AX =ds

MOV AL,78H            ; 中断号

MOV AH,25H            ; dos调用功能号

INT 21H                ; 调用21号中断,设置中断向量 中断向量地址为 DS:DX

POP DX                 ; 恢复DX

POP AX                 ; 恢复AX

POP DS                 ; 恢复DS

RET                    ;程序结束

INT1  EDNP

INT2  PROC  FAR

PUSH AX                ; 保存AX

INC [SI]                 ; SI地址的内容加1;

MOV AL, 20H            ; AL=20H

OUT 0A0H, AL           ; A0H地址的8259A的Ocw2寄存器结束中断

OUT 20H,AL            ; 20H地址的8259A的Ocw2寄存器结束中断

POP AX                 ; 恢复AX

IRET                    ; 中断返回

INT2  ENDP

9.假定按键Key连接到单片8259A的IR3引脚,编程实现如下功能:1)按键高电平时产生中断请求,并在显示器上打印“IRQ-H”字符串和中断的次数。2)按键上升沿触发中断请求,在显示器上打印“IRQ-L-H”和中断的次数。

    假设8259A地址为20H和21H,中断号为43H

DATA SEGMENT

  STRING DB ‘IRQ-H’,ODH,OAH,’$’         ; 上升沿STRING DB ‘IRQ-L-H’,0DH,0AH,’$’

DATA ENDS

STACK SEGMENT STACK

       DW  DUP(?)

STACK ENDS

 CODE SEGMENT

       ASSUME CS:CODE

start:     CLI

PUSH ES

;设置irq3中断服务程序地址

       MOV  AX, 0000H

       MOV  ES, AX

       MOV  AX, OFFSET IRQ3

    MOV  BX, 40H*4

       MOV  ES:WORD PTR[BX],AX

       MOV  AX, SEG IRQ3

       MOV  ES:WORD PTR[BX+2], AX

       POP   ES

; 初始化

       MOV   AL, 1BH        ; 8259A初始化,单片,高电平触发       ; 13H为上升沿触发

OUT   20H, AL         ; 设置ICW1

MOV   AL, 40H        ; 中断号40H开始

OUT   21H, AL        ; 设置ICW2

MOV   AL, 03H       ; 自动结束中断方式

OUT   B1H, AL         ; 设置ICW4

    ; 读写OCW1,去掉对irq3的屏蔽

IN   AL, 21H

       AND  AL, F8H

       OUT  21H, AL

       MOV  CX, 0000H  ;计数值

       STI     ;开中断

       HLT     ;处理器暂停,等待PC机操作

A1:    STI     ;循环,等待中断

        JMP  A1

;中断服务中,调用bios 显示功能,显示IRQ-H,中断次数

IRQ3    proc  near

       MOV  AX, 09H

       MOV  DX, SEG STRING

    MOV DS, DX

    MOV DX, OFFSET STRING

       INT   21H

       INC  CX

    MOV AL, CX

    ADD AL,30H

    MOV AH,01H

    INT 10H

       CLI

       IRET

IRQ7 endp          

CODE ENDS

END START

10.设计一个3片8259A级联中断系统,主片中断号从20H开始,从片从30H和40H开始,要求实现5个中断源的输入,其中主片连接1个中断源A,从片分别连接2个中断源B、C和D、E。优先级为B>C>E>D>A,画出级联连接图,并编写3片8259A的初始化程序。

  如下图示,

要点: 不可以将IR0连接到从片;主片采用特殊全嵌套方式;主片和从片ICW3的设置

假设地址分别为20H/21H;80H/81H;A0H/A1H

主片初始化

MOV   AL,11H   ;ICW1边沿触发,级连,有ICW4

OUT   20H,AL

MOV   AL,20H    ;ICW2 中断类型号的初值为20H

OUT   21H,AL

MOV   AL,06H   ;ICW3 从片INT接主片IR1,IR2

OUT   21H,AL

MOV   AL,09H   ;ICW4 8086系统、非自动EOI、非缓冲、特殊完全嵌套

OUT      21H,AL

MOV   AL,46H   ;OCW1允许IR1,IR2,IR6中断

OUT   21H,AL

MOV   AL,20H   ;OCW2一般EOI

OUT   20H,AL

从片1的初始化代码如下:

MOV   AL,11H    ;ICW1边沿触发、级连、有ICW4

OUT   80H,AL

MOV   AL,30H    ;ICW2 中断类型号的初值为30H

OUT   81H,AL

MOV   AL,01H    ;ICW3 从片INT接主片IR1

OUT   81H,AL

MOV   AL,01H    ;ICW4 8086系统、非自动EOI、非缓冲、一般完全嵌套

OUT      81H,AL

MOV   AL,0AH   ;OCW1允许IR1,IR3中断

OUT   81H,AL

MOV   AL,20H   ;OCW2一般EOI

OUT   80H,AL

从片2的初始化代码如下:

MOV   AL,11H    ;ICW1边沿触发、级连、有ICW4

OUT   0A0H,AL

MOV   AL,40H    ;ICW2 中断类型号的初值为40H

OUT   0A1H,AL

MOV   AL,02H    ;ICW3 从片INT接主片IR2

OUT   0A1H,AL

MOV   AL,01H    ;ICW4 8086系统、非自动EOI、非缓冲、一般完全嵌套

OUT      0A1H,AL

MOV   AL,0AH   ;OCW1允许IR1,IR3中断

OUT   0A1H,AL

MOV   AL,20H   ;OCW2一般EOI

OUT   0A0H,AL

第八章

一、填空题

1.    3    16

2.    213H

3.    2、3    1、5

4.    端口A和端口C的高4位        端口B和端口C的低4位

5.    3    2    1

6.    22DH

7.    单工 半双工    全双工

8.    数据位    校验位

9.    DTR    DSR        RTS        CTS

10.    MCR    MSR

二、选择题

1.B    2.C    3.C    4.D    5.C    6.C    7.B    8.B    9.D

三、应用简答题

1、片选信号是有地址译码器产生的,用于确定芯片基地址和进行芯片选择的信号。如果芯片内部有5个不同寄存器则需要3根地址线对其内部寄存器进行译码。

4、        MOV     DX,    43H

MOV    AL,    10110000B

OUT        DX,    AL

MOV    DX,    40H

IN        AL,    DX

MOV    DX,    41H

OUT        DX,    AL

5、不妨用PB输入,PA输出,程序代码如下:

IO8255BASE    equ    200H

IO8255A        equ    IO8255BASE

IO8255B        equ    IO8255BASE+1

IO8255K     equ    IO8255BASE+3

DATA    SEGMENT

VAR        DB        00H

DATA    ENDS

CODE    SEGMENT

ASSUME    CS:CODE, DS:DATA

START:    MOV    DX,IO8255K

MOV    AL,10000010B

OUT    DX,AL

L:    MOV    DX,IO8255B

IN        AL,DX

MOV    VAR,AL

MOV    DX,IO8255A

MOV    AL,VAR

MOV    CX,8

L1:    TEST    AL,01H

JNZ        L2

SAR        AL,1

LOOP    L1

AND    AL,00H

JMP        L3

L2:    AND    AL,01H

ROL    AL,CL

OUT    DX,AL

JMP        L3

L3:    MOV    AH,01H

INT        16H

JZ        L

MOV    AH,4CH

INT        21H

CODE    ENDS

END    START

7、8255A工作在方式1时,使用的握手信号有两类:

输入时,使用数据选通信号,输入缓冲器满信号IBF和中断请求信号INTR。

输出时,使用输出缓冲器满,外设应答信号和中断请求信号INTR。

8、每个字符信息长度=1+7+1+1=10bit

所以每秒传输字符数=3600/10=360,即每秒发送360个字符

9、     空闲    启动 字符数据                                        奇校验 停止

100100001011

文档

微机原理课后习题参_2011_简版

第一章一.思考题(略)二.综合题1.设机器字长为8位,写出下列用真值表示的二进制数的原码、补码和反码。答:真值原码反码补码(1)+0010101B000101010001010100010101(2)+1110001B011100010111000101110001(3)+1010011B010100110101001101010011(4)-0010101B100101011110101011101011(5)-1111011B111110111000010010000101(6)-1001
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top