微机接口技术练习题解_第1页
微机接口技术练习题解_第2页
微机接口技术练习题解_第3页
微机接口技术练习题解_第4页
微机接口技术练习题解_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

微机接n技术^句题解

第1章绪论

i.计算机分那几类?各有什么特点?

答:传统上分为三类:大型主机、小型机、微型机。大型主机一般为高

性能的并行处理系统,存储容量大,事物处理能力强,可为众多用

户提供服务。小型机具有一定的数据处理能力,提供一定用户规模的

信息服务,作为部门的信息服务中心。微型机一般指在办公室或家庭

的桌面或可移动的计算系统,体积小、价格低、具有工业化标准体系

结构,兼容性好。

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、DL

SLAX、BX、CX、DX一般作为通用数据寄存器。SP为堆栈指针存

器,BP、DLSI在间接寻址时作为地址寄存器或变址寄存器。总线接

口部件设有段寄存器CS、DS、SS、ES和指令指针寄存器IP。段寄存

器存放段地址,与偏移地址共同形成存储器的物理地址。IP的内容为下

一条将要执行指令的偏移地址,与CS共同形成下一条指令的物理地址。

5.8086对存储器的管理为什么采用分段的办法?

答:8086是一个16位的结构,采用分段管理办法可形成超过16位的

存储器物理地此扩大对存储器的寻址范围(1MB,20位地址)。若不

用分段方法,16位地址只能寻址64KB空间。

6.在8086中,逻辑地址、偏移地址、物理地址分别指的是什么?具体

说明。

答:逻辑地址是在程序中对存储器地址的一种表示方法,由段地址和段

内偏移地址两部分组成,如1234H:0088Ho偏移地址是指段内某个存

储单元相对该段首地址的差值,是一个16位的二进制代码。物理地址

是8086芯片引线送出的20位地址码,用来指出一个特定的存储单元。

7.给定一个存放数据的内存单元的偏移地址是20C0H,(DS)

=0C00EH,求出该内存单元的物理地址。

答:物理地址:320F8Ho

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、13、T4o在T1期间8086发出访问目的地的地址信号和地址锁存

选通信号ALE;T2期间发出读写命令信号RD#、WR#及其它相关信号;

T3期间完成数据的访问;T4结束该总线周期。

13.结合8086最小模式下总线操作时序图,说明ALE、M/IO#、DT7R#、

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的中断向量表如何组成?作用是什么?

答:把内存。段中。〜3FFH区域作为中断向量表的专用存储区。该区域

存放256种中断的处理程序的入口地址,每个入口地址占用4个存储单

元,分别存放入口的段地址与偏移地址。

17.8086如何响应一个可屏蔽中断请求?简述响应过程。

答:当8086收到INTR的高电平信号时,在当前指令执行完且IF=1的

条件下,8086在两个总线周期中分别发出INTA#有效信号;在第二个

INTA#期间,8086收到中断源发来的一字节中断类型码;8086完成保

护现场的操作,CS、IP内容进入堆栈,请除IF、TF;8086将类型码乘

4后得到中断向量表的入口地址,从此地址开始读取4字节的中断处理

程序的入口地址,8086从此地址开始执行程序,完成了INTR中断请求

的响应过程。

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

引脚是什么?

答:系统中若存在多个可控制总线的主模块时,其中之一若要使用总线

进行数据传输时,需向系统请求总线的控制权,这就是一个总线请求的

过程。8086在最小工作模式下有关总线请求的信号引脚是HOLD与

HLDAo

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包括指令预取部件、指令译码部件、控制

部件、运算部件及保护检测部件,主要功能是执行指令。存储器管理部

件包括分段部件、分页部件,实现对存储器的分段分页式的管理,将逻

辑地址转换成物理地址。总线接口部件作用是进行片外访问:对存储器

及VO接口的访问、预取指令;另外的作用是进行总线及中断请求的控

24.80386有几种存储器管理模式?都是什么?

答:80386有三种存储器管理模式,分别是实地址方式、保护方式和虚

拟8086方式

25.在不同的存储器管理模式下,80386的段寄存器的作用是什么?

答:在实地址方式下,段寄存器与8086相同,存放段基地址。在保护

方式下,每个段寄存器还有一个对应的64位段描述符寄存器,段寄存

器作为选择器存放选择符。在虚拟8086方式下,段寄存器的作用与8086

相同。

26.试说明虚拟存储器的涵义,它与物理存储器有什么区别?80386虚

拟地址空间有多大?

答:虚拟存储器是程序员面对的一个巨大的、可寻址的存储空间,这个

空间是内存与外存联合形成的,在操作系统的管理下,程序可象访问内

存一样去访问外存而获得所需数据。物理存储器是指机器实际拥有的内

存储器,不包括外存。80386的虚拟地址空间为64TB大。

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中的一个得到段

描述符,形成中断服务程序入口所在存储器单元的线性地址。

第3章8086指令系统及寻址方式

1.根据下列要求编写一个汇编语言程序::

(1)代码段的段名为COD_SG

(2)数据段的段名为DAT_SG

(3)堆栈段的段名为STK_SG

(4)变量HIGH_DAT所包含的数据为95

(5)将变量HIGH_DAT装入寄存器AH,BH和DL

(6)程序运行的入口地址为START

答案:

DAT_SGSEGEMNT

HIGH_DATDB95

DATSGENDS

STK_SGSEGMENT

DW64DUP(?)

STK_SGENDS

COD_SGSEGMENT

MAINPROCFAR

ASSUMECS:COD_SQDS:DAT_SGSS:STK_SG

START:MOVAX,DAFSG

MOVDS,AX

MOVAH,HIGH_DAT

MOVBH,AH

MOVDL,AH

MOVAH,4CH

INT21H

MAINENDP

COD_SGENDS

ENDSTART

2.指出下列程序中的错误:

STAKSGSEGMENT

DB100DUP(?)

STA_SGENDS

DTSEGSEGMENT

DATA1DB?

DTSEGEND

CDSEGSEGMENT

MAINPROCFAR

START:MOVDS,DATSEG

MOVAL,34H

ADDAL,4FH

MOVDATA,AL

STARTENDP

CDSEGENDS

END

答案:

改正后:

S1AKSGSEGMENT

DB100DUP(?)

STAKSGENDS

DTSEGSEGMENT

DA1A1DB?

DTSEGENDS

CDSEGSEGMENT

MAINPROCFAR

ASSUMECS:CDSEG,DS:DTSEGSS:STAKSG

START:MOVAX,DTSEG

MOVDS,AX

MOVAL,34H

ADDAL,4FH

MOVDATA1,AL

MOVAH,4cH

INT21H

MAINENDP

CDSEGENDS

ENDSTART

3.将下列文件类型填入空格:

(1).obj⑵.exe(3).erf(4).asm(5).1st(6).map

编辑程序输出的文件有______________________________________

汇编程序输出的文件有______________________________________

连接程序输出的文件有______________________________________

答案:

编辑程序输出文件:(4)

汇编程序输出文件:⑴,(3),(5)

连接程序输出文件:(2),⑹

4.下列标号为什么是三眩的?

(l)GET.DATA

(2)1-NUM

(3)TESTDAIA

(4)RET(5)NEWITEM

答案:

非法标号:

(1)因为不允许作标号

(2)第一个字符不能为数字

(3)不允许出现(可以是

(4)不能是保留字,如助记符

(5)不能有空格

5.下面的数据项定义了多少个字节?

DATA」DB6DUP(4DUP(OFFH))

答案:24字节

6.对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据

是一样的吗?为什么?

①DTSEGSEGMENT

ORG10H

DAIA1DB72H

DB04H

DTSEGENDS

②DTSEGSEGMENT

ORG10H

DATA1DW7204H

DTSEGENDS

答案:不一样.分别是72H,04H和04H,72H.存储字时低8位存在

低字节,高8位存在高字节.

7.下面的数据项设置了多少个字节?

⑴ASJDATADB'1234'

(2)HEX_DATADB1234H

答案:

(1)设置了4个字节

(2)设置了2个字节

8.执行下列指令后,AX寄存器中的内容是什么?

TABLEDW10,20,30,40,50

ENTRYDW3

MOVBX,OFFSETTABLE

ADDBX,ENTRY

MOVAX,[BX]

答案:(AX)=40

9.指出下列指令的错误:

(l)MOVAH,BX

(2)MOVLSI],[BXJ

(3)MOVAX,[SI][DI]

(4)MOVAX,[BXJ[BPJ

(5)MOV[BX],ES:AX

(6)MOVBYTEPTR[BX],1000

(7)MOVAX,OFFSET[SI]

(8)MOVCS,AX

(9)MOVDS,BP

答案:

(1)源、目的字长不一致

(2)源、目的不能同时为存贮器寻址方式

(3)基址变址方式不能有SI和DI的组合

(4)基址变址方式不能有BX和BP的组合

(5)在8086寻址方式中,AX不能作为基址寄存器使用,而且源、目

的不能同时为存贮器寻址方式

(6)1000超出一个字节的表数范围

⑺OFFSET只用于简单变量,应去掉

(8)CS不能作为目的寄存器

(9)段地址不能直接送入数据段寄存器

10.请写出下述两条指令执行后,BX寄存器中的内容。

DATASEGMENT

TABLE_ADDRDW1234H

DATAENDS

MOVBX,TABLE_ADDR

LEABX,TABLE_ADDR

答案:

MOVBX,TABLE_ADDR;执行后(BX)=1234H

LEABX,TABLE_ADDR;执行后(BX)=OFFSET

TABLE_ADDR

11.设(DS)=lB00H,(ES)=2B00H,有关存储器地址及

其内容如

右图所示,请用两条指令把X装入AX寄存器。8000

1BOO:2OO

0H

2B00H

1BOO:2OO

2H

X

2B00:800

OH

答案:

LESBX,[2000HJ

MOVAX,ES:[BX]

12.变量DATAX和DATAY定义如下:

DATAXDW0148H

DW2316H

DATAYDW0237H

DW4052H

按下述要求写出指令序列:

(l)DAIAX和DATAY中的两个字数据相加,和存放在DAIAY和

DAIAY+2中。

(2)DATAX和DATAY中的两个双字数据相加,和存放在DATAY开

始的字单元中。

⑶DAIAX和DAIAY两个字数据相乘(用MUL)。

(4)DATAX和DA1AY两个双字数据相乘(用MUL)。

(5)DAIAX除以23(用DIV)。

(6)DAIAX双字除以字DATAY(用DIV)。

答案:

MOVAX,DAIAX

ADDAX,DATAY

MOVBX,DAIAX+2

ADDBX,DAIAY+2

MOVDATAYAX

MOVDATAY+2,BX

MOVAX,DAIAX

ADDDAIAY,AX

MOVAX,DATAX+2

ADCDAIAY+2,AX

MOVAX,DAIAX

MULDAIAY

MOVDATAYAX

MOVDATAY+2,DX

(4)

MOVAX,WORDPTRDATAX

MOVBX,WORDPTRDATAY

MULBX

MOVRESULT,AX

MOVRESUET+2,DX

MOVAX,WORDPTRDAIAX

MOVBX,WORDPTRDAIAY+2

MULBX

ADDRESUET+2,AX

ADCRESUET+4,DX

MOVAX,WORDPTRDAIAX+2

MOVBX,WORDPTRDATAY

MULBX

ADDRESUET+4,AX

ADCRESUET+6,DX

MOVAX,WORDPTRDATAX+2

MOVBX,WORDPTRDAIAY+2

MULBX

ADDRESULT+6,AX

ADCRESULT+8,DX

MOVAX,DAIAX

MOVBL,23

DIVBL

MOVBL,AH

MOVAH,0

MOVDATARAX存放商

MOVAL,BL

MOVDATAY+2,AX;存放余数

:6)

MOVAX,DATAX

MOVDX,DAIAX+2

DIVDAIAY

MOVDAIAYAX

MOVDA1AY+2,DX

13.试分析下面的程序段完成什么操作?

MOVCL,04

SHLDX,CL

MOVBL,AH

SHLAX,CL

SHRBL,CL

ORDL,BL

答案:将DX:AX中的双字左移4位(乘16)

14.用其他指令完成和下列指—样的功能:

(l)REPMOVSB

(2)REPLODSB

(3)REPSTOSB

(4)REPSCASB

答案:

LOOP1:MOVAL,BYTEPTR[SI]

MOVES:BYTEPTR[DI],AL

INCSI或:DECSI

INCDI或:DECDI

LOOPLOOP1

LOOP1:MOVAL,BYTEPTR[SI]

INCSI或:DECSI

LOOPLOOP1

LOOP1:MOVES:BYTEPTR[DI],AL

INCDI或:DECDI

LOOPLOOP1

(4)

LOOP1:CMPAL,ES:BYTEPTR[DI]

JEEXIT

INCDI或:DECDI

LOOPLOOP1

EXIT:

15.编写程序段,比较两个5字节的字符串OLDS和NEWS,如果

OLDS字符串与NEWS不同,则执行NEW_LESS,否则顺序执行程

序。

答案:

LEASI,OLDS

LEADI,NEWS

MOVCX,5

CLD

REPZCMPSB

JNZNEW_LESS

16.假定AX和BX中的内容为带符号数,CX和DX中的内容为无符

号数,请用比较指令和条件转移指令实现以下判断:

(1)若DX的值超过CX的值,则转去执行EXCEED

(2)若BX的值大于AX的值,则转去执行EXCEED

(3)CX中的值为0吗?若是则转去执行ZERO

(4)BX的值与AX的值相减,会产生溢出吗?若溢出则转

OVERFLOW

(5)若BX的值小于AX的值,则转去执行EQ_SMA

(6)若DX的值低于CX的值,则转去执行EQ_SMA

答案:

(1)CMPDX,CX

JAEXCEED

(2)CMPBX,AX

JGEXCEED

⑶CMPCX,0

JEZERO

(4)SUBBX,AX

JOOVERFLOW

(5)CMPBX,AX

JLEQ_SMA

(6)CMPDX,CX

JBEQ_SMA

17.假如在程序的括号中分别填入指令:

(1)LOOPL20

(2)LOOPNEL20

(3)LOOPEL20

试说明在三种情况下,当程序执行完后,AX、BX、CX、DX四个寄

存器的内容分别是什么?

TITLEEXLOOP.COM

CODESGSEGMENT

ASSUMECS:CODESQDS:CODESGSS:CODESG

ORG100H

BEGIN:MOVAX,01

MOVBX,02

MOVDX,03

MOVCX,04

L20:INCAX

ADDBX,AX

SHRDX,1

)

RET

CODESGENDS

ENDBEGIN

答案:

(1)(AX)=5(BX)=16(CX)=0(DX)=0

(2)(AX)=2(BX)=4(CX)=3(DX)=1

⑶(AX)=3(BX)=7(CX)=2(DX)=0

18.变量N1和N2均为2字节的非压缩BCD数码,请写出计算N1

与N2之差的指令序列。

答案:

MOVAX,0

MOVAL,N1

SUBAL,N2

AAS

MOVDL,AL

MOVAL,Nl+1

SBBAL,N2+1

AAS

MOVDH,AL

19.有两个3位的ASCII数串ASCI和ASC2定义如下:

ASCIDB'578'

ASC2DB'694'

ASC3DB'OOOO'

请编写程序计算ASC3-ASC1+ASC2。

答案:

CLC

MOVCX,3

MOVBX,2

BACK:MOVAL,ASCI[BX]

ADCAL,ASC2LBX]

AAA

ORASC3[BX+1],AL

DECBX

LOOPBACK

RCLCX,1

ORASC3[BX],CL

20.假设(CS)=3000H,(DS)=4000H,(ES)=2000H,(SS)=5000H,

(AX)=2060H,(BX)=3000H,(CX)=5,(DX)=0,(SI)=2060H,(DI)=3000H,

(43000H)=0A006H,(23000H)=0B116H,(33000H)=0F802H,

(25060)=00B0H,.(SP)=0FFFEH,(CF)=1,(DF)=1,请写出下列各条指令

单独执行完后,有关寄存器及存储单元的内容,若影响条件码请给出条

彳摊SF、ZF、OF、CF的值。

(l)SBBAX,BX

(2)CMPAX,WORDPTR[SI+0FA0H]

(3)MULBYTEPTR[BX]

(4)AAM

(5)DIVBH

(6)SARAX,CL

(7)XORAX,0FFE7H

(8)REPSTOSB

(9)JMPWORDPYR[BXJ

(10)XCHGAX,ES:[BX+SI]

答案:

(l)(AX)=0F05FH,(SF>1,(ZF)=0,(OF)=0,(CF>1

(2)(SF>1,(ZF)=0,(OF)=1,(CF)=1

(3)(AX)=0240H,(OF>1,(CF)=1

(4)(AX)4)906H,(SF)=0,(ZF)=0

(5)(AX)=20ACH

(6)(AX)=0103H,(CF)=0

(7)(AXA0DF87H,(CF)=0,(OF)=0,(SF>1,(ZF)=0

(8)(23000H)~(23004H)=60H,不影响标志位

(9)(IP)=0A006H,不影响标志位

(10)(AX)=00B0H,(25060)=2060H,不影响标志位

[第3章练习题完]

第4章汇编语言程序设计基础

1.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母

显示出来。

答案:

ABC:MOVAH,1

INT21H

CMBAL,'A'

JBSTOP

CMPAL,Z

JASTOP

SUBAL,20H

MOVDL,AL

MOVAH,2

INT21H

JMPABC

STOP:RET

2.编写程序,比较两个字符串STRING1和STRING2所含字符是否完全

相同,若相同则显示“MATCH”,若不同则显示“NOMATCH”。

答案:

DATAREASEGMENT

STRING1DB'ASFIOA'

STRING2DB,XCVIYOAF'

MESS1DB'MATCH,$

MESS2DB4NOMATCH,$

DATAREAENDS

PROGNAMSEGMENT

MAINPROCFAR

ASSUMECS:PROGNAM,DS:DAIAREA

S1ART:PUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATAREA

MOVDS,AX

MOVES,AX

BEGIN:MOVCX,STRING2-STRING1

MOVBX,MESS1-STRING2

CMPBX,CX

JNZDISPNO

LEADX,ADDR

LEASI,STRING1

LEADI,STRING2

REPECMPSB

JNEDISPNO

MOVAH,9

LEADX,MESSI

RET

DISPNO:MOVAH,9

LEADX,MESS2

INT21H

RET

MAINENDP

PROGNAMENDS

ENDSTART

3.试编写程序,要求从键盘输入3个16进制数,并根据对3个数的

比较显示如下信息:

(1)如果3个数都不相等则显示0;

(2)如果3个数中有2个数相等则显示2;

(3)如果3个数都相等则显示3。

答案:

DATASEGMENT

ARRAYDW3DUP(?)

DATAENDS

CODESEGMENT

MAINPROCFAR

ASSUMECS:CODE,DS:DAIA

STARTPUSHDS

SUBAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVCX,3

LEASI,ARRAY

BEGIN:PUSHCX

MOVCL,4

MOVDI,4

MOVDL,(<

MOVAH,02

INT21H

MOVDX,0

INPUT:MOVAH,01

INT21H

ANDAL,0FH

SHLDX,CL

ORDL,AL

DECDI

JNEINPUT

MOV[SI],DX

ADDSL2

POPCX

LOOPBEGIN

COMP:LEASI,ARRAY

MOVDL,0

MOVAX,[SI]

MOVBX,[SI+2]

CMPAX,BX

JNENEXT1

ADDDL,2

NEXT1:CMP[SI+4J,AX

JNENEXT2

ADDDX,2

NEXT2:CMP[SI+4],BX

JNENUM

ADDDL,2

NUM:CMPDX,3

JLDISP

MOVDL,3

DISP:MOVAH,2

ADDDL,30H

INT21H

RET

MAINENDP

CODEENDS

ENDSTART

4.已知整数变量A和B,试编写完成下述操作的程序:

(1)若两个数中有一个是奇数,则将该奇数存入A中,偶数存入B

中;

(2)若两个数均为奇数,则两数分别加1,并存回原变量;

(3)若两个数均为偶数,则两变量不变。

答案:

DSEGSEGMENT

ADW?

BDW?

DSEGENDS

CSEGSEGMENT

MAINPROCFAR

ASSUMECS:CSEQDS:DSEG

STARTPUSHDS

SUBAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

BEGIN:MOVAX,A

MOVBX,B

XORAX,BX

TESTAX,0001

JZCLASS

TESTBX,0001

JZEXIT

XCHGBX,A

MOVB,BX

JMPEXIT

CLASS:TESTBX,0001

JZEXIT

INCB

INCA

EXIT:RET

MAINENDP

CSEGENDS

ENDSTART

5.把0~10010之间的30个数,存入首地址为GRAD的字数组中,GRAIHI

表示学号为1+1的学生成绩。另一个数组RANK是30个学生的名次表,

其中RANK+I的内容是学号为1+1的学生的名次。试编写程序,根据GRAD

中的学生成绩,将排列的名次填入RANK数组中(提示:一个学生的名

次等于成绩高于这个学生的人数加1)。

答案:

DSEGSEGMENT

GRADEDW30DUP(?)

RANKDW30DUP(?)

DSEGENDS

CSEGSEGMENT

MAINPROCFAR

ASSUMECSCSEGDS:DSEGES:DSEG

STARTPUSHDS

SUBAX,AX

PUSHAX

MOVAX,DSEG

MOVDS,AX

MOVES,AX

BEGIN:MOVDI,0

MOVCX,30

LOOP1:PUSHCX

MOVCX,30

MOVSL0

MOVAX,GRADE[DI]

MOVDX,0

LOOP2:CMPGRADE[SI],AX

JBEGO_ON

INCDX

GO_ON:ADDSL2

LOOPLOOP2

POPCX

INCDX

MOVRANK[DI],DX

SDDDI,2

LOOPLOOP1

RET

MAINENDP

CSEGENDS

ENDSTART

6.分析下列程序的功能,写出堆栈最满时各单元的地址及内容。

SSEGSEGMENT<STACK,AT1000H;堆栈的段地址为1000H

DW128DUP(?)

TOSLABELWORD

SSEGENDS

DSEGSEGMENT

DW32DUP(?)

DSEGENDS

CSEGSEGMENT

MAINPROCFAR

ASSUMECS:CSEG,DS:DSEG,SS:SSEG

START:MOVAX,SSEG

MOVSS,AX

MOVAX,DSEG

MOVDS,AX

MOVAX,4321H

CALLHTOA

RETN:MOVAH,4CH

INT21H

MAINENDP

HTOAPROCNEAR

CMPAX,15

JLEBl

PUSHAX

PUSHBP

MOVBP,SP

MOVBX,[BP+2]

ANDBX,OFH

MOV[BP+2],BX

POPBP

MOVCL,4

SHRAX,CL

CALLHTOA

Bl:POPAX

B2:ADDAL,30H

JLPRT

ADDAL,07

PRT:M0VDL,AL

MOVAH,2

INT21H

RET

HTOAENDP

CSEGENDS

ENDSTART

答案:

1000:0F2Bl

H

1000:0F43

H

1000:0F6Bl

H

1000:0F82

H

1000:0FABl

H

1000:0FC1

H

1000:0FERETN

H

1000:100H

7.写出分配给下列中断类型号在中断向量表中的物理地址。

(1)INT12H

(2)INT8

答案:

(l)00048h

⑵00020h

8.试编写程序,它轮流测试两个设备的状态寄存器,只要一个状态寄

存器的第0位为1,则与其相应的设备就输入一个字符;如果其中任一

状态寄存器的第3位为1,则整个输入过程结束。两个状态寄存器的端

口地址分别是0024和0036,与其相应的数据输入寄存器的端口则为

0026和0038,输入字符分别存入首地址为BUFF1和BUFF2的存储区中。

答案:

MOVSL0

MOVDL0

TEST12:INAL,0024H

TESTAL,08

JNZEXIT

INAL,0036H

TESTAL,08

JNZEXIT

DEVLINAL,0024H

TESTAL,01

JZDEV2

INAL,0026H

MOVBUFFER[SI],AL

INCSI

DEV2:INAL,0036H

TESTAL,01

JZTEST12

INAL,0038H

MOVBUFF2[DI],AL

INCDI

JMPTEST12

EXIT:RET

9.给定(SP)=0100,(SS)=0300,(FLAGS)=0240,存储单元的内容

为(00020)=0040,(00022)4)100,在段地址为0900及偏移地址为

00A0的单元中有一条中断指令INT8,试问执行INT8指令后,SP,SS,

IP,FLAGS的内容是什么?栈顶的三个字是什么?

答案:

(SP)=00FA

(SS)=0300

(IP)=0040

(FLAGS)=0040

堆栈内容:

00A1H

0900H

0240H

10.编写一个程序,接收从解输入的10个十进制数字,输入回车符

则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存

缓冲区BUFFER。加密表为;

输入数字:0,1,2,3,4,5,6,7,8,9

密码数字:7,5,9,1,3,6,8,0,2,4

答案:

SCODEDB7,5,9,1,3,6,8,0,2,4

BUFFERDB10DUP(?)

MOVSLO

MOVCX,10

LEABX,SCODE

INPUTMOVAH,01

INT21H

CMPAL,0AH

JZEXIT

ANDAL,0FH

XLAT

MOVBUFFER[SI],AL

INCSI

LOOPINPUT

EXIT:RET

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

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

答:处理器内部应有中断请求信号的检测电路,输出中断响应信号,保

存断点的逻辑,转向中断处理程序的逻辑,中断返回逻辑。系统中要有

一中断控制器,管理多个中断源,提供处理机所需的中断处理信息。系

统中请求中断处理的I/O接口电路要有提供中断请求信号及接收中断响

应信号的逻辑。

2.什么是中断类型码、中断向量、中断向量表?在基于8086/8088的

微机系统中,中断类型码和中断向量之间有什么关系?

答:处理机可处理的每种中断的编号为中断类型码。中断向量是指中断

处理程序的入口地址,由处理机自动寻址。中断向量表是存放所有类型

中断处理程序入口地址的一个默认的内存区域。在8086系统中,中断

类型码乘4得到向量表的入口,从此处读出4字节内容即为中断向量。

3.什么是硬件中断和软件中断?在PC机中两者的处理过程有什么不

同?

答:硬件中断是通过中断请求线输入电信号来请求处理机进行中断服

务;软件中断是处理机内部识别并进行处理的中断过程。硬件中断一般

是由中断控制器提供中断类型码,处理机自动转向中断处理程序;软件

中断完全由处理机内部形成中断处理程序的入口地址并转向中断处理

程序,不需外部提供信息。

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类型中断对应的中断向量

表中去。在应用程序中把主片8259AD2屏蔽位清0,把从片8259AD1

屏蔽位清0,使主片的以2、从片的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有什么区

另U?

答:IF是8086微处理器内部标志寄存器的一位,若*=0,8086就不响

应外部可屏蔽中断请求INTR引线上的请求信号。8259A有8个中断请

求输入线,IMR中的某位为1,就把对应这位的中断请求IR禁止掉,

无法被8259A处理,也无法向8086处理器产生INTR请求。

11.若8086系统采用单片8259A中断控制器控制中断,中断类型码给

定为20H,中断源的请求线与8259A的IR4相连,试问:对应该中

断源的中断向量表入口地址是什么?若中断服务程序入口地址为

4FE24H,则对应该中断源的中断向量表内容是什么,如何定位?

答:中断向量表入口地址为:。段的0090H地址。对应4FE24H中断服

务程序入口,在向量表中定位情况:(0090H)=24H、(0091H)=00H>

(0092H)=E0H>(0093H)=4FHo

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

片8259A,中断请求信号使用电平触发方式,全嵌套中断优先级,

数据总线无缓冲,采用中断自动结束方式。中断类型码为20H〜27H,

8259A的端口地址为B0H和B1H。

答:ICW1TBH(送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#W、HLDA=O说明它正被编程或读取状态,

IOR#与IOW#为输入,A0-A3为输入。8237A处于主模块时,输出地

址信号A0〜A15(低8位经A0〜A7输出,高8位经DBO〜DB7输出)。8237A

还要输出IOR#、IOW#、MEMR#、MEMW#、AEN、ADSTB等有效

信号供DMA传送过程使用。

20.说明8237A初始化编程的步骤。

答:(1)写屏蔽字,阻止某通道的DMA请求。(2)写命令字(8号地址),

确定信号有效电平、优先级方式、通道

温馨提示

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

评论

0/150

提交评论