2022《计算机原理及应用》期末自测题_第1页
2022《计算机原理及应用》期末自测题_第2页
2022《计算机原理及应用》期末自测题_第3页
2022《计算机原理及应用》期末自测题_第4页
2022《计算机原理及应用》期末自测题_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

2022《计算机原理及应用》期末自测题

一、基本概念与术语

1、现代计算机中表达信息采用二进制数进行编码,8086是一16一位计算机。

2、8086CPU地址线有20条,可直接寻址的空间最大为1M080486CPU的地址线有

(32),可直接寻址的空间最大为支持虚拟存储管理技术,虚拟存储空间为(MJB)o

3、8086CPU总线周期是指CPU从存储器或I/O端口读写一个字节的时间;基本总线周期

有4T状态:Tw状态是指等待周期。

4、8086CPU允许的I/O地址线最多可达一。条,最大寻址I/O空间为64KB(2的16次

方)。

5、8086CPU由总线接口单位(BIU)和执行单元(EU)两部分组成,其功能为_____总

线接口单元:负责控制储存器与I/O的读写;执行单元:从指令队列中取出指令并执行。

其中8086CPU中标志寄存器的作用是一存放6位状态标志位和3位控制标志位,指令队列的作用是

BIU预取指令放在指令队列,由EU从其取出指令,20位地址加法器的作用是一将16位的

分段地址转换为20位物理地址。8086CPU代码段物理地址由CPU的CS、IP两个

寄存器确定。堆栈段物理地址由CPU的SS、SP两个寄存器确定。8086CPU预取指令存

放J指令队列;段寄存器CS和IP的内容始终指向顺序存储的丁一字节指令。

IP(instructionpointer):指令指针寄存器,存储代码段内的偏移,与CS一起构成取指

所需的程序计数器。程序计数器有BIU自动改变,始终指向下一个字节指令。

SP(stackpointer):堆栈指针寄存器,存储栈顶的偏移。

6、80486CPU由总线接口部件、指令预取部件、指令译码部件、指令执行部件、浮点运算部件、(公

段部件和分页部件)和(高速缓冲存储器);总线接口部件主要用于管理访问外部存储器和I/O端

口的地址、数据和控制总线,完成(指令预取、读写数据等总线操作);指令译码部件从指令预取

队列中读取指令并译码,将其(转换成相应控制信号)。在80486CPU实地址工作模式下,物理地

址的形成机制(与8086是相同的)。

7、80486微处理器的工作模式包括(实地址模式)、(保护模式)和(虚拟8086模式)。实地址

模式是80X86CPU的基本工作模式,80486在(上电及复位后)就进入实地址工作模式。保护模式下

CPU可访问的线性地址空间可达(4GB),并允许运行几乎不受存储空间限制的(虚拟存储器)程

序,同时增加了支持(多任务操作系统)的优化指令。

8、8086/80486中断源有256个。中断向量是(中断服务程序入口地址);8086中断服务程

序入口地址由CS、IP)组成。中断类型号为20H,其中断向量地址为80H°

9、8086/80486CPU中断源包含硬件中断和软件中断,INT21属于(软件中断)。

10>I/O指令IN/0UT,传送数据的寄存器为AL/AX,寄存器寻址时使用寄存器DX,

其中INAL.DX的含义是一从DX所指端”读取•个字节到AL°OUT60H,AL的含义是

AL的一个字节输出到60H端口,指令INAL,DX语法是(正确,错误),OUT333H,AL((正

确,错误)。

11、硬件中断是(外部引发,随机的,执行总线周期,中断类型码由中断控制器提供),软件中断

是(内部引发,确定的,不执行总线周期,中断类型确定)软件中断优先级与硬件中断优先级相比,

(软件中断优先级)的级别高。

中断优先级:

软件中断〉非屏蔽中断〉可屏蔽中断,单步中断(属于软件中断INT1)

12、在中断服务程序结束前,为正确返|可,必须设置一条指令火束.。在子程中调用专程前,为

3*6-2

正确返回,必须设置一条指令RET.

13、一片8259A可以管理8级中断:3片8259A可以管理理级中断.若中断控

制器8259的中断请求寄存器IRR状态为10100000B,说明IR9和IR5有求寄请求。ISR

状态为10I00000B说明IR7和IR5中断请求正在服务。

15、定时器8253的门控信号GATE作用是门控输入端,用来控制计数器的启动或停止计数的

操作,CLK端的作用是一时钟脉冲的输入端,用来输入定时脉冲或计数脉冲,

OUT端作用是一输出相应的波形初:化定时器8253需要先写控制字,后写

计数初值AO、A1

16、可编程定时器8253的地址有4个。共有3独立定时通道。工作方式有6个。

假设8253的端口地址为340H~343H,那么控制端口地址为343H,通道0、1、2的端口地址

为340H、341H、342H。

17、并行接口8255有3个数据端口,有3种工作方式。在8255三种工作方式中,方式

I和方式2需要提供“握手”信号,该信号由PC端口提供。假设8255的端口地址为

330H〜333H,控制端口地址为333H,端口A、B、C的地址为330H、331H、332H。

18、以下关于可编程计数/定时器8253说法错误的是()。

A).有3个独立的16位计数/定时器

B).每个计数/定时器都有6中工作方式

C).每个定时/计数器都有时钟输入CLK、定时输出OUT和门控信号GATA

D).每个定时/计数器都用二进制计数,不能用BCD码计数

19、指令性语句(由CPU执行),(有对应的)机器码,汇编时(旌)机器代码;伪指令的作

用是(说明性语句),汇编时(不产生)机器代码。

20、典型的微机结构中,包含CPU、存储器、I/O接口等主要部件组成,各个部件通过(总线)连接在

一起。

21、汇编语言程序中用于指定段和段寄存器之间关系的伪指令是()。

A)ASSUMEB)EQUC)SEGMENTD)ORG

22、(A)和指令指针寄存器IP的内容始终指向下一字节指令的存储地址。

A)CSB)DSC)SSD)ES

二、简单应用与简答题

■|P13

答:微型计算机是由微处理器、存储器、输入/输出接口电路和系统总线构成的裸机系统。

微处理器:进行算术和逻辑运算,完成内部运算与外部控制功能;存储器:存储代码与数据信息;

输入/输出接口电路:实现外设与CPU信息交换。总线将各个部件互联。

2、分为哪几种类型?微型计算机采用总线结构有什么优点WP14

答:总线按功能分类:地址总线、数据总线与控制总线。

优点:全部面向总线,负荷总线标准的部件都可以通过单一总线而融入微机系统中,不再互相连

接,有利于各部件独立发展,使得微机具有很高的扩展性和兼容性。

3、8086CPU在勾上由哪几部分蛆成?其功:什么?

答:CPU由总线接口单元BIU和执行单元EU组成。BIU完成物理地址的形成、预取指令获取和排

队、堡作数存取以及基本总线控制功能;EU:从指令队列中取指令并执行。

4、8086的总线接口部件由那几部分组成?其作用是什么?

答:总线接口部件组成:

段寄存器:为分段寻址定位段的位置;地址加法器:将16位段地址转换为20位物理地址;(指

令指针寄存器)IP:存储代码段内的偏移地址;指令队列:由BIU存放预取指令,由EU取出指令;

存储器接口:取值和存取操作数。

5、8086的执行单元(部件)由哪几部分组成?有什么功能,

答:执行单元组成:

标志寄存器:存放运算结果特征;算术运算单元(ALU):进行算术和逻辑运算,完成对数据的处

理:通用寄存器组:暂存数据和指针;控制器:读取指令。

6、8086内部有,哪几个通用寄存器?8086内部有哪几个段寄存器?

答:AX(累加),BX(基),CX(计数),DX(数据),SP(堆栈指针),BP(基指针),SI(源索引

Index),DI(目的索弓目;DS,CS,SS,ES(扩展段)

7、说明8086指令系统的寻址方式,并说明哪些寻址方式对应的操作数在指令中?哪些停址方式对

应的操作数在CPU内部的寄存器中?那几种寻址方式疝应的操作数在存储器中?

答:立即数寻址:操作数由指令直接提供;

不需要使用总线周期,执行速度快

寄存器寻址:操作数在CPU内部的寄存器中,指令给出寄存器名;

存储器寻址:操作数在存储器中,其地址或地址的计算方法由指令提供;包括直接寻址、寄存器

间接寻址、基址寻址、变址寻址、基址加变址寻址。

需要执行总线周期,执行速度慢

I/O端口寻址:专用10指令;直接寻址(<255)、用DX寄存器寻址

8、届*:通:5通UI*

答:(1)传统的计算机一般按照取指令、指令译码/执行指令的步骤工作。

(2)在8086/8088中,指令的提取与执行分别由总线接口部件BIU与执行部件EU完成,两个单

元交叠并行工作,这种机制称为并行流水线,这种并行工作方式有力的提高了CPU的工作效率。

9、8086和8088是怎样解决地址线和数据线的复用问题的?ALE信号何时处于有效电平?

10、CPU和输入/输蚀设备之间传送的信息有哪几类?

答:数据信息:I/O设备的数据:状态信息:I/O设备的状态:控制信息:CPU的控制信息。

II、8086工作在最小模式和最大模式的区别及主要特点是什么?

答:最小工作模式:MN/而接+5V;只有8086一个微处理器,所有的总线控制信号均为8086产生,

系统中的总线控制逻辑电路,减少到最少。

最大工作模式:MN/雨接地;系统含有两个或多个微处理器,其中一个主处理器就是8086或者

8088,其它处理器协助主处理器工作,需要总线控制器来变换和组合控制信号。

12、此由哪两部分组成?物理地址是如何形成的?8086的地址线有多少条?最大物

>?

答:逻辑地址:16位段首地址和16位偏移地址

物理地址:20位实际地址为物理地址。段基址乘4加上偏移量

20条,1M

14、说明指令性语句与指示性语句的作用与区别。

15、旺么是端口?通常有哪几种端口?它们的作用是什么?

答:端口:是接口电路中CPU能访问的寄存器;

类型:

数据端口:存放CPU与外设之间传送的数据信息;

状态端口:反映当前外设状态所处的工作状态;

控制端口:CPU通过接口向外设传送控制信息。______________________________________________

16、计算机对I/O端II编址时通常采用哪两种方法?相8()86系统中,用哪种方法对I/O端口进行编

址?

答:两种编址方式:一是将存储器与外设端口统一编址;二是外设端口单独编址。

在0806系统中,将端口地址与存储器地址分开编址0________________

17、1般的10接口电路安排有哪三类寄存器?它们各自的作用是什么?

答:数据寄存器:存放CPU与外设之间传送的数据信息;

状态寄存器:存放反映当前外设状态所处的工作状态的信息;

控制寄存器:存放CPU通过接口向外设传送控制信息。_____________

18、简述CPU、内存和I/O接口之间的几种常用数据交换方式与特点工

答:常用三种数据交换方式:程序传送方式;中断传送方式;DMA方式

程序传送方式:由程序(IN/0UT指令)控制CPU与外设之间进行数据交换,无条件传送方式和查

询传送方式两种方式,用于简单外设;其中查询传送简单实用,效率低,硬件开销小

中断传送方式:外设主动,可与CPU并行工作,但需要专门的中断控制电路。CPU利用率,高速

度快,用于外设较多的实时系统。

DMA(DirectmemoryAccess):外设直接与存储器进行数据传送,效率高,适合大量、快速的数

据传送,需要硬生开销。

19、简述条件传送方式的工作过程.

答:包括三个环节:查询状态;检测是否“就绪”;数据传送

查询状态:CPU寻址状态口,读取状态字;

检测是否“就绪”:如果不满足条件,则回到第一步读取状态字。

数据传送:确认就绪状态后,开始数据传输。________________

2()、什么是中断优先权?什么是中断嵌套?什么是可屏蔽中断?

答:

市断优先权:为使系统能够及时响应并处理发生的所有的中断,系统根据引起中断事件的重要性

和紧迫程度,将中断分为若干级别,该权重就是中断优先权;

中断嵌套:CPU正在进行某一级别中断源的中断处理时,若有更直级别的新中断发出中断请求,

且新中断源满足响应条件,则CPU应终止当前的中断服务程序,并保护此程序的断点和现场,转而

响应高级中断,这种多级中断的处理方式称为嵌套。

可屏蔽中断:有外设发起的中断请求,高电平,由CPU的INTR引脚输入,收中断标志位IF的控

制,IF=1时,CPU将响应请求,为0,则屏蔽请求。

21、软件中断有哪些特点?硬件中断有那些特点?

答:软件中断:由CPU内部事件引起的,是确定的,中断类型码自动生成;与硬件无关,不需要

执行总线周期;除单步中断外,软件中断不可屏蔽,优先级高于硬件中断;

硬件中断:由外部硬件引起的,是随机的;需要执行总线周期;中断类型码由中断控制器提供。

22、检中断处理子程序和主程序的关系上,软件中断和硬件中断有什么不同之处?

答:软件中断:CPU自动形成中断类型码,然后进入中断处理子程序;

硬件中断:CPU通过总线从中蝉制器变取中啰类型码,然后进入中断处理子程序。

23、8086CPU响应中断的流程包含哪四个阶段?

答:响应中断的四个阶段:中断请求信号检测;中断响应;中断服务;中断返回。

24、8259A中IRR、IMR和ISR三个寄存器的作用是什么?

答:IRR:存放中断源发送的中断请求;

ISR:保存对应位当前正在服务的中断申请;

IMR:屏蔽对应位的中断请求。____________________________________________

25、8086CPU响应中断的条件?8086CPU响应中断后自动完成的任务是什么?

答:响应中断的条件:(1)有中断源发起中断请求;(2)开放总中断:IF=1;(3)在现行指令

结束后再响应中断。

响应中断后自动完成的任务:(1)关中断;(2)断点保护(IP,CS,FLAG入栈);(3)给中

断程序入口地址~

26、中断向量表的功能是什么?若中断向量号为15H,则它的中断向量在中断向量表的什么位置?

答:中断向量表:将所有中断向量集中放在一起,放在内存地址0单元开始的单元,方便中断向

量查询。

若中断向量号为15H,则中断向量指针:15H*4=54H,其中断向量在中断向量表的位置为0000:0054H。

27、简述虚拟存储技术的概念及基本原理

答:虚拟存储:在物理上就是由内存与外存结合提供,最大为64TB的逻辑空间。

基本原理:与实方式相同的形式使用段寄存器,已形成线性基地址。通过分页功能,可把虚拟86

下的1MB地址空间映像到486微处理器的4GB的物理空间任意位置。

三、编程应用题

I、将BUFI开始的100字节传送到BUF2开始的单元,然后从中检索字符“#",并将此单元换成空格字

符。P7KP73

方法一:用LOOR

DATASEGMENT

BUF1DB1,2,3,45,5,6

N1=$-BUF1//N1为BUFI的长度

BUF2DB

DATAENDS〃定义数据段

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAVr)ATA

MOVDS.AXK数据段指向DS

LEASI,BUFI//SI指向源串操作地址

MOVDI,OFFSETBUF2//DI指向目的串操作地址等价于LEADI,BUF2

MOVCX,N1〃将长度送到计数器CX

LP1:MOVAL.[SI]

MOVfDI],AL/;MOV无法'实现内存到内存,故喈寄存器AL

INCSI_______________________________

INCDI//SLDI自加,扫描源串与目的串

LOOPLP1

LEASI,BUF2

MOVAL,'#':检索#

MOVCX,N1

LP2:CMPAL,[SI]

JNZNOFOUND

MOVBYTEPTR[SI]:,;替换空格

NOFOUND:INCSI

LOOPLP2

CODEENDS

ENDSTART

方法二:用MOVSB

DATASEGMENT

BUF2DB100E)UP(?)

DATAENDS〃定义数据段

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAX,DATA

MOVDS,AX〃数据段指向DS

MOVES,AX

LEASI,BUF1//SI指向源串操作地址

LEADI,BUF2/;DI指向目的串操作地址

MOVCX.100〃将长度送到计数器CX

CLD〃请方向标志(DF=0),SLDI自力口1

REPMOVSB〃重复传送100个字节

MOVCX,100〃执行上面语句后CX=0,需要:重新赋值

LEADI,BUF21DI重新指向目的串操作地W

S:MOVAL,'#':检索#

CMPAL,[DI1

JNZCOUN

MOVAL,"

MOVfDILAL;替换空格

COUN:INCDI

LOOPS〃如果没有找到就DI指向下一个内存单兀

CODEENDS

ENDSTART

2、编写一段程序,比较两个5字节的字符串OLDS和NEWS,若相同,在RESULT置0,否则置

OFFHoP72

CMPJZ/JNZ

表中数v=8位,DB类型;冒泡排序;将第二大数放入RES单

DATASEGMENT

OLDSDB1,2,345

NEWSDB1,2,3,4,'A'

N=$-NEWS

RESULTDB0

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX;初始化

MOVSI,OFFSETOLDS

MOVDLOFFSETNEWS

MOVCX,NCLD______

DON:MOVAL,[SI]

CMPAL,[DI]REPZCMPSB:串不相

JNZNOEQU:串不相等转V>等则退出比较

INCSIJNZNOEQU

INCDIMOVAL,0

LOOPDONJMPOUTPUT

MOVAL.O

JMPOUTPUT

NOEQU:MOVAL,0FFH

OUTPUT:MOVRESULTAL

CODEENDS

ENDSTART

3、从内存单元BUF开始的缓冲区有7个8位无符号数,且这7个数中没有任何两个数是相同的,

例如:13H,0D8H,92H,2AH,66H,0E0H,3FH。编写一个完整的汇编语言程序找出它们中间第二大

的数并放入RES单元。P106

(结束])

DATASEGMENT

BUFDB13HOD8H,92H.2AH.66H,0E0H,3FH

N=$-BUF

RESDB0

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATA

MOVDS,AX;初始化

MOVDX,N-1卜设置外循环比较次数

SORT1:MOVBL,0设置内循环比较标志

MOVCX,DX晨设置内循环比较次数

MOVSI,OFFSETBUF

SORT2:MOVALJSI]

CMPAL,[SI+1]

JANOXCHG;W>B转,即SDSI+1跳转

XCHG[SI+1],AL;___________________________________________

XCHG[SI],AL;SI>SI+1交换数值,即经过AL寄存器发生交换

MOVBLQFFH更新交换标志位,本次循环内发生了交换

NOXCHG:INCSI______________________________________________________

LOOPSORT2更新SI,继续执行内循环,CX-L直到第一次遍历结束CX=0

DECDX更新外循环次数

CMPBL,0确认内循环中是否发生了交换

JNESORT1内循环中发生了交换,BL重新清零,CX重新赋值

JMPOUTPUT

MOVAH,4CH

INT21H

//执行上面操作后,数值已经从大到小排序完成

OUTPUT:MOVSI,OFFSETBUF-SI重新指向BUF首地址

MOVAL,[SI+1]将第二大值取出

MOVRES,AL存入RES内

CODEENDS

ENDSTART

4、累加数组中的元素,将和存于SUM开始单元,再求平均谊,平均值存于AVR单元。数据段定义

如下P104

DATASEGMENT

ARRAYDW10,10,12,4,5,6,7,8,9,10

COUNTDW($-ARRAY)/2

SUMDW0,0

AVRDW0;全部为字类型,全程序应用字操作

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX.DATA

MOVDS,AX

MOVCX,COUNT

MOVDX,0;清零进位

XORAX,AX|;清零AX

MOVAX,SUM

MOVSLOFFSETARRAY

DO:ADDAX,[SI]

ADCDX,0;考虑溢出

INCSI

INCSI;两个INC,是因为字操作,SI+2

LOOPDO表示字节操作,访问单元为

MOVSUM,AXBL

MOVSUM+2,DX____*****

MOVRI.RVTFPTRCOUNT

DIVBL

MOVBYTEPTRAVR,AL

CODEENDS

ENDSTART

5、令SUM=£式.〔2八;1〕,编写汇编语言程序求解满足SUM,£100C的最小CN值。求出的最小

CN值送内存中CN单元,累加和送内存中SUM单元

65535>1000>255,用字类型,SUM

DATASEGMENT不超过一个字长度,所以可以不

SUMDW0考虑溢出

czn\vn

DATAENDS

CODESEGMENT

ASSUMEDS:I)ATA,CS:CODE

START:

MOVAX.DATA

MOVDS,AX

MOVCX,50G

MOVAX,0;加数和放在AX,AX清晶

MOVBXJ;加数放在BX,BX既是加数也是计数,置一

AD:ADDBX,BX+1;2BX+1

ADDAX,BX;2BX+1力口数和放在AX中

CMPAX,100(

JABIG

INCBX

LOOPAD

BIG:MOVSUM,AXr

MOVCN,BX

CODEENDS

6、统计数组中大于100的数据的数量,存于N1单元,数据段定义如下

TABIDB100,20(),12,40,50,60,70,80,90,105

NEQU$-TAB

N1DB0

DATASEGMENT

TABIDB1(M),2(X),12,40,50,60,70,80,90,105

NEQU$-TABl

N1DB0

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:MOVAX,DATA

MOVDS,AX

MOVCX.N

MOVBX.OFFSETTAB1;BX指向TABI首地址

MOVAL.100____________________________

MOVAH.O;AH用来计大于100数的数量

DO:CMP[BX],AL;比较数值

JNASMALL;BXv=AL时跳转

INCAH;BX>AL时计数

SMALL:INCBX;BX指向下一位数

LOOPDO;循环比较,直到cx=o,退出循环

MOVN1,AH;将AH的计数放入N1单元

CODEENDS

ENDSTART

7、编写程序完成求1+2+3+……N的累加和,直到累加和超过10(H)为止。统计被累加的自然数

的个数送CN单兀,累加和送SUM。

65535>1000>255,用字------------

DATASEGMENT

SUMDW0

CNDW0

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:

MOVAX,DATA

MOVDS,AX

MOVCX,500

MOVAX,0,加数和放在AX,AX清零

MOVBXJ"口数放在BX,BX既是加数也是计数,置|

AD:ADDAX,BX

CMPAX,1000

JABIG

INCBX

LOOPAD

BIG:MOVSUM,AX

MOVCN,BX

CODEENDS

ENDSTART

8、设有两个长度为8个字节的无符号数分别存放在以NUM1、NUM2为首地址的连续的内存单元中,

将两个数相加,结果存入SUM内存单元中

8个字节二64bit,相当于4字数据串

DATASEGMENT

NUM1DQ062389AB78E390AFH;定义8字节力口数I

NUM2DQ56782634F0ABDC89H;定义8字节力口数2

SUMDB9DUP(?);定义9字节加数和,考虑进位

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

START:MOVAX,DATADB(definebyte):8bit一个字节

MOVDS,AX__________________________DW(defineword):16bit一个字

LEASI,NUM1;SI指向NUM1的最低单元DD(dcfincdoubleword):32bit两个

LEADLNUM2;DI指向NUM2的最低单元子

LEABX,SUM:BX指向SUM的最低单元DQ(defincQuadraword):64bit四

MOVCX,4;根据数据字长度,设置循环次数个字

CLC;进位标志清零DT(defineTenbyte):128bit

MOVDX,0:保存产生的溢出

NEXT:MOVAX,WORDPTR[SI];将SI的低两位字节传给AX

ADDAX,DX;史理溢Hl

MOVDX,0;溢出重新置零

ADDAX.WORDPTR[DI];将DI的低两位字节传给AX

ADCDX,0;此时AX=SI+DI

MOVWORDPTR|BX],AX;将AX放入SUM指针BX中

ADDSI.2

ADDDI,2_______________________

ADDBX,2:移动SI、DI、BX指针

LOOPNEXT;直到CX=0,四个字相加完成,结束循环

CODEENDSENDSTART

9、从给定串中寻找最大值与最小值,并放到MAX与MIN单元,元素放在BUFFER开始的字节单

元中。

方法・:遍历••次我・次最值:利用跳转和循环LOOP

方法二:冒泡排序:排序后直接提取最大和最小值

DATASEGMENT

BUFFERDB1,2,3,4,5,6,7,8,9,10:定义以BUFFER开始的字节单元

COUNTEQU$-BUF

MAXDB0

MINDB0

DATAENDS

CODESEGMENT

ASSUMEDS:DATA,CS:CODE

START:

MOVAX,DATA

MOVDS,AX

MOVCX,COUNT

MOVBX,OFFSETBUF

MOVAX,00FFH;AH=O以基准,用来找最大值;AL=FF为基准,用来找最小值

COMMIN:CMP[BX],AL

JABIG;BX>AL挑转

MOVAL,[BX];BX〈AL,将小值放入AL中,与下一位比较

BIG:INCBX;指向卜.一位,继续参与比较

LOOPCOMMIN;直到cx=o,遍历结束

*

MOVMIN,AL»将最小值存入MIN单元中

MOVCX,COUNT;重新置ex

MOVBX,OFFSETBUF;BX重新指向首地址,参与最大值的,找

COMMAX:CMP[BX],AH

JBSMALL;BX〈AH跳转

MOVAHJBXJ

SMALL:INCBX;最大值寻找和最小值寻找逻辑相同

LOOPCOMMAX

MOVMAX,AH

CODEENDS

ENDSTART

10、类型号为20H的中断服务程序入口符号地址为INT-5,试写出中断向量的装入程序片断。P143

中断向量的装入

CL1;关闭断点

PUSHDS;DS入栈,断点保护

XORAX,AX

MOVDS,AX;DS设置为0,进行初始化

MOVBX,20H*4;中断向量存入BX寄存器中(BX指向中断向量的位置)

MOVAX,OFFSETINT-5;取中断服务程序的偏移地址

MOV[BX],AX;将中断服务程序的IP放入中断向量

MOVAX,SEGINT-5;取中断服务程序的段地址

MOV[BX+2],AX;将中断服务程序的CS放入中断向量

POPDS;DS出栈,断点保护

STI;打开断点

方法二:

CLI;关闭断点

PUSHDS;DS入栈,断点保护

XORAX,AX

MOVDS,AX;DS设置为0,进行初始化

MOVBX,20H*4;中断向量存入BX寄存器中(BX指向中断向量的位置)

MOVWORDPTR(BX],OFFSETINT-5:取中断服务程序的偏移地址

MOVWORDPTR[BX+2],SEGINT-5;取中断服务程序的段地址

POPDS;DS出栈,断点保护

STI;打开断点

12、8255连接一组开关与一组LED显示器,如图1所示。开关状态控制LED显示,若断开,则全

部熄灭。8255端口地址为31OH~313H,8255工作于方式0。要求:

(1)若K0闭合,发光二极管全部亮;

(2)开关K1闭合,全部发光二极管同时闪烁(延时2秒);

(3)开关K2闭合,发光二极管依次循环点亮(依次延时1秒);

假设己有延时1s的子程序DELAY,编写完整8255初始化程序与控制程序。PC7-PC4

8255A

74LSCM

图I8255应用

以下是部分功能的程序片段提示:

COTREQU3I3H;8255A控制口地址

PORT_AEQU310H;8255A的A口地址

PORT_CEQU312H

;------------8255初始化---------

Wait:MOVDX,COTR

MOVAL.10010000B;8255方式0.PA口输入,PC口输出

OUTDX,AL

:..................LED依次点亮...........

ONEIightONEPROC;依次点亮

MOVDX,PORT_C;端口C地址

MOVAL,OOOOODOIB;PC0输出高电平

OUTDX,AL;L0发光

CALLDELAY;延时

……;点亮LI发光,延时

……;点亮L2发光,延时

......;点亮L3发光,延时

RET

ONEIightONEENDP

DATASEGMENT

COTREQU313H;8255A控制口地址

PORT_AEQU310H;8255A的A口地址

PORT_CEQU312H

DATAENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA

;----------------8255工作方式设定——

START:

MOVAX.DATA

MOVDS,AX

MOVDX,COTR

MOVALJ00I0000B;8255万式SPA口输入,PC口输出

OUTDX,AL

按键扫描・

Wait:

MOVDX,PORT_A

INAL,DX

TESTAU00000001B

JZKO

TESTALQOOOOOIOB

JZKI

TESTAL,OOO(X)1OOB

JZK2

CALLDARK

JMPWait

KO:CALLALLlight

JMPWait

KI:CALLALLblink

JMPWait

K2:CALLONElightONE

JMPWait

;--------LED全部熄火-----------

DARKPROCs全14熄灭

MOVDX,PORT_C;端口C地址

MOVAL,OOOOOOOOB•PC0〜3输出低电平

OUTDX,AL■L0〜3熄灭

RET

DARKENDP

•......................LIpInS仝"图川<占高TL...........

ALLlightPROC;全部点亮

MOVDX,PORT_C;端口c地址

MOVAL,0000111IB;PCO〜3输出高电平

OUTDX,AL;L0~3发光

RET

ALLlightENDP

.________ipn仝制仇伙乐__________

ALLblinkPROC

MOVDX,PORT_C

MOVAL,0000111IB

OUTDX,AL

CALLDELAY

CALLDELAY

MOVAL.00000000B

OUTDX,AL

CALLDELAY

CALLDELAY

RET

ALLblinkENDP

;---------LED依次点亮-----------

ONElightONEPROC;依次点亮

MOVDX,PORT_C;端口C地址

MOVAL,()00000()IB;PCO输出高电平

OUTDX,AL;L0发光

CALLDELAY;延时

MOVAL,00()00010B;点亮LI发光,延时

OUTDX,AL

CALLDELAY

MOVAL,00000100B;点亮L2发光,延时

OUTDX,AL

CALLDELAY

MOVAL,00001000B;点亮L3发光,延时

OUTDX,AL

CALLDELAY

RET

ONElightONEENDP

CODEENDS

ENDSTART

13、8255LED灯控制接口原理图如下,假设8255端口地址为200H〜203H,要求通过8255,利

用开关控制发光二极管。若开关S闭合,LED0〜LED3点亮;当开关S断开时,LEDO〜LED3

熄灭。

图28255LED灯控制接口原理图

;-------完善段定义-----------------------

DATASEGMENT;数据段DATA定义开始

PORT.CONEQU203H;定义控制端口符号地址PORT_CON

PORT_AEQU200H;端口A符号地址

PORT_BEQU201H;端口B符号地址

DATAENDS:数据段DATA定义结束

CODESEGMENT:代码段CODE定义开始

ASSUMEDS:DATA,CS:CODE;为段寄存器DS,CS指定段

Start:MOVAX,DATA;初始化数据段

MOVDS,AX

------初始化8255---------------------------------

MOVDX,PORT_CON;8255控制口地址送DX

_______MOVALJOOO()010B_______;A、B组方式0,PA口输出,PB口输入

_______OUTDX.AL______;输出控制字到8255

;......查询开关状态,控制LED--.........

CHECK:MOVDX,PORT_B;B端口地址送DX

INAL,DX________;__读PB端口数据到AL

TESTAL.01H—;判断连接在PB0上的开关K是否闭合

JNZOPEN;若PBO=1,开关没闭合,转OPEN

CLOSE:MOVDX,PORT_A:否则PB()=0,开关闭合,送A端口地址给DX,

MOVAL.F0H_:PAO、PAI、PA2、PA3输出低电平

OUTDX,AL;LED0〜LED3点亮

JMPCHECK:无条件转CHECK

OPEN:CALLLED_OFF:否则,调用子程序LED_OFF,LED熄灭

JMPCHECK;无条件转CHECK

...............LED熄灭子程序................

LED_OFFPROC

MOVDX,PORTA________;把A端口地址送DX

MOVAL,00(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论