汇编语言基础试题 下载本文

第一章 基本知识

一、单项选择题(共40分,每题2分)

1.若十进制数为132.75,则其十六进制数为(B) A.21.3 B.84.C

C.4.6 D.6

2.若[X补]=11111,则其十进制真值为(C)

A.-31 B.-15 C.-1 D.31

3.某定点整数64位,含1位符号位,补码表示,则其绝对值最大负数为 A.-263 B.-264

C.-(263-1) D.-(263-1) 4.原码乘法是(D)

A.用原码表示操作数,然后直接相乘

B.被乘数用原码表示,乘数取绝对值,然后相乘 C.乘数用原码表示,被乘数取绝对值,然后相乘 D.先取操作数绝对值相乘,符号位单独处理

5.在微机系统中分析并控制指令执行的部件是(C) A.寄存器 B.数据寄存器 C.CPU D.EU 6.已知X=76,则[X]补=(B) A.76H B.4CH C.0B4H D.0CCH 7.已知[X]补=80H, 则X=(D) A.80H B.0

C.0FFH D.-80H

8.已知[X]补=98H, 则[X]补/2=(A) A.0CCH B.4CH C.49H D.31H

9.已知X=78,Y=-83则[X+Y]补=(C) A.0F5H B.0A1H C.0FBH D.65H

10.在计算机的CPU中执行算术逻辑运算的部件是(A)

A.ALU B.PC

C.AL D.AR

11.将125转换成二进制数的结果(A) A.7DH B.7CH

C.7EH D.7BH

12.将93H看成一个组合BCD码,其结果是(B) A.10010101 B.10010011 C.10000011 D.10000001

13.能被计算机直接识别的语言是(C) A.C语言 B.汇编语言

C.机器语言 D.面向对象语言

A)( 14.第四代计算机的逻辑电路采用的是(D)。

A.电子管 B.晶体管

C.中小规模集成电路 D.大规模和超大规模集成电路 15.可以写入数据的内存储器是(B)。 A.ROM B.RAM

C.软盘 D.大规模和超大规模集成电路 16.掉电后存储信息消失的存储器是(B)。 A.ROM B.RAM C.软盘 D.硬盘

17.读写速度最慢的辅助存储器是(C)。 A.ROM B.RAM C.软盘 D.硬盘

18.二进制数(11010011)2转化成十六进制数是(B)。 A.11 B.C3

C.A6 D.BC

19.语言处理程序属于软件系统的(A)。 A.系统软件 B.应用软件 C.工具软件 D.防毒软件

20.微软WORD2000应属于软件系统的(B)。 A.系统软件 B.应用软件 C.工具软件 D.防毒软件

二、填空题:请将正确的内容填入括号内。(共20分,每题2分) 1.(13)10 = (15)8。 2.(35)10 = (23)16。

3.(15)10 = (1111)2。

4. 计算机的存储容量1KB = (1024)Byte。 5. 计算机的存储容量1MB = (1024)KB。 6. 计算机的存储容量1GB = (1024)MB。 7. 存储一个汉字需要磁盘空间(2)字节。

8. 存储一个1616点阵的汉字字模需要磁盘空间(32)字节。 9. 计算机系统包括(硬件)系统和(软件)系统两大部分。

10. 计算机主存储器包括(只读存储器(或ROM))和(随机存取存储器(或RAM))两类。

三、判断题(正确的画,错误的画) (共40分,每题2分) 1.计算机中所有带符号数都是以补码形式表示的。(√)

2.汇编语言和机器语言都是面向机器的语言,编制的程序都可以为机器直接识别和执行。(×)

3.补码加减运算时,符号位与数值一样参加运算。(√) 4.标准的ASCII码是用7位二进制数对字符进行编码的,最高位用来表示奇偶校验位。(√) 5.计算机的硬件系统由运算器、控制器、存储器、输入设备和输出设备等组成。 (√) 6.计算机的内存储器分为随机存储器(RAM)和只读存储器(ROM)两部分。(√) 7.对计算机进行管理和维护的软件应属于应用软件。(×)

8.用户自行编制的软件可称之为系统软件。(×)

9.程序设计语言分为机器语言、汇编语言和高级语言三大类。(√) 10.现在用户大多使用汇编语言开发自己的程序。(×) 11.用机器语言编写的计算机程序,使用的是八进制数。(×) 12.十进制数的11,在十六进制中仍可写成11。(×)

13.十进制数的8,写成二进制应该是1000。(√) 14.常用微机系统中的字符编码是ASCII码。(√)

15.一个微机有640KB内存,指的是内存容量为640K个字节。(√) 16.微机的一个字节应有八个二进制数,而每一个数称为一个字位。(√) 17.微机的中央处理器也叫用微处理器。(√)

18.微型计算机由主机和外部设备两大部分组成。(√) 19.微机的主机内包括微处理器和内存储器。(√)

20.内存储器的ROM是读写存储器,而RAM是只读存储器,用户不能写入信息。(×)

第二章 8088微处理器及其寻址方式

一、单项选择题(共45分,每题3分)

1.MOV AX,ES:[1000H] 源操作数的寻址方式是(B) A.立即寻址 B.直接寻址 C.变址寻址 D.基址寻址

2.MOV AX,ES:COUNT[DI] 源操作数的寻址方式是(C) A.基址寻址 B.立即寻址

C.变址寻址 D.基址变址寻址

3.MOV DX,COUNT[BP][DI]的源操作数的寻址方式是(D)

A.变址寻址 B.基址寻址 C.直接寻址 D.基址变址寻址

4.指令MOV BX,MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为(B)

A.17500H B.16500H

C.14500H D.13500H

5.指令MOV AX,COUNT[BX],若COUNT=0400H,SS=1200H,DS=1000H,BX=5000H,那么物理地址为(C)

A.17400H B.17000H

C.15400H D.14500H

6.指令MOV DX,DELTA[BX][SI],若DELTA=1300H,SS=7200H,DS=5400H,BX=0500H,SI=4000H,那么物理地址为(C)

A.6F300H B.77800H C.59800H D.78700H

7.唯一代表存储空间中每个字节单元地址的是(D) A.段地址 B.偏移地址

C.有效地址 D.物理地址

8.在8086中,存储器是分段组织,每段最大长度是(C) A.16KB B.32KB

C.64KB D.128KB

9.下列四组寄存器中,属于通用寄存器的是(A) A.AX,BX,CX,DX B.SP,BP,IP C.SI,DI,FLAGS

D.上属三者都是

10.下列寄存器中,程序不可见寄存器是(B)

A.CS B.IP C.SP D.BP

11.下列四组寄存器中,在段内寻址时可以提供偏移地址的寄存器组是(C) A.AX,BX,CX,DX B.BP,SP,IP,CS C.BX,BP,SI,DI D.BH,BL,CH,CL

12.8086/8088系统中,存储器是分段组织的,存储器物理地址计算式是(C)B A.段地址+偏移地址 B.段地址*10H+偏移地址 C.段地址*16H+偏移地址 D.段地址+10H*偏移地址 13.在标志寄存器中表示溢出的标志(C) A.AF B.CF C.OF D.SF 14.指令指针寄存器是(A) (A)IP (B)SP (C)BP (D)BX

15.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是(D)

(A)表示结果中含1的个数为偶数 (B)表示结果中含1的个数为奇数

(C)表示该数为偶数 (D)表示结果中低八位含1的个数为偶数

二、改错题(下列各小题均有错,请针对题意改正其错误或补充其不足;共9分,每题3分)

1.在寄存器间址方式中,指令指定的寄存器中存放的是操作数。 改为:

在寄存器间址方式中,指令指定的寄存器中存放的是操作数地址。

2.程序计数器PC的内容即现行指令代码 。 改为:

程序计数器PC的内容即现行指令地址。

3.若总线地址16位,则直接访存空间最大为1M。 改为:

若总线地址16位,则直接访存空间最大为64K。

三、指出下列指令所用到的寻址方式。(共21分,每题3分)

指令 目的操作数寻址方式 源操作数寻址方式 MOV AX,1000H 寄存器寻址 立即寻址

MOV AX,DS:[1000H] 寄存器寻址 直接寻址

MOV [BX],AL 寄存器间接寻址 寄存器寻址 MOV 5[BX][SI],AX 基址变址寻址 寄存器寻址 MOV [BP],BX 基址寻址 寄存器寻址 MOV AX,-10[DI] 寄存器寻址 变址寻址

MOV AX,[SI] 寄存器寻址 寄存器间接寻址

四、判断题(正确的画,错误的画)(共25分,每题5分) 1.DS中的内容就是数据段的段地址。(×) 2.8086中内存的地址使用十六进制数编制的。(√) 3.寄存器SP和BP都可以用来访问堆栈内容。(√) 4.溢出标志可以用来判断运算的结果是否产生溢出。(×)

5.8086CPU中所有的寄存器都既可作16位寄存器又可作8位寄存器使用。(×)

第三章 汇编程序的运行方式

一、单项选择题(共40分,每题8分)

1.在汇编语言程序中,对END语句的叙述正确的是(C)。

A.END语句是一可执行语句 B.END语句表示程序执行到此结束 C.END语句表示源程序到此结束 D.END语句在汇编后要产生机器码 2.把若干个模块连接起来成为可执行文件的系统程序是(B)

A.汇编程序 B.连接程序 C.机器语言程序 D.源代码程序

3.计算机能直接识别并执行的语言是(B) A.汇编语言 B.机器语言

C.高级语言 D.低级语言

4.将高级语言的程序翻译成机器码程序的实用程序是(A) A.编译程序 B.汇编程序 C.解释程序 D.目标程序

5.将汇编语言的程序翻译成机器码程序的实用程序是(B) A.编译程序 B.汇编程序 C.解释程序 D.目标程序

二、汇编语言源程序的上机操作过程?(10分) 答:汇编语言源程序的上机操作过程: 1.编辑源程序;

2.用masm程序汇编源程序; 3.用link程序连接目标程序; 4.用debug调试程序。

三、判断题(正确的画,错误的画)(共40分,每题8分) 1.DEBUG中R命令的功能是将数值填入指定范围。(×) 2.调试程序DEBUG中的T、P命令的功能没有区别。(×) 3.DEBUG只能调试程序,不能编写程序。(×)

4.结束DEBUG返回DOS的命令为Q。(√)

5.DEBUG中所使用的数默认为十进制数,对十六进制数需要加H。(×)

第四章 汇编程序的书写格式

一、单项选择题 (共60分,每题4分) 1.源程序结束语句为(C)

A.ENDP B.ENDS C.END MAIN D.END

2.SKY:MOV AL,20H中操作数为(D) A.MOV B.SKY C.AL或20H D.AL和20H 3.下列为不合法的标志符的是(B) A.AXYZ B.5SKY C.@ATT D.?ABC 4.下列地址表达式正确的是(C) A.[BX-SI] B.[BP-DI] C.[BX+2] D.[BP+BX] 5.NEAR标号的类型值为(B) A.2 B.-1

C.4 D.-2

6.组合类型中本段与其它段无逻辑关系,每段均有自己的基址的组合类型是(A)

A.NONE B.PUBLIC C.COMMON D.STACK

7.下面哪一个命令是显示内存单元的内容?(A) A.D命令 B.E命令

C.F命令 D.R命令

8.能被计算机直接识别和执行的指令是(B) A.符号指令 B.机器指令 C.伪指令 D.宏指令

9.取变量偏移属性的分析运算符是(A)

A.OFFSET B.TYPE C.SIZE D.SEG

10.分析运算符LENGTH只有用(C)定义的变量才有意义。 A.表达式 B.字符串

C.DUP D.疑问号 11.在段定义中,(B)是默认的定位类型 A.PAGE B.PARA C.WORD D.BYTE

12.汇编语言指令中唯一不可缺少的域是(B)

A.标号名字域 B.助记符域 C.操作数域 D.注释域

13.定义缓冲区BUF,保留100个字节存储空间的语句是(D)。

A.BUF DB 100 B.BUF DW 100

C.BUF DW 100 DUP(?) D.BUF DB 100 DUP(?)

14.汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(B)。

A.名字项 B.操作项

C.操作数项 D.注释项

15.使计算机执行某种操作的命令是(B) A.伪指令 B.指令 C.标号 D.助记符

二、判断题(正确的画,错误的画)(共40分,每题5分) 1.指令MOV AL,2000H是合法的。(×) 2.指令MOV CX,AL是合法的。(×) 3.指令MOV IP,BX是合法的。(×)

4.串操作指令中用DI作为目的变址寄存器时使用段寄存器ES。(√) 5.OFFSET的优先级低于AND。(×) 6.语句LENGTH=SIZE*TYPE是合法的。(×) 7.语句SKY DD ‘ABCD’是合法的。(×) 8.语句QEW DB ‘ASDF’是合法的。(√)

第五章 指令及分类

一、单项选择题 (共30分,每题5分)

1.MOV BUF[BX],AX该指令中目的操作数寻址方式是(C)。 A.寄存器 B.寄存器间接 C.基址变址 D.寄存器相对

2.若AX=1020H,BX=1200H,CF=1,则SBB AX,BX的执行结果为(C) A.0EF1FH B.0FEFFH C.0FE1FH D.0FE21H

3.若AX=2000H,CL=90H,则DIV CL执行后,AX=(A) A.8038H B.8039H

C.9138H D.8138H

4.若BL=83H,CF=1,则ADC BL,90H执行后,BL=(D) A.15H B.16H C.17H D.14H

5.若DX=1010H,则AND DX,DX的执行结果为(C) A.0000H B.1111H C.1010H D.FFFFH 6.换码指令的助记符是(C) A.XCHG B.LEAS

C.XLAT D.MOV

二、判断题(正确的画,错误的画)(共70分,每题5分)

1.8086/8088的指令都是多字节指令。 (×)

2.8086/8088的指令最大长度是十个字节。 (×) 3.CLC是单字节指令。(√)

4.8086/8088的指令从功能上可以分成六组。(√) 5.同一条汇编指令助记符汇编后的指令操作码都相同。(×)

6.当一条汇编指令翻译成代码指令时,由操作码决定代码指令的格式。(×) 7.NEG属于减法指令。(√) 8.TEST属于逻辑运算指令。(√)

9.MUL指令和IMUL指令功能完全相同。(×) 10.汇编语言中的字符串分为字节串和字串两种。(×) 11.所有的字符串操作指令均可以使用重复前缀指令。(√) 12.汇编语言中对无符号数和有符号数的判别指令是不同的。(√) 13.一条指令可能有多个助记符。(√) 14.LOOPE和LOOPZ的功能完全相同。(√)

第六章 数据传送指令

一、程序分析题(阅读程序段后给出其运行结果)(15分) 设(SP)=80H,(BX)=0FFH;(AX)=1 PUSH BX

ADD BX,AX XOR BX,AX PUSH BX POP CX

上述程序段运行后,(SP)=7EH,(CX)=0101H

二、单项选择题(共35分,每题5分) 1.堆栈指针SP的内容是(B)

A.栈顶单元内容 B.栈顶单元地址

C.栈底单元内容 D.栈底单元地址

2.VAR是数据段中定义的变量,指令MOV AX,VAR 源操作数的寻址方式是(B) A.立即寻址 B.直接寻址 C.相对寻址 D.寄存器寻址

3.已知(DS)=3000H,(SS)=2500H,(BX)=0100H,(BP)=0040H, 指令MOV AX,DS:[BP]源操作数的物理地址是(B)。 A.25040H B.30040H

C.25100H D.55040H

4.下列传送指令中,有语法错误的指令是(A)。 A.MOV CS,AX B.MOV DS,AX C.MOV ES,AX D.MOV SS,AX

5.与MOV BX,OFFSET VAR指令完全等效的指令是(D)。 A.MOV BX,VAR B.LDS BX,VAR C.LES BX,VAR D.LEA BX,VAR

6.MOV SP,3210H

PUSH AX执行上述指令序理后,SP寄存器的值是(B)。 A.3211H B.320EH C.320FH D.3212H

7.执行指令PUCH CX后堆栈指针SP自动(C) A.+1 B.不操作 C.-2 D.-1

三、简答题 (30分) 已知数据段定义如下: DATA SEGMENT VA DB 10H

VB DW 3*20

MSG DB ‘HELLO!’

COUNT EQU 15

BUF DW COUNT DUP(5,3 DUP(1,2),0) DATA ENDS 问题:

(1)执行MOV BX,0FFSET VA后,(BX)= (2)执行MOV CX,TYPE BUF后,(CX)= (3)用一条指令将字母‘O’取到AL中. (4)经汇编后,BUF占有的存储空间是字节 答:

(1)0

(2)2

(3)MOV AL, MSG+4 (4)240

四、执行下列指令语句,把执行结果填在空格中(20分) 已知(SS)=3000H (SP)=200H (AX)=785AH 先执行PUSH AX,再执行PUSH BX,此时 (SS)= ( )

(SP)= ( )

数12H存放的物理地址是( ) 答:

(SS)= (3000H) (SP)= (1FCH)

数12H存放的物理地址是(1FDH)

第七章 算术运算程序

一、单项选择题(共24分,每题2分)

1.十进制数运算调整指令AAS可以紧跟在(A)之后: BX)=1234H,

A.SBB B.DEC

C.CMP D.NEG

2.除法调整指令AAD是对(C)调整:

A.AX中组合的十进制被除数 B.AL中组合的十进制的商数 C.AX中未组合的十进制被除数 D.AL中未组合的十进制的商数

3.在多字节加减运算时,特别要注意标志(B)对运算的影响: A.AF B.CF

C.SF D.OF

4.设(DS)=8260H (DI)=3500H,指令DEC WORD PTR[DI]操作数的物理地址是(B) A.11760H B.85B00H C.86100H D.以上都不时 5.指令ADD ES:[DI],AX和存放在(B) A.寄存器 B.附加段 C.堆栈段 D.代码段

6.设VAR是数据段中定义的字节变量,指令MUL VAR乘积存放在(A) A.AX B.BX

C.CX D.DX

7.设(DH)=20H,执行NEG DH指令后,正确的结果是(C) A.(DH)=20H CF=1 B.(DH)=20H CF=0

C.(DH)=0E0H CF=0

D.(DH)=0E0H CF=1

8.设DS=8225H,DI=3942H,指令NEG BYTE PTR [DI]操作数的物理地址是(A)

A.85B92H B.86192H C.BB690H D.12169H

9.执行INC指令除对于SF.ZF有影响外,还要影响的标志位是(A) A.OF,AF,PF B.OF,AF,CF

C.OF,PF,CF D.AF,PF,CF

10.设DH=10H,执行NEG DH指令后,正确的结果是(D) A.DH=10H CF=1 B.DH=10H CF=0 C.DH=10H CF=0 D.DH=0F0H

11.执行除法指令后,影响的标志位是(D)

A.CF,OF B.SF,ZF

C.CF,OF,SF D.AF,CF,OF,PF,SF,ZF都不确定 12.执行下面指令序列后,结果是(A) MOV AL,82H CBW

A.AX=0FF82H B.AX=8082H C.AX=0082H D.AX=0F82H

二、判断题(正确的画,错误的画)(共6分,每题2分) 1.指令AAA必须紧跟在加法指令之后使用。(√) 2.INC指令之后可以使用加法调整指令。(×) 3.AAD指令放在除法指令之后。(×)

三、程序分析题(10分)

MOV AX,0 MOV BX,1 MOV CX,5

LOP:ADD AX,BX

ADD BX,2 LOOP LOP 问题:

(1)程序的功能是什么(可用算式表示)? (2)运行后,(AX)=? 答:

(1)1+3+5+7+9 (2)25

四、按要求编程(共40分,每题10分) 1.设 X.Y.Z.W为十六位有符号数编程计算: W←((X+Y*Z)/8)-Y除法余数丢弃 若ZF=1,程序转EQ;否则转NOT_EQ。 参考答案: MOV AX,Y

IMUL Z

MOV BX,DX MOV CX,AX MOV AX,X

CBW

ADD AX, CX ADC DX, BX MOV CX,8 IDIV CX SUB AX,Y MOV W,AX JZ EQ NOT_EQ:

2.编写一程序段,计算x2+y-5多项式的值。 说明:多项式存于AX中,x.y是无符号数。

数据说明:x DB 0CH y DB 06H 参考答案: MOV AL,x

MUL x

ADD AL,y ADC AH,0

SUB AX,5

3.设X,Y,Z,W存放16位带符号数,编程计算X*Y-Z的值并送到W 要求:写出有关指令语句。 参考答案: MOV AX,X IMUL Y SUB AX,Z SBB DX,0 MOV W,AX

五、执行下列指令语句,把执行结果填在空格中(共20分,每题10分) 1.已知(AL)=0FFH, (BL)=10H。执行MUL BL则 (AH)=( ) (AL)=( ) 答:

(AH)=(0FH) (AL)=(0F0H)

2.执行下列指令语句,把执行结果填在空格中。 已知(DS)=5000H,(BX)=0100H,(DI)=0002H,(50100H)=45H,(50101H)=68H,(50102H)=0A1H,(50103H)=14H

先执行MOV AX,[100H](AX)=( ); 再执行ADD AX,[BX+DI](AX)=( ),CF=( ),OF=( ) 答:

(AX)=(6845H)

(AX)=(7CE6H),CF=(0),OF=(0)

第八章 逻辑运算

一、单项选择题(共30分,每题5分)

1.下列指令执行后,不影响标志位的指令是(A) A.PUSH AX B.ADD DX,CX C.XOR AX,AX D.CMP AX,5

2.下列指令执行后,一定能使CF=0的指令是(B) A.NOT AX B.OR AX,AX

C.SUB BX,SI D.ROL AX,1

3.对寄存器AX中的值除以2正确的指令序列是(C) A.MOV AX,-51 SHR AX,1 B.MOV AX,-51 ROR AX,1 C.MOV AX,-51

SAR AX,1

D.以上都不是

4.下列指令执行后,ZF=1的指令是(A)。 A.MOV AX,0 B.OR AX,0 C.XOR AX,AX D.CMP AX,0

5.对寄存器AX的内容乘以4的正确指令序列是(B)。 A.SHR AX,1 SHR AX,1 B.SHL AX,1 SHL,AX,1 C.ROL AX,1 ROL AX,1 D.RCR AX,1 RCR AX,1

6.下面指令执行后,改变AL寄存器内容的指令是(D)。 A.TEST AL,02H B.OR AL,AL C.CMP AL,BL D.AND AL,BL

二、程序分析题(共40分,每题10分)

1.已知(AX)=3200H,(DX)=0A000H,执行下列程序段: NOT AX

NOT DX ADD AX,1 ADC DX,0 问题:

(1)程序执行后,(AX)=( )(DX)=( ) (2)程序功能是什么?

答: (1)(AX)=(0CE00H) (DX)=(5FFFH) (2)双字长数DX,AX求补

2.设(DX)=1234H MOV CL,8 ROR DX,CL AND DX,0FFH CMP DX,12H

上述程序段运行后,(Dx)=( ),ZF=( ) 答:

(DX)=(12H),ZF=(1)

3.已知(AX)=0FF60H,CF=1 MOV DX,96 XOR DH,0FFH SBB AX,DX

执行上述指令序列后(AX)=( ),CF=( ) 答:

(AX)=965FH,CF=(0)

4.有下列程序段 MOV AX,10 ADD AX,AX MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX

上述程序段执行后(AX)=( ),(BX)=( ) 答:

(AX)=00A0H,(BX)=(0020H)

三、程序填空(共10分,每题5分)

1.下列程序段将AX中值乘以9,请将程序填写完整 (1)__________ MOV CL,3 (2)____________

POP BX

ADD AX,BX 答:

(1)PUSH AX (2)SHL AX,CL

2.下列程序段求数组ARRAY的累加和。请将程序填写完整。 ARY DW 45H,68H,…………,0ABC1H,9600H;共10项 COUNT DW 10 (1)__________ MOV CX,COUNT XOR AX,AX

AGAIN:ADD AX,[SI] ADD SI,2

(2)____________

答:

(1)LEA SI,AKY (2)LOOP AGAIN

四、按要求编程(10分)

测试AL寄存器的D5和D0位,若同时为0,程序转向ZERO,执行AX减去BX;否则将AL清0,同时清CF和OF标志。写出程序段。 解:

TEST AL,00100001B JZ ZERO

SUB AX,AX

JMP STOP

ZERO:SUB AX,BX STOP:

五、执行下列指令语句,把执行结果填在空格中(10分)

已知(DS)=2500H (SI)=00A0H (250A0H)=01H (250A1H)=96H 执行ROL WORD PTR[SI],1则

(250A0H)=( ),(250A1H)=( ),CF=( ) 答:

(250A0H)=(03H) (250A1H)=(2CH) CF=(1)

第九章 分支程序 一、单项选择题(共20分,每题5分)

1.段内直接转移指令采用的寻址方式是(B) A.直接寻址 B.相对寻址 C.绝对寻址 D.间接寻址 2.下列指令中不等价的是(C)

A.JA和JNBE B.JG和JNLE C.JL和JNG D.JBE和JNA

3.下列指令中等价的是(C)

A.JC和JO B.JNC和JNO C.JP和JPE D.JA和JG 4.条件转移指令的转移范围(A)

A.-128 -- +127 B.-32768 -- +32767 C.0 -- +255 D.0 -- +65535

二、判断题(正确的画,错误的画)(共15分,每题5分)

1.无条件转移指令对标志位无影响,而条件转移指令对标志位有影响。(×) 2.间接转移指令都可以通过寄存器来寻址。(×)

3.段间间接转移指令中,低地址的字送IP,高地址的字送CS。(√)

三、程序分析题(共10分,每题5分) 1.执行下列程序: MOV AX,9B47H MOV BX,0B568H ADD AX,BX JNO L1 JNC L2

SUB AX,BX JNC L3 JNO L4

JMP SHORT L5

问:

(1)程序执行后,(AX)= ? (2)程序转向哪个标号? 答:(1)9B47H (2)L5

2.执行下列程序: MOV AX,0C100H MOV BX,8FC0H SUB AX,BX JNC L1

JNO L2

JMP SHORT L3 程序执行后,(AX)=( ),程序转向_________________ 答:(AX)=(3140H),L1

四、程序填空(共10分,每题5分)

1.设AX,BX。CX中的数是数带符号,下列程序求AX.BX.CX中的最小值,结果在AX中.请将程序填写完整。 CMP AX,BX (1)_________________ XCHG AX,BX

NEXT:CMP CX,AX

(2)___________________ XCHG AX,CX EXIT:

答:(1)JLE NEXT (2)JGE EXIT

2.下列程序测试DL寄存器D6和D2位。若同时为0,转ZERO,置AX为0,否则转NON_ZERO,置AX为1。 TEST DL,(1)_________________ JZ ZERO

NO ZERO:MOV AX,1 (2)___________________ ZERO:MOV AX,0

EXIT: 答:(1)01000100B (2)JMP NEXT

五、用分支结构完成下列程序:(20分)

在给定个数的数中寻找最大值,放至指定的存储单元。 参考程序:

DATA SEGMENT BUFFER DB 2,4,3,6,1,5 COUNT DW 6 MAX DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX

MOV CX, COUNT LEA BX, BUFFER MOV AX, [BX] INC BX DEC CX AGAIN: CMP AX, [BX] JGE NEXT MOV AX, [BX] INC BX NEXT: INC BX

LOOP AGAIN

CODE ENDS END START

六、编程序:(25分)

已知ARRAY DW 1200,-69H,798AH,………432BH;共10项 编程统计正数项个数存入PLUS单元中。 要求:程序完整,可上机调试 参考程序:

DATA SEGMENT

ARRAY DW 1200,-69H,798AH,~~~432BH PLUS DB ?

DATA SEGMENT CODE SEGMENT

ASSUME CS:CODE,DS:DATA BEGIN:MOV AX,DATA MOV DS,AX MOV CX,10 MOV DL,0 LEA SI,ARRAY NEXT: CMP [SI],0 JL P1 INC DL ADD SI,2 LOOP NEXT JMP EXIT P1: ADD SI,2 LOOP NEXT

EXIT: MOV PLUS,DL

MOV AH,4CH INT 21H CODE ENDS

END BEGIN

第十章 字符串操作

一、单项选择题(共30分,每题6分)

1.在MOVB指令中,其目的串的物理地址为(D)

A.DS*2*2*2*2+SI B.DS*2*2*2*2+DI

C.ES*2*2*2*2+SI D.ES*2*2*2*2+DI

2.在串指令REP MOVSB中,重复次数一定放在(C)寄存器中。 A.AX B.BX

C.CX D.DX

3.下面指令中,合理而有意义的指令是(D)

A.REP LODSB B.REP SCASB C.REP CMPSB D.REP MOVSB

4.串操作指令中,目标串操作数的段地址一定在(D)寄存器中。

A.CS B.SS C.DS D.ES

5.在程序状态字寄存器中,当方向标志DF位为0时,每次操作后使变址寄存器SI和DI(B)

A.减量 B.增量 C.保持不变 D.地址减1

二、判断题(正确的画,错误的画)(共10分,每题5分) 1.所有串操作指令的目标串的段地址均取自于段寄存器DS。(×) 2.串操作指令一般用CX存放长度。(√)

三、程序填空题(10分) 现有下列数据段:

DATA SEGMENT

S1 DB ‘ABCDEFGHIJKL’ COUNT EQU $-S1

BUF DB COUNT DUP(0)

DATA ENDS

下面程序段是实现把S1中所有字符逆向传送到BUF缓冲区(即S1中第一个字符送到BUF的最后一个单元,S1中最后一个字符送到BUF的第一个单元)。试把程序中所空缺的2条指令填上。

MOV SI,OFFSET BUF-1 MOV DI,OFFSET BUF MOV CX,COUNT (1)________________ L1: MOVSB

(2)________________

LOOP L1 参考答案: (1)CLD

(2)SUB SI,2 或

(1)STD

(2)ADD DI,2

四、编程序题(共50分,第1题20分,第2题30分)

1.定义一个数据区,它包含有23H,24H,25H和26H四个字符数据,把这个数据区复制20次,并显示出复制结果。(要求用字符串指令) 参考答案:

DATA SEGMENT PATTERN DB 23H,24H,25H,26H DISPLAY DB 80 DUP(‘ ’),‘$’ DATE ENDS CODE SEGMENT ┇

CLD

LEA SI,PATTERN LEA DI,DISPLAY MOV CX,80 REP MOVSB MOV AH,09H

LEA DX,DISPLAY INT 21H RET

CODE ENDS

2.内存自BUF单元开始的缓冲区连续存放着100个学生的英文分数,编程序统计其中90~100,60~89,60以下者各有多少人?并把结果连续存放到自RESUT开始的单元中,(要求用字符串指令,各段定义完整) 参考答案: DATA SEGMENT

BUF DB 40H,64H,51H… RESUT DB 3 DUP(0) DATA ENDS

STACK SEGMENT STACK DB 100 DUP(0) STACK ENDS

CODE SEGMENT

ASSUME DS∶DATA,ES∶DATA,SS∶STACK,CS∶CODE START PROC FAR PUSH DS

MOV AX,0

PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX

MOV、AX,STACK MOV SS,AX LEA SI,BUF MOV CX,100 CLD AO:LODSB CMP AL,5AH JL L60

INC [RESUT] JMP COM

L60: CMP AL,3CH JGE K8960

INC [RESUT+1] JMP COM

K8960: INC [RESUT+2] COM: LOOP AO

RET START ENDP CODE ENDS END START

第十一章 循环程序

一、单项选择题(共10分,每题5分)

1.循环指令LOOP AGAIN终止循环的条件是(C) A.(AX)=0 B.(BX)=0 C.(CX)=0 D.(DX)=0 2.循环指令LOOP NZ终止循环的条件是(B)。 A.CX=0,且ZF=0 B.CX=0,或ZF=1 C.CX≠0,且ZF=0 D.CX≠0,或ZF=1

二、程序分析题(10分)

DATA SEGMENT

S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS ┆

LEA SI,S9

LEA, DI,S9+1 MOV CX,5

LOP: MOV AL,[SI]

XCHG AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2

LOOP LOP

上述程序段运行后,S9开始的10个字节存储单元内容是什么? 答:S9 DB 1,0,3,2,5,4,7,6,9,8

三、用循环结构完成下列程序:(15分)

向存储器的十个连续单元写入1,2,3,4,5,6,7,8,9,10个数字。 参考答案:

DATA SEGMANT

BUFFER DB 10 DUP(?)

VAR1 DB 1,2,3,4,5,6,7,8,9,10 COUNT DB 10 DATA ENDS

CODE SEGMANT

ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX LEA DI, BUFFER

LEA SI, VAR1 MOV CH, 0

MOV CL, COUNT AGAIN:MOV AL, [DI]

MOV [SI], AL INC DI INC SI

LOOP AGAIN CODE ENDS

END START

四、编写一程序段统计数组ARY中负数的个数,并存入CONT单元中。(15分) 参考答案:

DATA SEGMENT

ARY DB 一1, 0, 3, 一6,7, 23,0,-50,3,1 CONT DB ? DATA ENDS MOV SI, 0 MOV BL, 0 MOV CX, 10 LOP:CMP ARY[SI], 0 JGE BIG INC BL

BIG:INC SI

LOOP LOP

MOV CONT, BL

五、编写一程序段,统计数据区BUF中0的个数,并存入RES单元。数据段为:(20分) DATA SEGMENT

BUF DB 0,5,0,3,2 RES DB ? DATA ENDS 参考答案: MOV CX,5

MOV SI,OFFSET BUF MOV BL,0

LOP:MOV AL,〔SI〕 CMP AL,0 JNE NEXT INC BL

NEXT:INC SI LOOP LOP

MOV RES,BL

六、编程序(30分)

在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。 DATA SEGMENT

BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0) DATA ENDS 参考程序:

DATA SEGMENT

BUF1 DW -56,24,54,-1,89,-8,---- BUF2 DW 45,-23,124,345,-265,---- SUM DW 10 DUP(0)

DATA ENDS

STACK1 SEGMENT PARA STACK DW 20H DUP(0)

STACK1 ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK1 START:MOV AX,DATA

MOV DS,AX MOV CX,10 LEA SI,BUF1

LEA DI,BUF2

LEA BX,SUM

NEXT:MOV AX,[SI] MOV DX,[DI] TEST AX,8000H

JE TDX

NEG AX

TDX:TEST DX,8000H JE ADDS

NEG DX

ADDS:ADD AX,DX MOV [BX],AX ADD SI,2 ADD DI,2 ADD BX,2 LOOP NEXT MOV AH,4CH INT 21H CODE ENDS END START

第十二章 过程

一、下面的程序段有错吗?若有,请指出错误。(25分) CRAY PROC PUSH AX

ADD AX,BX

RET ENDP CRAY 参考答案:

程序最后一行有错,应写成:

CRAY ENDP

二、判断题(正确的画,错误的画)(共15分,每题5分) 1.寄存器传递参数法适合于参数较多的情况。(×) 2.用赋值法编写子程序时,子程序内必须修改返回地址。(√) 3.RET N指令中,N可为任意值。(×)

三、程序分析题(阅读程序段后给出答案)(共20分,每题10分) 1.

MOV AL,0FH MOV BL,10H CALL SUB1

INC AL

DEC BL SUB1 PROC

ADD AL,BL XCHG AL,BL

RET

SUB1 ENDP

上述程序段运行后,(AL)=( ),(BL)=( )。 答:(AL)=(11H),(BL)=(1EH)。 2.

MOV AL,38H MOV BL,49H CALL SUBO INC AL DEC CL

SUBO PROC ADD AL,BL MOV CL,AL DAA RET

SUBO ENDP

上述程序段运行后,(AL)=( ),(CL)=( ) 答:(AL)=(88H),(CL)=(80H)

四、简答题(共10分,每题5分)

在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (2)执行段间返回RET指令时,执行的操作是: 答:

(1)执行段内返回:

栈顶内容→IP,SP+2→SP (2)执行段间返回:

栈顶内容→IP,SP+2→SP 栈顶内容→CS,SP+2→SP

五、编写子程序题(20分)

编写一个子程序,完成两个非压缩型BCD数(每个数均不大于99)的加法。两个入口参数分别在AX,BX中,结果仍放在AX中。若结果大于99,则CF置1。 参考答案: 子程序为:

ADD_BCD PROC PUSH CX MOV CH,AH

ADD AL,BL

AAA

XCHG AL,CH ADC AL,BH AAA

MOV AH,AL MOV AL,CH POP CX RET ADD_BCD ENDP

六、编程题(30分)

设在DAT单元存放一个-9~+9的字节数据,在SQRTAB数据区中存放了0~9的平方值,请用直接查表法编写一个子程序,在SQRTAB中查找出DAT单元中数据对应的平方值送SQR单元。要求子程序开始时必须利用堆栈保护用到的各寄存器,并在返回前恢复;主程序结构要书写完整(包括子程序的调用方式)(结果不必输出)。其中数据段如下: DATA SEGMENT DAT DB -6

SQRTAB DB 0,1,4,9,16,25,36,49,64,81 SQR DB ? DATA ENDS 参考答案:

DATA SEGMENT DAT DB -6

SQRTAB DB 0,1,4,9,16,25,36,47,64,81 SQR DB ?

DATA ENDS

STACK SEGMENT PARA STACK DW 20H DUP(?) STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX CALL SUBROT MOV AH,4CH INT 21H SUBROT PROC PUSH AX

PUSH BX

LEA BX,SQRTAB MOV AL,DAT

TEST AL,80H

JNS NEXT NEG AL NEXT: XLAT SQRTAB MOV SQR,AL

POP BX POP AX RET SUBROT ENDP CODE ENDS END SRART

第十三章 中断及中断处理程序

一、单项选择题(共25分,每题5分) 1.中断服务程序入口地址占用(A)个字节 A.4 B.6

C.2 D.1

2.INT 1AH指令执行的结果高位字存在(C)中 A.AX B.BX

C.CX D.DX

3.DOS系统功能调用的屏幕显示字符是(D)号调用 A.1 B.4 C.5 D.2

4.2BH DOS功能调用中,月份送给(A)寄存器 A.DH B.DL

C.AL D.AH

5.键盘中断调用(16H)的0号功能是将读入字符的ASCII码送入(B) A.AH B.AL C.BH D.BL

二、判断题(正确的画,错误的画)(共15分,每题5分) 1.IN AL,DX是将一个字节由输入端口传送至AL。(√) 2.所有中断过程均可用IRET指令退出。(√)

3.8号类型的中断向量在中断向量表中的地址是2*8。(×)

三、INT 21H的键盘输入功能1和功能8有什么区别?(5分) 答:二者不同点是功能1输入字符可回显,功能8输入字符不回显。

四、编写一个程序,接收从键盘输入的10个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。(25分) 加密表为;

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

DSEG SEGMENT

SCODE DB 7,5,9,1,3,6,8,0,2,4 BUFFER DB 10 DUP (?) DSEG ENDS

;--------------------------------------------------------------------

CSEG SEGMENT MAIN PROC FAR MOV AX,DSEG MOV DS,AX MOV SI,0

MOV CX,10 LEA BX,SCODE

INPUT: MOV AH,01 ; 键盘输入 INT 21H

AND AL,0FH ; ASCII→数字 XLAT ; 换码

MOV BUFFER[SI],AL ; 存入缓冲区 INC SI ; 修改地址指针

LOOP INPUT ; 输入下一个数字 MOV AX,4C00H ; 返回DOS INT 21H

MAIN ENDP CSEG ENDS END MAIN

五、写一段程序,显示如下格式的信息;(15分)

Try again, you have n starfighters left.

其中n为CX寄存器中的1-9之间的二进制数。 答:

MESSAGE DB ‘TRY AGAIN, YOU HAVE’ COUNT DB ‘N’

DB ‘ STARFIGHTERS LEFT.$’ ; … …

ADD CL,30H ;二进制数→ASCII MOV COUNT, CL ;存入COUNT LEA DX, MESSAGE ;字符串地址 MOV AH, 09 ;显示字符串 INT 21H ;DOS调用

六、编写程序,让屏幕上显示出信息\(mm / dd / yy)?\并响铃(响铃符为07),然后从键盘接收数据,并按要求的格式保存在date存储区中。(15分) 答:

MESS DB ‘WHAT IS THE DATE(MM / DD / YY)’, 07, ‘$’ DATE DB 10,0,10 DUP (‘ ‘) …

MOV AH, 09 ;显示字符串 LEA DX, MESS ;字符串地址 INT 21H

MOV AH, 0AH ;键盘输入 LEA DX, DATE ;缓冲区地址 INT 21H