微机原理习题答案_第1页
微机原理习题答案_第2页
微机原理习题答案_第3页
微机原理习题答案_第4页
微机原理习题答案_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

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

文档简介

微型计算机原理及应用

习题集

专业班级_____________

学号______________

姓名

目录

第1章概述..............................................................2

第2章微处理器及其结构.................................................3

第3章8086/8088CPU指令系统............................................7

第4章汇编语言程序设计.................................................14

第5章存储器系统.......................................................24

第6章输入输出与中断技术..............................................27

第7章微型计算机的接口技术............................................34

第1章概述

一、填空题

1.运算器和控制器集成在一块芯片上,被称作CPU。

2.总线按其功能可分数据总线、地址总线和控制总线三种不同类型的总线。

3.迄今为止电子计算机所共同遵循的工作原理是程序存储和程序控制的工作原理。这种原理又

称为冯・诺依曼型原理。

4.写出以下原码机器数的真值;假设分别作为反码和补码时,其表示的真值又分别是多少?

(1)(01101110)二进制原码=(+1101110)(+110)十进制式但

(01101110)二遏制反码=(+1101110)二逆8”期=(+110)十遏制”值

(01101110)二进制,网=(+1101110)二进巾域位=(+110)

⑵(10110101)二进同隙出=(—0110101)二进刎*值=(-53)

(10110101)二边词氏码=(—1001010)二进制应回=(174)

(10110101)二进加例=(-1001011)二遗物改的=(-75)十进和真值

5.写出以下二进制数的原码、反码和补码(设字长为8位)。

(1)(+1010110)-进出停值=(01010110)原码=(01010110)反码=(01010110)补码

(2)(-1010110)二送制口值=(11010110)^=(10101001)及码=(10101010)扑码

6.[X]补=78H,那么[-X]补=(88)Ho

7.Xl=+0010100,Yl=+0100001,X2=-0010100,Y2=-0100001,试计算以下各式(设字长为8

位)。

(l)[Xi+Yih=[Xi]补+[丫小卜=00010100+00100(X)1=(K)II0101

(2)IX,-Y2J^=[XI]补+[-Y2]ib=000101(X)+00100001=00II0101

(3)[X2-Y2]»=[X2]H+[-Y2]M=11101100+00100001=00001101

(4)[X2+Y2]柠[X?]补+[Y2]»b=11101100+HOI1111=11001011

8.将以下十六进制数分别转换成二进制、八进制、十进制和BCD数。

(1)(5D.BA)i6=(0101,1101.1011,1010)2=(135.564)8=(93.7265625)10

=(1001,0011.0111.0010,0110,0101,0110,0010,0101)BCD

(2)(1001.0101,1)2=(9.34375)10=(11.26)8=(9.58)i6

=(1001.0011,0100.0011,0111,0101)BCD

9.写出以下字符的ASCH码。

⑴'9'=(39H)ASCIIw(2)'C'=(43H)ASCH码

⑶巧=(24H)ASCII同(4)'空格'=(20H)ASCII«

⑸=(62H]ASCII«(6)‘回车’=lODH)ASCIIvi

⑺,换行'=(0AH)ASCII«(8),报警符'=(07H)ASCII

二、选择题

1.以下无符号数中最小的数是(A)。

A.(01A5)HB.(1,10I1,0I0I)BC.(2590)DD.(3764)O

2.以下有符号数中最大的数是ID)。

A.1002HB.100100110010UOOBC.25700D.9614D

3.在机器数(A)中,零的表示形式是唯一的。

A.补码B.原码C.补码和反码D.原码和反码

4.8位二进制数补码的数值表示范围为(A)。

A.-128〜+127B.-127-4-127

C.一129〜+128D.-128〜+128

5.假设以下字符码(ASCII)中有奇偶校验位,但没有数据错误,采用偶校验的字符码是(D)。

A.11001011B.11010110C.11(X)0001D.11001001

6.B9H可以看成(ABD

A.无符号数185B.带符号数一71的补码

C.十进制数99的组合BCD码D.带符号数一57的原码

三、简答题

1.简述微处理器、微计算机及微计算机系统三个术语的内涵。

答:微处理器是微计算机系统的核心硬件部件,它本身具有运算能力和控制功能,对系统的性能起

决定性的影响。微处理器一般也称为CPU;微计算机是由微处理器、存储器、I/O接口电路及系统总线组

成的裸机系统。微计算机系统是在微计算机的根底上配匕相应的外部设备和各种软件,形成一个完整的、

独立的信息处理系统。三者之间是有很大不同的,微处埋器是微型计算机的组成局部,而微型计算机乂

是微型计算机系统的组成局部。

2.什么叫总线?为什么各种微型计算机系统中普遍采用总线结构?

答:总线是模块与模块之间传送信息的一组公用信号线。

总线标准的建立使得各种符合标准的模块可以很方便地挂在总线上,使系统扩展和升级变得高效、

简单、易行。因此微型计算机系统中普遍采用总线结构。

3.微型计算机系统总线从功能上分为哪三类?它们各自的功能是什么?

答:微型计算机系统总线从功能上分为地址总线、数据总线和控制总线三类。地址总线用于指出数

据的来源或去向,单向;数据总线提供了模块间数据传输的路径,双向;控制总线用来传送各种控制信

号或状态信息以便更好协调各功能部件的工作。

第2章微处理器及其结构

一、填空题

1.8086/8088CPU执行指令中所需操作数地址由@计算出工位偏移量局部送侬L,由BIU最

后形成一个H位的内存单元物理地址。

2.8086/8088CPU在总线周期的Ti时刻,用A2S6〜AW/SJ输出20位地址信息的最高4位,而在

其他时钟周期,那么输出垓态_信息。

3.8086/8088CPU复位后,从0FFFF0H单元开始读取指令字节,一般这个单元在ROM_区中,在

其中设置一条跳转指令,使CPU对系统进行初始化。

4.8086系统的存储体系结构中,1MB存储体分个库,每个库的容量都是512K字节,其中和数据

总线Dis〜D8相连的库全部由血如单元组成,称为高位字节库,并用旗作为此库的选道信号。

5.8086/8088系统中,可以有个段起始地址,任意相邻的两个段起始地址相距工个存储单元。

6.用段基值及偏移量来指明内存单元地址的方式称为逻辑地址,

7.通常8086/8088CPU中当EU执行一条占用很多时钟周期的指令时,或者在多处理器系统中在交换

总线控制时会出现空闲状态。

8.8086CPU使用16根地升线访问I/O端口,最多可访问64K个字节端口,使用20根地址线访问

存储单元,最多可访问1M个字节单元。

9.CPU取一条指令并执行该指令的时间称为鱼二周期,它通常包含假设干个遥线_周期,而后者

又包含有假设干个时钟周期。

10.

II.

12.

13.

二、单项选择题

1.某微机最大可寻址的内存空间为16MB,其CPU的地址总线至少应有(E)条。

A.26B.28C.20D.22E.24

2.8086/8088CPU的RESET引脚至少应维持(A)个时钟周期的正脉冲宽度才能有效复位。

A.4B.5C.2D.3

3.当RESET信号进入高电立状态时,将使8086/8088CPU的(D)存放器初始化为0FFFFH。

A.SSB.DSC.ESD.CS

4.8086/8088CPU与慢速存储器或I/O接口之间进行数据传输,为了使传送速度匹配,有时需要在

(C)状态之间插入假设干等待周期TW。

A.T1和T2B.T2和T3C.T3和T4D.随机

5.8086/8088CPU中标志存放器的主要作用是(D)。

A.检查当前指令的错误B.纠正当前指令执行的结果与错误

C.决定是否停机D.产生影响或控制某些后续指令所需的标志

6.8086最小模式下的存储渊读周期中地址锁存发生在总线周期的(A)时刻。

A.TlB.T2C.T3D.T4

7.指令指针IP的作用是(A)o

A.保存将要执行的下一条指令的地址B.保存CPU要访问的内存单元地址

C.保存运算器运算结果内容D.保存正在执行的一条指令

8.8086CPU有两种工作模式,最小模式的特点是(A)。

A.CPU提供全部控制信号B.由编程进行模式设定

C.不需要8282收发器D.需要总线控制器8288

三、简答题

1.8086/8088CPU分为哪两个局部?如何协调工作?

答:EU是执行部件,主要的功能是执行指令和形成有效地址。BIU是总线接口部件,与片外存储器

及I/O接口电路传输数据,主要功能是形成实际地址、预取指令和存取操作数。EU经过BIU进行片外操

作数的访问,BIU为EU提供将要执行的指令。EU与BIU可分别独立工作,当EU不需BIU提供效劳时,

B1U可进行填充指令队列的操作。

2.8086/8088CPU的地址总线有多少位?其寻址范闱是多少?

答:8086/8088CPU的地址总线共20位,最大可寻址1MB空间。

3.8086/8088CPU使用的存储器为什么要分段?怎么分段?

答:8086/8088为16位CPU,其内部的ALU、相关的地址存放器(如SP、IP以及BX、BP、SLDI)等

都是16位的,因而对存储器地址的处理也只能是16位操作,即8086/8088的直接寻址能力在64KB范围内。

而实际上8086/8088有20条地址线,它的最大寻址空间为1MB。这就产生了一个矛盾,即如何用16位的地

址存放器去表示一个20位的存储器物理地址?

实际使用的解决方法是:将1MB大小的存储空间分为假设干“段〃,每段不超过64KB。这样,一个

20位的物理地址就可以用“16位段基址:16位偏移量〃的形式(称为逻辑地址)来表示了,其中段地址存

放在8086/8088的段存放器中。

4.8086/8088CPU中有几个通用存放器?有几个变址存放器?有几个指针存放器?通常哪几个存放

器亦可作为地址存放器使用?

答:8086/8088CPU中共有:

8个16位的通用存放器AX、BX、CX、DX、BP、SP、SLDI;

2个变址存放器SI、DI;

2个指针存放器BP、SP:

其中BX、BP>SLDI亦可作地址存放器。

5.Intel8086与8088有何区别?

答:8086与8088的区别主要表现在以下几个方面:

第一、8086的指令队列可以容纳6个字节,每个总线周期在存储器中取出2个字节指令代码填入队列。

而8088只能容纳4个字节,且每个总线周期只能取出1个字节指令代码。

第二、8086外部数据总线宽度为16位,8088外部数据总线宽度只有8位。注意:8086和8088外部数据

总线的宽度不同将导致扩展主存储器及输入/输出接口时系统地址线和数据线连接方式的不同。

第三、其他不同的引脚定义:⑴ADi5-ADo,在8086中为地址/数据复用,而在8088中ADmADx改

为Ais~As只作地址线用;(2)34、28号引脚定义不同。

6.8086/8088CPU工作在最小模式时:当CPU访问存储器时,要利用哪些信号?当CPU访问外设接口

时,要利用哪些信号?

答:8086/8088CPU工作在最小模式时,假设访问存储器,需用到以下信号:Mild.ALE、DT/R.

DEN、READY、~BHE.底、丽、ADo〜ADi5、A19/S6〜A16/S3。假设访问外设,需用到以下信号:M/方、

ALE、DT/R.DEN>READY.丽、丽、ADo〜AD8

7.试指出以下运算后的各个状态标志,井说明进位标志和溢出标志的区别:

(1)1278H+3469H

答:CF=OAF=1ZF=OSF=OOF=0PF=1

(2)54E3H-27A0H

答:CF=OAF=OZF=OSF=OOF=0PF=O

(3)388IH+3597H

答:CF=OAF=OZF=OSF=OOF=0PF=1

(4)O1E3H-O1E3H

答:CF=OAF=OZF=1SF=OOF=0PF=1

其中,进位标志CF用于判别无符号数运算是否超出数的表示范围,而溢出标志OF用于判别带符号

数运算是否超出数的表示范围。

奇偶标志PF只能判断结果低8位中力"的个数为奇数还是偶数。

8.什么是逻辑地址?什么是物理地址?它们之间有什么联系?各用在何处?

答:逻辑地址由两个16位的局部即段基址和偏移量组成,一般在程序中出现的地址都表示为逻辑地

址形式;物理地址是一个20位的地址,它是唯一能代表存储空间每个字节单元的地址,一般只出现在地

址总线上。

由于8086/8088CPU中的存放器只有16位长,所以程序不能直接存放20位的物理地址,而必须借助

逻辑地址,即用两个16位的存放器来表示物理地址。他们之间的关系是:物理地址=段基址*16+偏移

量;另外,一个物理地址可对应多个逻辑地址。

9.设现行数据段位于存储器0B0000H〜0BFFFFH单元,DS段存放器内容为多少?

答:DS段存放器内容为0B000H。

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

地址。

答:物埋地址:0C2EC0H。

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

答:考虑到芯片本钱和体积,8086/8088采用40条引线的封装结构。40条引线引出8086/8088的所

有信号是不够用的,采用地址/数据线更用引线方法可以解决这一矛盾,从逻辑角度,地址与数据信号不

会同时出现,二者可以分时复用同一组引线。

12.怎样确定8086的最大或最小工作模式?

答:引线MN/加的逻辑状态决定8086的工作模式,MN/X次引线接高电平,8086被设定为最小模

式,MN/而引线接低电平,8086被设定为最大模式。

13.8086根本总线周期是如何组成的?

答:根本总线周期由4个时钟(CLK)周期组成,按时间顺序定义为Tl、T2、T3、T4。

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

信号起什么作用?

答;8086为16位微处理器,可访问1M字节的存储器空间;1M字节的存储器分为两个512K字节

的存储体,分别命名为偶存储体和奇存储体;偶体的数据线连接D7~D0,“体选”信号接地址线A0;奇

体的数据线连接D15~D8,“体选”信号接而正信号;A0信号有效时允许访问偶体中的低字节存储单元,

亩市信号有效时允许访问奇体中的高字节存储单元,实现8086的低字节访问、高字节访问及字访问。

15.有一个由20个字组成的数据区,其起始地址为610AH:ICE7H。试写出该数据区首末单元的实

际地址PAo

首单元地址:610A0H+lCE7H=62D87H

末单元地址:62D87H+27H=62DAEH

16.有两个16位的字31DAH、5E7FH,它们在8086系统存储器中的地址为00130H和00135H,试

画出它们的存储器示意图。

地址内容

00I30H

00I31H

00I32H

OOI33II

00I34H

OOI35H

00I36H

17.试说明8086CPU的控制引脚ALE的作用。

答:8086的低位地址线与数据线复用,为保证地址线维持足够的时间,需使用ALE信号将低位地址

线通过锁存器保存,以形成系统地址总线。

第3章8086/8088CPU指令系统

一、判断题

1.MOVAX,[BP]的源操作数物理地址为I6x(DS)+(BP)。(x)

2.OUTDX,AL指令的输出是16位操作数。(x)

3.不能用立即数给段存放器赋值。(V)

4.所有传送指令都不影响PSW存放器的标志位。(x)

5.堆栈指令的操作数均为字。

6.段内转移指令执行结果要改变IP,CS的值。(x)

二、单项选择题

I.存放器间接寻址方式中,操作数在(C)中。

A.通用存放器B.I/O端口C.存储单元D.段存放器

2.(AJ寻址方式的跨段前缀不可省略。

A.DS:[BP]B.DS:[SI]C.DS:[DI]D.SS:[BP]

3.假设(SS)=2000H,(SP)=0012H,(AX)=1234H,执行PUSHAX后,(SP)=(C)。

A.00I4HB.001IHC.OOIOHD.OOOFH

4.用BP作基址变址寻址时,操作数所在的段是当前(C:o

A.数据段B.代码段C.堆栈段D.附加段

5.(IP)=IOOOH,CF=O,那么执行指令JNCShortlabel后,以下各数中哪一个是可能的IP值?

(B)

(A)OFFFFH(B)OFFEH(C)10FEH(D)U00H

6.执行以下指令后,(AX)=(A)o

MOVAX,1234H

MOVCL,4

ROLAX,CL

DECAX

MOVCX,4

MULCX

HLT

A.8D00HB.9260HC.8CA0HD.0123H

7.设(AL)=-68,(BL)=86,执行SUBAL,BL指令后,正确的结果是(C)。

A.CF=1B.SF=1C.OF=1D.ZF=1

8.(SI)=0004H,(DS)=8000H,(80004H)=02H.(80005H)=C3H。指令LEAAX,[Si]执

行后(AX)=(C)o

A.0002HB.0005HC.0004HD.C302H

9.条件转移指令JNE的条件是(C)。

A.CF=0B.CF=IC.ZF=0D.ZF=1

10.在8086中,(BX)=0282H,IL题中指令己在指令队列中,那么执行

INCBYTEPTR(BX)指令需要的总线周期为(C)。

A.OB,1C.2D.3

三、多项选择题

1.以下指令中源操作数使用存放器寻址方式的有(BF)。

A.MOVBX,BUF[SI]B.ADD[SI+50],BXC.SUBAX,2

D.CMPAX,DISP[DI]E.MULVAR[BX]F.PUSHCX

2.将累加器AX的内容清零的正确指令是(BCD)。

A.CMPAX,AXB.SUBAX,AX

C.ANDAX,0D.XORAX,AX

3.正确将字变量WORDVARR偏移地址送存放器AX的指令是(CD)。

A.MOVAX,WORDVARRB.LESAX,WORDVARR

C.LEAAX,WORDVARRD.MOVAX,OFFSETWORDVARR

4.调用CALL指令可有(ABDE)o

A.段内直接B.段内间接C.短距离(SHORT)

D.段间直接E.段间间接

5.8086指令的操作数可能有(ABC)。

A.OB.1C.2D.3

四、填空题

1.与指令MOVBX,OFFSETBUF功能相同的指令是LEABX,BUF。

2.假设(BX)=0449H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=7230H那么

执行XCHGBX,[BP+SI]指令后,(BX)=7230H0

3.执行以下指令序列后,完成的功能是将(DX,AX)的值除以16。

MOVCX,4

NEXT:SHRDX,1

RCRAX,1

LOOPNEXT

4.(AL)=0101H01B,执行指令NEGAL后,再执行CBW后,

(AX)=0FFA3Ho

5.在数据传送类指令中,只有SAHF和POPF两条指令会影响标志位的值,其中指令POPF是

唯一可以改变TF标志的指令。

6.设有100个字节数据(补码),存放在数据段中EA=2000H的存储单元中。以下程序应该从该数

据区中找出最小的一个数据,并存入EA=2100H单元中,请将卜面程序补允完整。

MIN:MOVBX,2000H

MOVAL,[BX]

MOVex,99

LOOP1:INCBX

CMPAL,[BX]

JLELOOP2

MOVAL,[BX]

LOOP2:DECex

JNZLOOP1

MOV[2I00H],,

7.MOVAX,ES:[BX][Si]中,源操作数的物理地址计算式是:

(ES)X16+(BX)+⑸)。

五、综合题

I.请指出以下各指令的源、目的操作数所使用的寻址方式。

(1)MOVSI,21OOH

⑵SBBDISP[BX],7

(3)AND[DI],AX

(4)ORAX,1609EH.

(5)MOV[BX+DI+30H],CX

(6)PUSHES:[BPI

(7)CALLDISPIDIJ

答:(1)源操作数:立即数寻址;目的操作数:存放器寻址

(2)源操作数:立即数寻址;目的操作数带位移量的)基址寻址

(3)源操作数:存放器寻址:目的操作数:变址寻珏

(4)源操作数:直接寻址;目的操作数:存放器寻址

(5)源操作数:存放器寻址;目的操作数:(带位移量的)基址变址寻址

(6)源操作数:带段超越的基址寻址;目的操作数:隐含寻址

(7)只有一个操作数,为[带位移量的)变址寻址

2.请指出以下各条指令的错误,并改正。

(1)MOV[100],23H

(2)ADDAX,[BX+BP+6]

(3)PUSHDL

(4)INAX,[3FH]

(5)OUT3FFH,AL

(6)POP[AX]

(7)IMUL4CH

(8)SHLBX,

(9)INT300

(10)XCHGDX,OFFFH

(11)MOVAH,BX

(12)MOVIBX],ES:AX

(13)MOVAX,OFFSET[SI]

(14)MOVCS,AX

(15)MOVDS,ES

(16)MOVDS,1000H

答:⑴1不允许直接向段存放器送立即数,可改为:

MOVAX,1000H

MOVDS,AX

(2)该指令在语法上是对的,即可以把一个立即数送入一个存储单元;但是如果考虑实际编译,

那么第一操作数前应加上BYTEPTR或WORDPTR说明,否则汇编程序会因不能确定操作数长度

而指示出错。可改为:MOVBYTEPTR[100],23H

(3)不能同时使用两个基址存放器BX、BP进行间接寻址,可改为:

ADDAX,[BX+DI+6]

(4)堆栈操作应以字为单位进行,而DL是一个字节。

可改为:PUSHDX

(5)在输入/输出指令中,8位端口地址应直接写在操作数处。可改为;

INAX,3FH

(6)端口地址3FFH已超出8位二进制表示范围,16位端口地址应存于DX。可改为:

MOVDX,3FFHOUTDX,AL

(7)AX不能用于间接寻址,间接寻址只能用BX、BP、SLDI四个存放器之一。可改为:POP

LBX]

(8)立即数不能做乘法指令的操作数,可改为:

MOVBL,4CH

IMULBL

(9)当逻辑移位的次数大于1时,应该用CL指示次数。可改为:

MOVCL,5

SHLBX,CL

(10)操作数300>255,已超出有效的中断类型码范围。

(IDXCHG指令不允许立即数做它的操作数。可改为:

MOVCX,OFFFH

XCHGDX,CX

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

(13)在8086寻址方式中,AX不能作为基址存放器使用,而且源、目的不能同时为存贮器寻址

方式

(14)OFFSET只用于简单变量,应去掉

(15)CS不能作为目的存放器

(16)段存放器之间不能直接传送数据

3.设假设标志存放器原值为0A11H,(SP)=0060H,(AL)=4。以下几条指令执行后,标志存放

器、AX、SP的值分别是多少?

PUSHF

LAHF

XCHGAH,AL

PUSHAX

SAHF

POPF

答:指令执行后标志存放器的值为0411H,AX=0411H,SP=005EHo

4.假设在程序的拈号中分别填入指令:

(l)LOOPL20

(2)LOOPNEL20

(3)LOOPEL20

试说明在三种情况下,当程序执行完后,AX、BX、CX、DX四个存放器的内容分别是什么?

BEGIN:MOVAX,01

MOVBX,02

MOVDX03

MOVCX,04

L20:INCAX

ADDBX,AX

SHRDX,1

()

答案:(1)(AX)=5(BX)=16(CX)=0(DX)=0

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

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

5.在已学的指令中,可实现累加器清0的单条指令有哪些?比拟它们的功能。

答:(1)MOVAX,0;仅将累加器清0,不会影响任何标志位

(2)SUBAX,AX;累加器清0的同时影响所有状态标志,具体地有:ZF、PF置1,CF、

AF、SF、OF均清0

(3)ANDAX,0;将累加器清0,ZF、PF置1,CF、OF、SF清0

(4)XORAX,AX;将累加器清0,ZF、PF置1,CF、OF、SF清0

6.(DS)=2000H,有关的内存单元值为:(2l000H)=00H,(21001H)=12H,(21200H)=00H,

(21201H)=10H,(23200H)=20H,(232O1H)=3OH,(23400H)=40H,(23401H)=30H,(23600H)=60H,

(23601H)=30H,符号COUNT的偏移地址为1200H。执行以下指令后,存放器AX、BX、SI的值分

别是多少?

MOVBX,OFFSETCOUNT

MOVSI,[BX]

MOVAX,COUNT[SI][BX]

答:执行结果为(BX)=1200H,(SI)=1000H,(AX)=3040H0

7.设假设内存单元DATA在数据段中偏移量为24C0H处,24C0H~24c3H单元中依次存放着55H、

66H、77H、88H。以卜儿条指令执行后,存放器AX、BX、CL、SLDS的值分别是多少?

MOVAX,DATA

LEASLDATA

MOVCL,[Sil

LDSBX,DATA

答:执行结果为(AX)=6655H,(BX)=6655H,(CL)=55H,(SI)=24C0H,(DS)=8877Ho

8.假设(AX)=26D3H,(CX)=7908H,CF=I,执行以下指令后,存放器AX、CX的值分别

是多少?CF=?OF=?

SALCH,1

RCRAX,CL

ROLAL,1

答:执行结果为(AX)=0A64CH,(CX)=OF2O8H,CF=OF=Oo

9.下面的程序执行后,DX、AX的值分别是多少?

;以X为首址的字单元中的数据依次为1234H、5678H

;以Y为首址的字单元中的数据依次为8765H、4321H

LEASI,X

LEADI,Y

MOVDX,[SI+2]

MOVAX,X

ADDAX,X

ADCDX,[SI+2|

CMPDX,[DI+2]

JLL2

CMPAX,Y

JLLI

JMPEXIT

LI:MOVAX,1

JMPEXIT

L2:MOVAX,2

EXIT:......

答:执行结果为(AX)=2,(DX)=0ACF0Ho

10.设VAR字单元的值为x,Fl字单元的值为y,试编程按以下要求给y赋值:

{2x>30

030>x>l

-2x<l

答:一种可能的程序段实现如下:

MOVAX,VAR;AX—x

CMPAX,30

JGPLUS2;x>3(),那么转PLUS2

CMPAX,1

JLMIN2;x<l,那么转MIN2

MOVF1,0;30>x>l,y=0

JMPGO

PLUS2:MOVFl,2;y=2

JMPGO

MIN2:MOVFl,-2;y=-2或OOFEH

GO:••••••;后续处理

简析:本例中并未说明VAR字节单元是带符号数还是无符号数,读者在使用判断转移指令时可

任意选用。假设当作带符号数,应使用JG、JL、JGE、JLE等指令,如参考程序;假设当作无符号

数,那么应使用JA、JB、JAE、JBE等指令。

第4章汇编语言程序设计

一、填空题

1.段定义伪指令语句用SEGMENT语句表示开始,以ENDS语句J表示结束。

2.ARRAYDW10DUP(5DUP(4DUP(20H,40H,60H))语句执行后共占1200字节存

储单元。

3.汇编语句中,一个过程有NEAR和FAR两种属性。NEAR属性表示主程序和子程序在同一个代

码段中,FAR属性表示主程序和子程序不在同一个代码段中。

4.DOS系统功能号应放在上止[_存放器中。

5.子程序乂称过程,它可以由PROC语句定义,由ENDP语句结束,属性可以是NEAR或

FARo

6.假设VAR为数据段中已定义的变量,那么指令MOVBX,OFFSETVAR中源操作数的寻址方

式是立即数寻址。

二、选择题

1.EXE文件产生在(D)之后。

A.汇编B.编辑C.用软件转换D.连接

2.变量定义的伪指令助记符有(ABCEF)。

A.DBB.DWC.DDD.DFE.DQEDT

3.主程序与子程序之间传递参数可通过(ABC)进行。

A.堆栈B.存储器单元C.通用存放器D.指令队列E.其他

4.计算机系统软件中的汇编程序是一种(C)。

A.汇编语言程序B.编辑程序

C.翻译程序D.将高级语言转换成汇编程序的程序

5.假设主程序段中数据段名为DATA,对数据段的初始化操作应为(B)。

A.MOVAX,DATAB.MOVAX,DATA

MOVES,AXMOVDS,AX

C.PUSHDSD.MOVDS,DATA

6.8086宏汇编源程序中,假设BUFF是字变量名,那么执行指令MOVBX,BUFF后,BX中的

值为BUFF单元的(A)。

A.字数据值B.变量类型值C.段基址D.段内偏移量

三、综合题

1.以下标号为什么是非法的?

(l)GET.DATA

(2)l_NUM

(3)TEST-DATA

(4)RET

(5)NEWITEM

答案:(I)因为Y只允许是标号的第一个字符

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

(3)不允许出现小

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

(5)不能有空格

2.数据和符号定义

AlDB?

A2DB8

KIEQU100

判断以下指令的正误,并说明错误指令的原因。

(1)MOVKI,AX

(2)MOVA2,AH

(3)CMPAl,A2

(4)MOVBX,KI

MOV[BX],DX

(5)KIEQU200

答:(1)错误。KI是符号,在此处相当于立即数100,故不能做目的操作数.

(2)正确。

(3)错误。ALA2都是字节变量,相当于两个存储器单元,故不能同时出现在一条指令中直

接进行比拟。

(4)正确。

(5)错误。用EQU定义的符号不能重新赋值,除非已用PURGE解除了原值。

3.假设数据段中有定义

NUM1EQU23H

NUM2DW0

那么指令MOVNUM2,NUMi的源、目操作数的寻让方式以及指令执行后NUM2+1单元的

内容分别是什么?

答:指令MOVNUM2,NUM1的源操作数使用立即数寻址,目的操作数使用直接寻址。指令执行后

NUM2+1单元的内容是0。

4.某数据段从物理地址03000H处开始,定义如下:

DSEGSEGMENT

ORG2000H

AlDD2DUP(7,1,?)

A2DB1()DUP10,4,3DUP⑵,5)

CNTEQU20H

A3DW100DUP(?)

DSEGENDS

请分别用分析运算符SEG、OFFSET、LENGTH、SIZE、TYPE求出Al、A2、A3的段基址、偏

移量、类型及它们的LENGTH、SIZEo

答:(SEGAl)=0300H,(OFFSETAl)=2000H,(TYPEAl)=4,

(LENGTHAl)=2,(SIZEAl)=2x3x4=24;

(SEGA2)=0300H,(OFFSETA2)=2023H,(TYPEA2)=1,

(LENGTHA2)=10,(SIZEA2)=10x6x1=60:

(SEGA3)=0300H,(OFFSETA3)=2054H,(TYPEA3)=2,

(LENGTHA3)=100,(SIZEA3)=100x2=200

5.下面两个数据段中偏移地址为10H和11H的两个存储单元中的数据一样吗?为什么?

DTSEGSEGMENTDTSEGSEGMENT

ORG10HORG10H

DATA1DB72HD/CTA1DW7204H

DB04HDTSEGENDS

DTSEGENDS

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

6.符号定义语句如下;

ALPHAEQU100

BETAEQU25

GAMMAEQU2

分别求以下各表达式的值。

(1)ALPHA*4GTBETA

(2)ALPHAMODGAMMA+BETA

(3)(BETA/3)LE5

(4.1ALPHAANDBETA

(5)GAMMAXOR(BETAEQ25)

答:(1)ALPHAMGTBETA=100*4GT25=OFFFFH

(2)ALPHAMODGAMMA+BETA=100MOD2+25=25

⑶(BETA/3)LE5=(25/3)LE5=0

(4)ALPHAANDBETA=100AND25=64H&19H=0

(5)GAMMAXOR(BETAEQ25)=2©(25EQ25)=OFFFDH

7.数据段定义如下:

DSEGSEGMENT

ORG6

VARIDB2,18

ORG$+2

VAR2DW569AH

CONTEQUS-VAR2

DB'AB,

DSEGENDS

用示意图说明该数据段的分配情况。

答:有关存储单元的内容如以卜.图所示。

8.判断以下说法是否正确,如有错,请说明原因并改正。

(1)伪指令在汇编过程中不会产生二进制代码。

(2)宏和过程的相同之处是都可用于简化源程序书写、精简目标代码。

(3)在计算机中,高级语言通常需要转换为汇编语言后才能执行。

(4)汇编语言程序上机一般包括编辑、汇编、链接和调试几个步骤。

答:m.正确.(2)错误°宏不能精简目标代码八

(3)错误。高级语言程序经编译或解释后直接转换为目标代码。

(4)正确。

9.执行以下指令后,AX存放器中的内容是什么?

TABLEDW10,20,30,40,50

ENTRYDW3

MOVBX,OFFSETTABLE

ADDBX,ENTRY

MOVAX,[BX]

答:(AX)=lE00H

10.指出以下程序中的错误:

STAKSGSEGMENT

DB100DUP(?)

STASGENDS

DTSEGSEGMENT

DATA1DB?

DTSEGEND

CDSEGSEGMENT

MAINPROCFAR

START:MOVDS.DATSEG

MOVAL,34H

ADDAL,4FH

MOVDATA,AL

STARTENDP

CDSEGENDS

END

答案:

改正后:

STAKSGSEGMENT

DB100DUP(?)

STAKSGENDS

DTSEGSEGMENT

DATADB?

DTSEGENDS

CDSEGSEGMENT

MAINPROCFAR

ASSUMECS:CDSEGDS:DTSEGSS:STAKSG

START:MOVAX,DTSEG

MOVDS.AX

MOVAL,34H

ADDAL,4FH

MOVDATA1,AL

MOVAH,4cH

1NT21H

MAINENDP

CDSEGENDS

ENDSTART

11.请写出上述两条指令执行后,BX存放器中的内容。

DATASEGMENT

TABLE_ADDRDW1234H

DATAENDS

I

I

I

MOVBX,TABLE_ADDR

LEABX,TABLE.ADDR

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

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

12.读下面程序,在其中的空处添上适当内容。该程序完成了什么功能?程序运行后,变量RS

的值是多少?

DATASEGMENT

BUFDB-13,24,5,-62

DB77,20,-7,145,0

CNTDB$-BUF

RSDB0

DATAENDS

STACKSEGMENTPARASTACK

DB256DUP(?)

STACKENDS

CODESEGMENT

ASSUMECS:CODE,DS:DATA,SS:STACK

START

温馨提示

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

评论

0/150

提交评论