文档库 最新最全的文档下载
当前位置:文档库 › 微机原理复习题答案

微机原理复习题答案

微机原理复习大纲

复习范围:

1.作业

2.书上例题

3.课堂上反复强调的内容

4.复习题

微机原理复习题

一、单项选择题

1.PC机是( C )

A、单片机

B、单板机

C、微型计算机

D、微型计算机系统

2.CPU中运算器的主要功能是( D )

A、算术运算

B、逻辑运算

C、函数运算

D、算术运算和逻辑运算

3.8086CPU中的段寄存器用来存放( C )

A、存储段的物理地址

B、存储器的逻辑地址

C、存储器的段基值

D、存储器的起始地址

4.8086系统中内存储器的地址空间为1M,而在进行I/O-读写时,有效的地址线是( B )

A、高16位

B、低16位

C、高8位

D、低8位

5.8086CPU在进行写内存操作时,控制信号M/IO-和DT/R-是( D )

A、00

B、0 1

C、1 0

D、1 1

6.芯片8288在8086CPU系统中用作( C )

A、总线锁存器

B、总线驱动器

C、总线控制器

D、总线仲裁器

7.有一静态RAM芯片的地址线为A0~A9,数据线为D0~D3,则该存储器芯片的存储

容量为( D )

A、2K×4位

B、1KB(B:字节)

C、2KB

D、1K×4位

8.在16位存储系统中,为了( C ),存储字最好存放在偶地址。

A、便于快速寻址

B、节省所占的内存空间

C、减少执行指令的总线周期

D、减少读写错误

9.有一8086系统的中断向量表,在003CH:003FH单元开始依次存放34H、FEH、00H

和F0H四个字节,该向量对应的中断类型码和中断服务程序的入口地址分别为( C )

A、0EH,34FE:00F0H

B、0EH,0F000:0FE34H

C、0FH,0F000:0FE34H

D、0FH,00F0H:34FEH

10.8259A可编程中断控制器中的中断服务寄存器ISR用于( A )

A、记忆正在处理中的中断

B、存放从外设来的中断请求信号

C、允许向CPU发中断请求

D、禁止向CPU发中断请求

11.当8255A 工作在方式1的输入状态时,8255A与外设之间的联络信号为( C )

A、IBF、ACK

B、OBF、ACK

C、IBF、STB

D、OBF、STB

12.8253可编程定时/计数器的计数范围是( D )

A、0-255

B、1-256

C、0-32768

D、1-65536

13.可编程定时器/计数器8253的6种工作方式中,既可软件启动,又可硬件启动的是( B )

A、方式1,2;

B、方式2,3 ;

C、方式3,5;

D、方式2,5

14.根据串行通信规程规定,收发双方的( B )必须保持相同。

A、外部时钟周期;

B、波特率因子;

C、波特率;

D、以上都正确15.8251A用作异步串行通信接口,如果设定波特率因子为16,而发送器与接收器时钟频率为19200Hz,则波特率为( A ) 。

A、1200波特;

B、2400波特;

C、9600波特;

D、19200波特

16、10进制数-127的补码为(A )

A、10000001

B、10000000

C、00000001

D、11111111

17、指令MOV BX, DA TA[BX]采用的寻址方式是( D )。

A、立即寻址

B、寄存器间接寻址

C、直接寻址

D、寄存器相对间接寻址

18、已知AL=7EH, DL=8AH, 执行CMP AL, DL指令后,标志寄存器中C、O、S、Z四标志的状态分别为(C )。

A、0、0、1、0

B、0、1、1、0

C、1、0、1、0

D、1、0、0、0

19、已知BL=08H, DL=0E2H, 执行XOR DL, BL指令后,DL寄存器中的数为(D )

A、132

B、20H

C、00H

D、0EAH

20、CPU响应中断后得到中断类型码是9,则从(C )单元取出中断服务子程序的入口地址

A、0009H

B、00009H

C、00024H

D、0024H

21 十进制数66转换成二进制数为(D )

A. 11000010

B. 01100110

C. 11100110

D. 01000010

22 下列数中最小的是A

A. (101001)2

B. (52)8

C. (2B)16

D. (50)10

23 设(101)x=(41)16,求x=(C)

A.6

B. 10

C.8

D. 12

24 用16位二进制补码表示一个带符号数,其最小数为(C),如表示一个无符号数,其最小数为(A)

A.0

B.-32767

C.-32768

D. -65536

25 一个8位二进制整数,若用补码表示,由3个“0”和5个“1”组成,则最小值为(C)。

A.-120

B. -8

C.-113

D. -11

26 8086/8088加电复位后,执行的第一条指令的物理地址是(B)。

A.0FFFFH

B. FFFF0H

C.0000H

D. 0240H

27 8086在执行MOV AL, [BX]指令的总线周期内,若BX存放的内容为2034H,则BHE= ,和A0的状态为D。

A.0,1

B. 0,0

C.1,1

D. 1,0

28 在8086/8088CPU中,一个最基本的总线周期数由(①D)个时钟周期(T状态)组成,在T1状态,CPU往总线上发送的是(②B)信息。

① A. 1 B. 2 C. 3 D. 4

②A.数据 B. 地址 C.控制 D. 其他

29 8086用于中断请求输入的引脚信号是(A)。

A. INTR和NMI

B. INT和NMI

C. INTR和INTA

D. INTE和INET

30 8086CPU响应单个可屏蔽中断的条件是(D)。

A.CPU开中断

B.外设有中断请求信号

C.外设中断请求信号不屏蔽

D.同时满足上述A,B,C条件,且正在执行的指令执行完毕。

31 不需要访问内存的寻址方式是(B)。

A. 直接寻址

B. 立即数寻址

C. 间接寻址

D. 变址寻址

32 条件转移指令JE NEXT,能转移到语句标号为NEXT执行的条件是(D)。

A.ZF=0

B. CF=1

C.CF=0

D. ZF=1

33 实现Al寄存器中D7和D0都取反的指令是D

A. AND AL, 7EH

B.OR AL, 81H

C. TEST AL,81H

D. XOR AL,81H

二、多项选择题

1.8086CPU的下列寄存器中,不能用作寄存器间接寻址方式时的地址寄存器的有( ACD )。

A、AX

B、BX

C、CX

D、DX

E、SI

2.8086有两种工作模式,即最大模式和最小模式,其中最小模式的特点是( ADE )。

A、8086提供全部控制信号

B、必须使用总线控制器8288

C、必须使用总线收发器

D、必须使用总线锁存器

E、构成单处理器系统

3.大部分DMAC都拥有( BCD )等传送方式。

A、直接传送方式

B、单字节传送方式

C、查询传送方式

D、成组传送方式

E、中断传送方式

4.要对可编程接口芯片进行读操作时,必须满足( AB )

A、CS=L

B、RD=L,WR=H

C、WR=L,RD=H

D、RD=L WR=L

E、RD=H,WR=H

5 将累加器清零的正确指令是ABC

A.AND AX, 00H

B. XOR AX, AX

C. SBB AX,AX

D. CMP AX,AX

三、判断题

1.在8086最小方式的总线读时序图中,在T2时钟周期时,AD0-AD l5,总线上有一个高阻态。( √) 2.对于可屏蔽中断的嵌套处理原则是允许优先级高的中断打断优先级低的中断,允许同级中断相

互打断,而不允许优先级低的中断打断优先级高的中断。( ×)

3.8086CPU在收到外部中断请求信号以后,进人中断响应周期,通过IN指令读取中断类型号,从而就可获得中断服务程序入口地址。( ×)

4.可编程定时器/计数器,其定时与计数功能可由程序灵活地设定,但由于是由软件控制,在计数过程中必然会占用CPU的时间。( ×)

5.指令一般包括两部分:操作码和操作数。( √)

6.一个总线周期有一个或若干个指令周期组成。( ×)

7. 8086有一个16位标志寄存器,它包含了6个状态标志位和3个控制标志位。( √)

8 .一片8259A中断控制器最多能接收8个中断源。(√)

9 8086CPU的逻辑段允许段的重叠和交叉。(√)

10 8086CPU的标志寄存器FR是16位的,每一位都有定义。(×)

11 在8086的主存中,一个字节占用一个存储单元,一个字占用两个相邻的单元,字的高8位放

在高地址单元,低8位放在低地址单元。(√)

12 8086CPU的AD0~AD15在执行指令时,先传数据,后传地址。(×)

四、填空题

1 (640)10=( 10 1000 0000 )2=( 280 )16

2 .每片8253包含有

3 个独立的16位计数通道,每个通道具有 6 种工作方式。

3 .取指令时,8086会自动选择CS 值作为段基值,再加上由IP 提供的偏移量形成物理地址。

4 .808 6/8088微处理器被设计为两个独立的功能部件:EU _和BIU _。

5 .TEL 8086的当前CS=2000H,IP=5678H,则将执行20位物理地址25678H 处的程序。

6 .8086存储器组织中,逻辑地址由十六进制4位构成的,物理地址又由十六进制 5 位构成。

7 . 一片8259A可管理_ 8 _级中断,若级联三片从片则可以管理29 级中断。

8、若DS=1200H,则当前数据段的起始地址是12000H ,末地址是21FFFH 。

9.系统中数据传送的控制方式中程序控制的数据传送又分为条件查询和无条件查询。

10.“串行通信”是指数据一位一位依次传送。在串行通信中有两种基本的通信方式:即同步和异步。

11.主机和I/O设备间的数据传送有程控、中断和DMA, IOP 三四种方式,其中DMA 和IOP 传送过程中CPU无需参与,而是由DMAC 和IOP 控制完成。

12 38.8086系统中,要求各个逻辑段必须从节的整数倍边界开始,即段首地址的低4位总是0 。

将段首地址的高16位地址码称作段基址,存放在相应的段寄存器中。

13 .由逻辑地址获得物理地址的计算公式为段基址*16+偏移地址。

14 .80X86系统中,堆栈是遵循后进先出原则。

15.在8086最小模式的典型配置中,需 2 片双向总线收发器8286,因为8286数据线为8位,而8086数据总线为16位。

16.8086/8088系统中I/O端口地址是二进制数16 位的,可寻址64K 个端口。

每个端口中含8 位的数据。

17.8086/8088的I/O指令中若采用直接寻址,要求端口地址必须在0-255 范围之内;若采

用间接寻址,则端口地址在0-65535 范围之内。

18 位二进制补码所能表示的十进制数的范围为+127~-128,前者的补码为(01111111 ),

后者的补码为(10000000 )。

19 已知段基址和偏移地址分别为2015H和0028H,此存储单元的物理地址是(20178H)。

20 若8086的引脚MN/MX接+5V,则当执行OUT指令时,其引脚信号M/IO= 0 , RD= 1 , WR= 0 (填写高、低电平)。

21 8086工作于最小模式下,CPU完成存储器读操作时,信号M/IO= 1 ,RD= 0 ,

WR= 1 和DT/R= 0 。若进行字节操作,单元地址为奇地址,则BHE=

0 ,和A0= 1 。若进行字操作且该字地址为偶地址,则BHE= 0 ,和

A0= 0 。

22 写出一条指令完成下述功能:1) 将AH的最高3位清零,其他位不变:AND AH,1FH ;

2) 将AH的低4位置1,其他位不变:OR AH,0FH ;3) 将AH的最低位取反,其他为不变:XOR AH,01H

23 宏汇编语言程序被汇编时,指令语句产生代码指令,伪指令语句不产生代码指令,宏指令语句可能产生也可能不产生代码指令。

24 调用程序、子程序传送参数的方法通常有堆栈、寄存器和内存空间三种方法。

25 伪指令EQU、DB、DW、MACRO的标号名字域必须有名字或标号的伪指令为EQU,MACRO 。

26 乘法指令MUL的指令格式只有一个源操作数,若源操作数的类型属性为字节,则目的操作数在AX 中,若源操作数的类型属性为字,则目的操作数在DX,AX 中。

27 请给出标志寄存器中标志位OF、IF、SF、ZF、PF、CF的说明: OF溢出、IF中断、SF 符号、ZF零、PF奇偶、CF进位。

28、指令XLAT通常用于查表操作,在使用该指令前,应把表首的偏移首地址送入BX ,待转换的代码在表中的序号送AL 。

29 若要求不产生汇编错误,则字符串'ABC'只能出现在伪指令DB 中。

30 为下述情况各举一例。

⑴寄存器与存储单元内容相加送寄存器ADD AX,[1000H] 。

⑵寄存器互送MOV AX,BX 。

⑶将标志寄存器进栈PUSHF 。

⑷立即数与寄存器内容相加送寄存器ADD AH,01H 。

⑸将48H、5AH存入字节数据区ARRAYB ARRAYB DB 48H,5AH 。

五、简答题

1.在I/O接口电路中,按主机与外设间传送的信息类型,端口可分为哪几类?CPU对这些端口实行读操作还是写操作?

答:I/O端口分为:数据口,状态口,控制口。CPU可对数据口进行读或写操作,对状态口进行读操作、对控制口进行写操作

2.与并行通信相比较,串行通信有什么特点?

(1)串行通信适宜于远程数据传送;

(2)串行通信通常传送速度较慢;

(3)串行通信的费用较低,传输线少,可借用电话网络来实现远程通信.

3.8086/8088CPU响应任何一种中断时,都会自动的将IF 和TF 标志清零,其目的是什么?

答:将IF 标志清零的目的是在本次执行中断服务程序的过程期间,不要再响应其他的可屏蔽中断;将TF 标志清零的目的是不要单步执行中断服务程序。

4.CPU 响应多种中断时,都要自动地保护断点,为什么?

答:“保护断点”是指主程序中当前被中断的指令的下一条指令所存放的存储单元的逻辑地址,(称为断口地址,或断点地址,简称断点)包括段值和段内偏移量两部分(既CS 和IP 中的内容)作为返回地址被自动地压人堆栈中保护起来。这样做的目的是使中断服务程序运行结束时,使程序能返回到主程序的断点处去继续执行。

5 .当某一中断发生时,CPU 如何能找到相应的中断向量?

答:当某一中断发生时,CPU 只有在中断向量表中找准找到相应的中断向量,即相应的中断服务程序的人口地址,才能去执行相应的中断服务程序。若能找准存放该中断向量的4 个存储单元的地址,就意味着找到了该中断向量。若把存放每个中断向量的4 个单元的第一个单元的地址叫做向量地址,由于中断向量是按中断类型码n从0 ~255的顺序存放的,故向量地址与中断类型码有如下关系:向量地址=0000:N×4 。

如:0 号中断的向量地址为0000:0000,表示0 号中断的中断向量存于地址为0000:0000开始的4 个单元中,1 号中断的向量地址为0000:0004H ,表示1 号中断的中断向量存于地址为以0000:0004H 开始的4 个单元之中,等等。因此,任何一个中断的到来,CPU 只要能得到它的中断类型号,就能找到它的中断向量。把它的偏移量传送入IP ,段值送入CS ,即能执行相应的中断服务程序。

6.分别指出下列指令中源操作数的寻址方式:(5分)

A.MOV SI,100 立即寻址

B.MOV CX,DATA[SI]寄存器相对寻址

C.MOV [SI],AX 寄存器寻址

D.ADD AX,[BX][DI]基址加变址寻址

E.POPHF 寄存器寻址

7.什么是中断?什么是中断向量?什么是中断向量表?INT24在中断向量表的什么位置?一个完整的中断过程有哪几个步骤?

答:中断是指CPU在正常运行时,由于内部、外部事件或由程序的预先安排引起的CPU中断正在运行的程序,转而到内部、外部事件预先安排的服务程序(中断子程序)中去执行。

中断向量是中断处理子程序的入口地址,每个中断类型对应一个中断向量。中断向量表是中断类型码和与此类型码相应的中断服务程序之间的一个连接链。每一个中断服务程序入口地址的IP和CS成为一个中断指示字或中断向量。

24*4=96=60H INT24在中断向量表的0000:0060H~0000:0063H处。

一个完整的中断过程包括中断请求、中断排队、中断响应、中断处理和中断返回五个步骤。

8.简述8086CPU由哪些寄存器组成。

答:4个16位的通用寄存器:AX累加器、BX基址寄存器、CX计数器、DX数据寄存器;

4个16位的专用寄存器:SP堆栈指针寄存器、BP 基址指针寄存器、SI源变址寄存器、DI 目的变址寄存器;

一个标志寄存器FR;

4个16位的段地址寄存器:CS代码段寄存器、DS数据段寄存器、SS堆栈段寄存器、ES扩展段寄存器;

一个16位的指令指针寄存器IP

9.简述8086/8088系统中为什么要使用地址锁存器?

答:为获取并保持地址信息,系统中要使用地址锁存器。因为8086/8088系统中低16位地址线与数据线分时复用,高4位地址线与状态线分时复用,在每个总线周期的T1状态期间,CPU通过20位地址线向外发送地址,然后在T2、T3、T4状态时传送数据或状态信息,而在一个完整的总线周期(T1~T4)内,被访问的存储器或I/O端口始终需要完整的地址信息,这就要求在T1状态时地址有效期间由地址锁存器将地址信号锁存并保持,以供被访问的存储器或I/O端口在整个总线周期内使用。

10.已知SDRAM6264的片容量是8K×8位,问它的外部引脚中含多少根地址线和数据线?

答:从该芯片的容量可知,其内部含有8192个(8*1024)存储单元,每个单元能存放一个字节数据,因为13根地址线才能对8192个存储单元寻址(213=8192),所以它有13根地址线,8位数据线。因为在读写每一个存储单元的8位二进制数时需要8位数据线。

六、简单分析、设计题

1、阅读如下程序段,回答提出的问题。

MOV AX,3456

XCHG AX,BX

MOV AX,3456

SUB AX,BX

JE DONE

KK:A DD AX,BX

...

DONE:

该程序段执行完JE DONE语句后,AX= 0 ,ZF= 1 ,IP= DONE 。

2 请在程序段的每一空框内填入一语句(不得修改其它语句),以实现下述功能:将字变量VARM1中的非零数据左移到最高位为“1”止,左移次数存入字节变量V ARB中,左移后的结果存入字变量V ARW中。

MOV BL,0

MOV AX,V ARW1

ADD AX,0

JS DONE

GOON: INC BL

ADD AX,AX

JNS GOON

DONE: MOV V ARW,AX

MOV V ARR,BL

3 为什么说8088CPU为准16为微处理器,而8086CPU为16为微处理器?

答:8088CPU的内部寄存器均为16位,可一次完成16位二进制的算术及逻辑运算,但外部数据总线为8位。而8086则内部寄存器及外部数据总线均为16位,可一次完成16位二进制的算术及逻辑运算。

4 已知,(DS) = 0120H , ( SS ) = 2000H , ( ES) = 0FF2H , ( BX ) = 1000H , ( BP ) = 2000H ,( SI = 3110H , ( SP ) = 1004H ,试写出下面每条指令中存储器操作数的物理地址。

(1)MOV AL,[BX+SI+9000H] DS*16+BX+SI+9000H 1E310H

(2)MOV BX, [BP-18]SS*16+BP-18 21FEEH

(3)ADD SS:[BX+SI-3],ALSS*16+BX+SI-3 2410DH

(4)SUB [SI+BP], CXSS*16+SI+BP 25110H

(5)PUSHFSS*16+SP-2 21002H

堆栈指针寄存器SP的初值位1000H,AX=2000H,BX=3000H,试问:

(1)执行指令PUSH AX 后,SP=0FFEH

(2)再执行指令PUSH BX和POP AX后,SP=0FFEH ,AX=3000H ,BX=3000H 。

5 程序段执行完后,AX,BX,CX,DX寄存器的内容分别是什么?

START: MOV AX, 01H

MOV BX, 02H

MOV CX, 03H

MOV DX,04H

NEXT: INC AX

ADD BX,AX

SHR DX,1

LOOP NEXT

AX= 4 BX= 08H CX= 0 DX= 0 .

6 判断下面8086汇编程序执行结果:

MOV AX,0FFFDH

MOV BX,8000H

ADD AX,BX

HLT

执行结果

AX= 7FF0H BX= 8000H

对应标志位

ZF= 0 SF= 0 OF= 1 CF= 1 PF= 0 AF= 0 7.下面程序段执行完以后,BX的内容是什么?

MOV BX,00FFH

AND BX,0FFFH

OR BX,0F0FH

XOR BX,00FFH

答:BX=0F00H

8 下列程序段完成什么工作?

DAT1 DB 30 DUP(?)

DAT2 DB 10 DUP(?)

MOV CX,10

MOV BX,20

MOV SI,0

MOV DI,0

NEXT:MOV AL,DAT1[BX][SI]

MOV DAT2[DI],AL

INC SI

INC DI

LOOP NEXT

答:把DAT1+20存储单元开始的10个字节搬到DAT2开始的连续10个存储单元中。

9 . 设8086系统中,中断请求信号采用边沿触发方式,单片8259A,中断类型码高5位为01010,中断源接在IR2上,普通全嵌套方式,非自动结束方式,缓冲方式。(设:ICW1口地址为80,ICW2、ICW3、ICW4口地址为81)编写初始化程序。

MOV AL,13H

OUT 80H,AL ICW1

MOV AL,52H

OUT 81H,AL ICW2

MOV AL,09H

OUT 81H,AL ICW4

10 .已知(AX ) = 0120H , ( BX ) = 2000H , ( CX ) = 0FF2H , ( DS ) = 1000H , ( ES ) = 2000H ,存储器中的数据如图所示。请写出下列指令单独执行时,对寄存器和存储器内容将产生什么影响?( 1 ) MOV AX ,[BX] ( 5 ) LDS DI , [l000H]

( 2 ) MOV AX , ES : [BX] ( 6 ) LES SI , [0FFEH]

( 3 ) MOV [BX] ,CX ( 7 ) XCHG AX , BX

( 4 ) LEA CX , [BX] ( 8 ) XLAT

答:该题实际上要求回答8 条指令分别执行时的结果。

( l ) MOV AX , [ BX ]

源操作数的物理地址为:10000H 十2000H = 12000H

执行结果( AX ) = [12000H] =9745H

( 2 ) MOV AX , ES :[BX]

ES : [ BX] 为段超越情况,源操作数物理地址为:20000H +2000H = 22000H

执行结果:( AX ) = [ 22000H ] = 4433H

( 3 ) MOV [BX ] , CX

目的操作数的物理地址为:10000H +2000H = 12000H

故[12001H]=0FH , [12000H] =0F2H

原来的内容不再是97H 及45H 了。

( 4 ) LEA CX , [ BX ]

源操作数的有效地址为BX 故( CX ) = ( BX ) = 2000H

( 5 ) LDS DI , [1000H]

源操作数的物理地址是l0000H + l000H = 11000H ,故

( DS )= [1 l002H]=l000H

( DI)=[11000H]=25l0H

( 6 ) LES SI ,[0FFEH ]

源操作数的物理地址为l0000H + 0FFEH = l0FFEH ,故

( ES )=[11000H]=2510H

( SI )=[l0FFEH]=0F45H

( 7 ) XCHG AX , BX .

执行前(AX ) = 0l20H , ( BX ) = 2000H

执行后(AX ) = 2000H , ( BX ) = 0120H

( 8 ) XLAT ; ( AL ) =「BX + AL 」=[ 2000H + 0020H]

=[2020H ]

有效地址EA=2020H 时,物理地址为12020H ,故执行XLAT 指令后,( AL )=56H 。

11. 写出四条指令,分别能将AX寄存器清零。

答:①MOV AX,0

②AND AX,0

③SUB AX,AX

④XOR AX,AX

12 下列指令是否有错?有则指出错误所在:

(1)MOV DS,117CH 错,立即数不能直接送段寄存器

(2)MOV [BX],[28A0H] 错,双操作数指令的两个操作数不能同时在内存中(3)MOV CS,AX 错,不能用指令直接往CS寄存器中传送数据

(4)MOV DS,ES 错,两个段寄存器之间不能传送数据

(5)MOV AL,DX 错,类型不匹配,寄存器长度不同

(6)MOV AX,1000[BX] 对

(7)MOV BX,[AX] 错,AX寄存器不能用于间接寻址

(8)MOV AL,C8H 错,以字母开头的十六进制数前面要加前导0

(9)MOV AX,00F1 错,十六进制数应加上后缀0

(10)MOV AX,[SI-10] 对

七、综合分析、设计题

1 址为DATAB开始的80个单元中,存放某班80个学生的某课程成绩,要求: 统计>=90分、80~89分、70~79分、60~69分、60分以下的人数,结果存放在BTRX开始的5个单元中求平均成绩,结果存放在LEVEL中。

解:寄存器使用分配:90分以上在DH,80分以上在DL,70分以上在BH,60分以上在BL,60分以下在AH,总分、均分都在[DI]。

DAT SEGMENT

CONT DB 10

DATA DB 30,65,99,80,75, 89,100,45,60,70

BUFFER DB ?,?,?,?,?

LEVEL DB ? ,?

DAT ENDS

XOR AH,AH

XOR DX,DX ;统计结果清零

XOR BX,BX ;统计结果清零

LEA SI,DATA

LEA DI,LEVEL

MOV CL,CONT; 总人数送循环计数器CX

goon: MOV AL,[SI] ;读原始数据

ADC [DI], AL; 累加总分

ADC [DI+1],0 ;计算进位

CMP AL,90

JL PP8 ; 不高于90分者转PP8

INC DH ; 90--100分的人数加一

JMP STOR

PP8: CMP AL,80

JL PP7 ;不高于80分转PP7

INC DL ;80----89分的人数加一

JMP STOR

PP7: CMP AL,70

JL PP6 ;不高于70分者转PP6

INC BH ;70---79分的人数加一

JMP STOR

PP6: CMP AL,60

JL PP5 ;不高于60分者转PP5

INC BL ;60---69分的人数加一

JMP STOR

PP5: INC AH ;低于60分的人数加一

STOR: INC SI ;读下一个分数

LOOP GOON

;CX=CX-1,CX不为零转GOON,继续统计

LEA SI,BUFFER ;回存统计结果

MOV [SI],DH

INC SI

MOV [SI],DL

INC SI

MOV [SI],BH

INC SI

MOV [SI],BL

INC SI

MOV [SI],AH

MOV AX,WORD PTR [DI] ;计算平均成绩

MOV CL,CONT

DIV CL

MOV LEVEL,AL ;回存平均成绩

HLT

2 在BVFF单元中有一个BCD数A,试根据下列关系编写程序,计算结果存在DES中。A<20, Y=A+20;

A<60, Y=A-20;

A>=60, Y=A.

DAT SEGMENT

BVFF DB 8

DES DB ?

DAT ENDS

MOV AL,BVFF

CMP AL,20

JL EX1

CMP AL,60

JL EX2

MOV AL,80

JMP STOP

EX1: MOV BL,3

MUL BL

JMP STOP

EX2: SUB AL,20

STOP: MOV DES, AL

HLT

3 在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。

DAT SEGMENT

BUFFER DB ;自行定义100个数据

KVFF DB ?

DAT ENDS

XOR DL,DL

LEA DI,KVFF;

NEXT0: LEA SI,BUFFER;

MOV CL,99; 比较次数为N-1次

NEXT1: MOV AL,[SI];

INC SI;

CMP DL,AL;

JNC NEXT2;

MOV DL,AL; DL中始终存目前最大值

NEXT2: DEC CL;

JNZ NEXT1;

MOV [DI],DL; 最大值存储

HLT

4 编写10个字(16位二进制数)之和的程序

解:ADD1为被加数,ADD2为加数,SUM为和,CONT为循环次数

LEA SI, ADD1;

LEA DI, ADD2;

LEA BX, SUM;

MOV CL, CONT;

MOV CH,0; 循环初始化

CLC;进位清零

MADD1: M OV AX,[SI];读加数1

ADC AX,[DI]

ADD SI,2;移动源区地址指针

ADD DI,2;移动目的区地址指针

MOV [BX],AX;回存计算结果

ADD BX,2;移动“和”存储区地址指针

LOOP MADD1;循环控制

HLT;暂停

5.在某一系统中,有8 个开关K7~K0,要求不断检测它们的通断状态,并通过发光二极管LED7~LED0 显示出来。开关断开,相应的LED 点亮;开关合上,LED 熄灭。选用8086 CPU , 8255A 和74LS138 译码器等芯片,构成应用电路。如下图所示,8255A 的PA 口作输人口,8个开关K7~K0分别接PA7~PA0。PB口为输出口,PB7~PB0分别连接显示器LED7~LED0。试进行编程设置。

74LS04LED

答:程序段如下:

MOV AL ,90H ;方式选择控制字

OUT 0F3H ,AL ;写人控制字

SET : IN AL , 0F0H ;从PA 口读开关状态

OUT 0F1H, AL ;PB 口控制比LED,指示开关状态

JMP SET ;循环检测

6. (1)某系统中,8253 的端口地址为0B4H~0B7H ,令计数器通道1 工作在方式0,仅用8 位二进制数计数,计数初值为100 ,试进行初始化编程。

答:初始化程序段如下:

MOV AL , 50H

OUT 0B7H , AL ;置控制字

MOV AL ,64H

OUT 0B5H ,AL ;置计数初值。

(2)某片8253 的计数器通道2 工作在方式1 ,按BCD 码计数,计数值为5000,该端口地址为0B4H~0B7H,请初始化编程。

答:初始化程序段如下:

MOV AL , 0B3H

OUT OB7H , AL ;置控制字

MOV AL , 00H

OUT OB6H , AL ;置计数初值低8位。

MOV AL , 50H

OUT OB6H , AL ;置计数初值高8位。

7 .对8255A进行初始化,要求A口为输出工作方式0;B口输入工作方式1;C口高四位输入,低四位输出。(地址04A0H~0A406H)

MOV AL,8EH ;工作方式控制字

OUT 04 A3 H,AL ;控制字送控制口

8 .求两个多字节数之和。这两个数在21000H地址开始的内存单元中,连续存放,低位在小地址一端,结果放在这两个数之后。设这两个多字节数均为八个字节长。试画出程序流程图并编写相应程序。

NAME DZJ-JAFA

DA TA SEGMENT

D1 DB 16 DUP (?)

S1 DB 8DUP(?)

DA TA ENDS

STAC SEGMENT

STA DB 50 DUP(?)

STAC ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATE,STAC:STA

ORG 1000H

START:MOV AX,2000H

MOV DS,AX ;数据段段基地址送DS

MOV SI,1000H ;第一个数指针送SI

MOV DI,1008H ;第二个数指针送DI

MOV BX,1010H ;结果指针送BX

MOV CX,4 ;循环次数送CX

CLC ;CF=0 清零

AA:MOV AX,[SI] ;取一个字到AX

ADC AX,[DI] ;AX+[DI] 送AX

MOV [BX],AX ;结果存入[BX]

PUSHF ;保护进位位

ADD SI,2

ADD DI,2

ADD BX,2

POPF

LOOP AA

CODE ENDS

END START

9 .用可编程并行接口芯片8255A作为打印机接口。其中端口A工作于方式一,用于向打印机输出打印数据,端口C用作状态口和控制口。

编写程序,打印存储区为1200H~1400H内所有字符的程序。设8255A的口地址分别为端口A:0FFF0H,端口B:0FFFlH 端口C:OFFF2H,控制口:0FFF3H。

ORG 5000H ;把程序定位在5000H

MOV DX,OFFF3H ;8255A控制端口地址

MOV AL,0A8H ;端口A方式1,输出,PC4输入

OUT DX,AL ;控制字送控制端口

MOV CX,200H ;要打印字符的个数

MOV DI,1200H ;存储区起始地址

CC:MOV AL,[DI] ;数据段偏移地址送AL

MOV DX,0FFF0H

OUT DX,AL ;字符输出

MOV DX,0FFF2H ;读打印机当前状态

AA:IN AL,DX ;读打印机状态

AND AL,10H ;测试BUSY信号(PC4)

JNZ AA ;忙等待

INC DI ;指向下一个字符

LOOP CC

HLT

10 .某8086系统中使用8237A完成从存储器到存储器的数据传送,已知源数据块首地址的偏移地址值为1000H,目标数据块首地址的偏移地址为1050H,数据块长度为100字节,请编写初始化程序。

可分为5步来作:

a)写工作方式控制字

MOV DX,工作方式寄存器端口

MOV AL,41H ;工作方式控制字

OUT DX,AL

b)写操作方式控制字

MOV DX,命令寄存器端口

MOV AL,01H ;操作方式控制字

OUT DX,AL

c)源数据块首地址送通道0地址寄存器

MOV DX,通道0地址寄存器端口

MOV AX,1000H

OUT DX,AL

MOV AL,AH

OUT DX,AL

d)目的数据块首地址送通道1地址寄存器

MOV DX,通道1地址寄存器端口

MOV AX,1050H

OUT DX,AL

MOV AL,AH

OUT DX,AL

e)数据块长度送通道1基字节数寄存器

MOV DX,通道1基字节数寄存器端口

MOV AX,64H

OUT DX,AL

11、编写8251异步模式下的接收和发送程序,完成256个字符的发送和接收,设端口地址:208H (数据端口),209H(控制端口),波特率因子16,1起始位,1停止位,无奇偶校验,每字符8位。

(1)发送程序:

MOV DX,209H

MOV AL,40H ;复位命令。

OUT DX,AL

MOV AL,01001110B ;模式字

OUT DX,AL

MOV AL,00110111B ;控制字

OUT DX,AL

MOV CX,256 ;发送256字节

MOV DI,0

NEXT:MOV DX ,209H

IN AL,DX ;状态字

AND AL,01H ;TXRDY?

JZ NEXT

MOV AL,[DI]

MOV DX,208H

OUT DX,AL ;发送

INC DI

LOOP NEXT

(2)接收程序:

MOV DX,209H

MOV AL,40H ;复位

OUT DX,AL

MOV AL,01001110B ;模式字

OUT DX,AL

MOV AL,0011,0111B ;控制字

OUT DX,AL

MOV CX,256 ;接收256字节

MOV SI,0

NEXT: MOV DX,209H

IN AL,DX ;状态字

AND AL,02H;RXRDY?

JZ NEXT

MOV DX,208H

IN AL,DX;接收1字符

MOV buf[SI],AL

INC SI

LOOP NEXT

12、已知4500H开始的单元中放有100个单字节带符号数:

(1)若从头至尾每10个数一组,试编写一程序求每一组的和并依次放于6500H开始的单元中;

(2)编程统计100个数据中负数的个数和正数的个数分别存放于DX和BX中。

答:(1)LEA BX,[6500H] (2) LEA SI,[4500H]

LEA SI,[4500H] MOV BX,0

MOV CH,10

L1: MOV CL,10 MOV DX,0

MOV AL,0 MOV CX,100

L2: ADD AL,[SI] L1: TEST [SI],80H 是负数吗?

INC SI JZ ,L0

DEC CX INC DX 统计负数

JNZ L2 JMP L2

MOV [BX],AL L0: INC BX 统计正数

INC BX L2: INC SI

DEC CH DEC CX

JNZ L1 JNZ L1

HLT HLT

13. 某片8255A 的端口地址为00E0~00E3H,设端口A 、B 都工作在方式0 下,A端口输出,, B 口输人,C 口的高4 位输出,C 口的低4 位输人。请对它进行初始化编程。

方式选择控制字为:83H

初始化程序如下:

MOV AL,83H

OUT 0E3H,AL

14.设在一个系统中,8255A 的端口地址为184H~187H , A 口工作于方式1输出,允许中断,B 口工作于方式1 输入,禁止中断,C口剩余的两根线PC5、PC4位输人,如图9-14 所示,试编写初始化程序。

答:方式选择控制字为:0AEH

初始化程序为:

MOV AL,0AEH ;方式1,A口输出,B口输人

MOV DX,187H ;控制口地址

OUT DX,AL

MOV AL,0DH

OUT DX,AL ;A口允许中断

MOV AL,04H

OUT DX,AL ;B口禁止中断

相关文档