汇编语言程序设计试题及答案合集

更新时间:2024-01-28 08:16:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《汇编语言程序设计试题及答案》合集 汇编语言程序设计试题及答案

1.对于有符号的数来说,下列哪个值最大(D) A:0F8H B:11010011B

C:82

D:123Q

2.下列有关汇编语言中标号的命名规则中,错误的是(D) A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符 C:?和$不能单独作为标号

D: .号不可位于标号首

3.8088/8086存储器分段,每个段不超过(D ) A.64K个字 C.1兆个字节

B.32K个字节 D.64K个字节

4.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式(B) A:寄存器寻址 C:变址寻址

B:相对基址变址寻址

D:基址变址寻址

5.若AX= - 15要得到AX=15应执行的指令是(A ) A.NEG AX C.INC AX

B.NOT AX D.DEC AX

6.8086/8088系统执行传送指令MOV时( A) A.不影响标志位 C.影响SF符号标志

B.影响DF方向标志 D.影响CF进位标志

7.若要求一个操作数中的若干位维持不变,若干位置?1?,可以使用(B) A:NOT

B:OR

C:AND

D:XOR

8.下列指令中段默认为堆栈段的是( C)

A.MOV AX,[BX+SI+10] B.ADD AX,ES:[SI] C.SUB [BX],[BP][DI] D. MOV DX,[1000H] 9.关于8086/8088微机系列,下列说法哪个是正确的(D) A:一个存储单元由16个二进制位组成,简称字。

B:当存储一个字数据时,低字节放高地址位,高字节放低地址位。 C:在内存空间中,可以无限分配段,且段的大小不受限制。 D:段与段之间可以邻接,也可以重叠。 10.下列关于堆栈的说法,错误的是(D) A:以?先入后出?为原则。

B:栈区最高地址单元的前一个单元为栈底。 C:运行中SP寄存器动态跟踪栈顶位置。 D:压栈和弹出都是以字节为单位。 11.表示过程定义结束的伪指令是( A) A.ENDP B.ENDS

C.END D.ENDM

12.BUF1 DB 3 DUP(0,2 DUP (1,2),3)

COUNT EQU $-BUF1 符号COUNT等价的值是( B)

A.6 B.18 C.16 D.9 13.下列标志位中,可以用来判断计算结果正负的是(B)

A:PF B:SF C:DF D:OF 14.下列指令正确的是( CD) A. MOV [100H], [BX] C. ADD V[BX], CX

B.MOV DS, ES D.MOV AX, 34H

C:SP

15.下列哪个寄存器是属于指针寄存器(C) A:SI B:DX D:ES

二、填空题 (每小题4 分,共 20 分)

1. 下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出)

FLD DW 10, -20, 30, -60, -71, 80, 79, 56 _LEA SI,FLD______ MOV CX, 8 XOR AX, AX

R1:__ADD AX ,[SI]_____ ADD SI, 2 LOOP R1 MOV CL, 8 IDIV CL HLT

2.MOV AX, 1090H SUB AX, 4AE0H JC L1 JO L2 JMP L3

上述程序执行后AX=___C5B0____,程序转向_____L1__ 3.假设寄存器AX=1234H,DX=0A000H MOV BX, 0 MOV CX, BX SUB CX, AX SBB BX, DX MOV AX, CX MOV DX, BX

上述程序段执行后AX=___0EDCCH____ ,DX=__5FFFH_____ 4.MOV AX, 234H MOV CL, 3 ROL AX, CL DEC AX MOV CX, 4 MUL CX

此段程序执行完后,(AX)= ___467CH____ , (CX)= _____4__

5.DA1 DB 83H,72H,61H,94H,5AH ┇

MOV CX,WORD PTR [DA1] AND CX,0FH MOV AL,[DA1+3] SHL AL,CL

上述指令序列执行后,AL=___0A0H____,CL=___03H____。

三、简答题 (每小题4 分,共 20 分)

1.如TABLE为数据段中0100单元的符号名,其中存放的内容为0FF00H,试问以下两条指令有什么区别?指令执行后,AX寄存器的内容是什么? MOV AX,TABLE MOV AX,OFFSET TABLE 2.对于下面的数据定义 TAB1 DW 10 DUP(?) TAB2 DB 10 DUP(?) TAB3 DB ‘1234’ ┇

MOV AX,SIZE TAB1 MOV BL,SIZE TAB2 MOV CL,SIZE TAB3

三个寄存器中值分别为多少?

4.已知某个人计算机0000:0080~0000:00B0区域的内容如下: 0000:0080

CC A1 C8 00 80 89 A8 98 65 43 35 23 12 45 C4 00

0000:0090 A4 78 98 56 90 00 00 78 49 03 28 B7 B8 9C A2 B8 0000:00A0 0000:00B0

CC A1 C3 00 80 89 A8 98 65 43 35 23 12 45 C4 00 2A 1B C8 04 00 33 11 23 DC 41 54 BB 90 45 33 01

试求执行软中断指令INT 23H时,系统将转移到哪里进入中断服务程序。 5.试计算逻辑地址4017:000A,4015:0002A和4010:0007A对应的物理地址。

这三个物理地址说明了什么问题?

四、编程题 (每小题30 分,共 30分)

1.试编制一程序,统计DT_W字数组中正数、负数和0的个数,并分别保存在C1,C2和C3变量中。

汇编语言程序设计试题及答案

一.

名词解释(本大题共5小题,每小题3分,共15分)试解释下列名词的含义。

1. 逻辑地址:逻辑地址由两个16位的地址分量构成,其中一个为段基值,另一个为偏移量,两个分量均为无符号数编码。物理地址=段基值×16+偏移量

2. 物理地址:CPU通过地址总线向外发送的20位地址,在访问内存单元前,CPU必须先将CPU内部的逻辑地址转换为物理地址。

3. 标志寄存器:标志寄存器(Flag Register)又称程序状态字(Program Status Word),

是8086/088中唯一按位操作的寄存器,该寄存器为16位,有效的标志位共9位。其中,CF,PF,AF,ZF,SF,OF为状态标志,用于反映最近一次影响标志位的算术或逻辑运

算中运算过程、运算结果的一些性质;TF,IF,DF为控制标志,用于控制CPU对某些特定事件的处理方式以及CPU的工作模式。

4. 存储器寻址方式:发生在指令的执行周期,需要在执行周期内单独启动总线操作来完成。

比寄存器寻址、立即数寻址速度都慢。 5. 补码:计算机系统内部用于表示带符号数的一种编码,正整数的补码为其真值本身,负整数的补码为其真值变反加1的结果。 二. 计算题(本大题共5小题,每小题4分,共20分)试按照各小题的要求给出计算结果。

1. 将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少? 解:二进制为 01100100B,十六进制为64H。 2. 假设(DS)=0B00H,(BX)=0210H,对于指令MOV DS:120H[BX],AL,其目的操作数

的物理地址为多少?

解:EA=(BX)+0120H=0330H,物理地址=(DS)*16+EA=B330H 3. 假设(BX)=0210H,(DI)=0060H,对于指令ADD DL,[BX][DI],其源操作数的偏移量为多少?

解:偏移量=(BX)+(DI)=0270H

4. 假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=? 解:(SP)=0060H – 5*2 =0060H -000AH = 0056H

5. 对于一个十进制数 – 65,其二进制补码表示形式为多少? 解:先求二进制真值-01000001,变反加一补码为10111111 三.

排错题(本大题共4小题,每小题5分,共20分)每小题列出了一条指令,判断

该指令有无语法错误,如果存在语法错误,请指出具体的错误原因,判断正确给2分,分析正确给3分,判断错误不给分。 1. PUSH 5588H 错误,操作数不能用立即数; 2. MOV DS, 1720H 错误,MOV指令不能对段寄存器直接传送立即数; 3. ADD AX, CL 4. AND AX,[DX] 四.

错误,寄存器长度不匹配; 错误,DX不用于存储器寻址。

程序分析题(本大题共6小题,每小题5分,共30分)每小题列出了一段小的程

序片段和相关存储单元的初始值,请按题目的要求分析各程序片段的运行结果。(寄存器中的内容请使用十六进制形式给出) 1. 阅读如下程序片段 MOV AL,4CH MOV BL,0B5H

ADD AL,BL

执行上述程序片段后,(AL)= 01H (1分),(BL)= 0B5H (1分), CF= 1 (1分),OF= 0 (1分),PF= 0 (1分) 2. 阅读如下程序片段 MOV AL,0F3H MOV DL,0C4H ADD AL,DL

AND AL,0FH

执行上述程序片段后,(AL)= 07H (1分),(AF)= 不确定 (1分), CF= 0 (1分),OF= 0 (1分),PF= 0 (1分) 3. 阅读如下程序片段 MOV AL,7EH MOV CL,04H ROL AL,CL

执行上述程序片段后,(AL)= 0F9H (2分),(CL)= 04H (1分), CF= 1 (1分),OF= 无意义 (1分) 4. 阅读如下程序片段 MOV AX,0632H MOV BX,0C202H SUB AX,BX

INC AX

执行上述程序片段后,(AX)= 4431H (2分),(CF)= 1 (2分), OF= 0 (1分)

5. 阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)

=28H MOV BX,0024H LEA BX,[BX] OR BX,0 ADC BX,[BX]

执行上述程序片段后,(BX)= 287AH (3分),(CF)= 0 (2分), OF= 0 (1分)

6. 阅读如下程序片段,假设(SP)=0064H MOV AX,0001H MOV BX,0002H PUSH AX PUSH BX

POP AX POP BX

执行上述程序片段后,(AX)= 0002H (2分),(BX)= 0001H (2分),

(SP)= 0064H (1分)

五. 程序设计题(本大题共2小题,第一小题7分,第二小题8分,共15分) 1. 试编写一程序片段,实现BL高4位与低4位相互交换(7分) 解:MOV CL,4; ROL BL,CL 2. 试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/ 2的功能(AX中的数据

理解为补码)(8分) 解:MOV BX,AX MOV CX,2

SAL AX,CX ADD AX,BX ADD AX,14 SAR AX,1

汇编语言程序设计试题及答案

六.

名词解释(本大题共5小题,每小题3分,共15分)试解释下列名词的含义。

6. 寄存器:计算机系统内,位于CPU内部的存储单元,CPU访问此类存储单元不需要使用总线。

7. 物理地址:CPU通过地址总线向外发送的20位地址,在访问内存单元前,CPU必须先将CPU内部的逻辑地址转换为物理地址。

8. 段基值:逻辑地址的一个组成部分,用于指示一个段在内存中的起始地址。

9. 寻址方式:指令获取操作数的方式。 10. 补码:计算机系统内部用于表示带符号数的一种编码,正整数的补码为其真值本

身,负整数的补码为其真值变反加1的结果。

七.

6. 将十进制数100分别转换为二进制、十六进制数,它们的表示形式分别为多少?

答案:二进制为 01100100B,十六进制为64H

7. 假设(DS)=0C00H,(BX)=0210H,对于指令MOV DS:100H[BX],AL,其目的操作数

的物理地址为多少?

答案:EA = (BX)+0100H = 0310H,物理地址 = (DS)*16 + EA = 0C000H + 0310H = 0C310H

8. 假设(BX)=0100H,(SI)=0020H,对于指令ADD DL,[BX][SI],其源操作数的偏移

量为多少?

计算题(本大题共5小题,每小题4分,共20分)试按照各小题的要求给出计算

结果。

答案:EA = (BX)+(SI)+ 0 = 0120H

9. 假设当前(SP)=0060H,连续执行5条PUSH指令后,(SP)=?

答案:每执行一条PUSH指令,(SP)被减2,因此执行5条PUSH指令后,(SP)=0060H – 5*2 =0060H -000AH = 0056H 10. 八.

排错题(本大题共4小题,每小题5分,共20分)每小题列出了一条指令,判断该指令有无语法错误,如果存在语法错误,请指出具体的错误原因,判断正确给2分,分析正确给3分,判断错误不给分。

5. MOV CS, 0600H

参考答案:错误,不能使用MOV指令传递立即数给CS

6. PUSH 074CH

参考答案:错误,单操作数指令不能使用立即数

7. ADD AX, CL

参考答案:错误,寄存器长度不匹配

8. OR BX,[CX]

参考答案:错误,CX不能用于存储器寻址

九. 程序分析题(本大题共6小题,每小题5分,共30分)每小题列出了一段小的程

序片段和相关存储单元的初始值,请按题目的要求分析各程序片段的运行结果。(寄存

器中的内容请使用十六进制形式给出)

7. 阅读如下程序片段

MOV AL,4CH MOV BL,86H ADD AL,BL

执行上述程序片段后,(AL)= 0D2H (1分),(BL)= 86H (1分), CF= 0 (1分),OF= 0 (1分),PF= 1 (1分)

8. 阅读如下程序片段

对于一个十进制数 – 80,其二进制补码表示形式为多少?

答案:首先求得二进制真值为 – 01010000B,负数补码为变反加1的结果,即 10110000B

MOV AL,0F3H MOV DL,0C4H ADD AL,DL AND AL,0FH

执行上述程序片段后,(AL)= 07H (1分),(AF)= 不确定 (1分), CF= 0 (1分),OF= 0 (1分),PF= 0 (1分)

注意:逻辑运算指令中,除NOT指令外,CF、OF均置0,AF为不确定

9. 阅读如下程序片段

MOV AL,6FH MOV CL,04H ROL AL,CL

执行上述程序片段后,(AL)= 0F6H (2分),(CL)= 04H (1分), CF= 0 (1分),OF= 不确定 (1分)

注意:移位指令中,当指令的移位次数大于1时,OF为不确定 10. 阅读如下程序片段

MOV AX,0632H MOV BX,0C202H SUB AL,BL SBB AH,BH INC AX

执行上述程序片段后,(AX)= 4431H (2分),(CF)= 1 (2分), OF= 0 (1分)

注意:INC指令不影响CF标志位 11.

阅读如下程序片段,假设(DS)=0100H,字节单元(01024H)=56H,字节单元(01025H)

=28H

MOV BX,0024H LEA BX,[BX] AND BX,0FFH

ADC BX,[BX]

执行上述程序片段后,(BX)= 287AH (3分),(CF)= 0 (2分),

OF= 0 (1分)

12. 阅读如下程序片段,假设(SP)=0064H

MOV AX,0001H MOV BX,0002H PUSH AX PUSH BX POP AX POP BX

执行上述程序片段后,(AX)= 0002H (2分),(BX)= 0001H (2分), (SP)= 0064H (1分) 十.

程序设计题(本大题共3小题,每小题5分,共15分)(注:不是唯一答案)

3. 试编写一程序片段,实现BL高4位与低4位相互交换(5分)

参考解答: MOV CL, 4 ROL BL, CL

4. 试编写一程序片段,不使用乘除法指令,实现((AX)*5+14)/ 2的功能(AX中的数据

理解为补码)(5分)

参考解答: MOV BX, AX MOV CL, 2 SAL AX, CL ADD AX, BX ADD AX, 14 SAR AX, 1

5. 试编写一完整程序,实现88242567H与0A435C218H两个32位无符号数相加的功能。(要

求编写完整源程序,含程序框架)(5分)

参考解答: DATA SEGMENT VAR1 DD 88242567H VAR2 DD 0A435C218H VAR3 DD ? DATA ENDS

STACK1 SEGMENT STACK

DW 40H DUP(0) STACK1 ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK1 BEGIN: MOV AX, DATA MOV DS, AX MOV AX, VAR1 ADD AX, VAR2 MOV VAR3, AX MOV AX, VAR1+2 ADC AX, VAR2+2 MOV VAR3+2, AX MOV AH, 4CH INT 21H CODE ENDS END BEGIN

STACK1 SEGMENT STACK

DW 40H DUP(0) STACK1 ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK1 BEGIN: MOV AX, DATA MOV DS, AX MOV AX, VAR1 ADD AX, VAR2 MOV VAR3, AX MOV AX, VAR1+2 ADC AX, VAR2+2 MOV VAR3+2, AX MOV AH, 4CH INT 21H CODE ENDS END BEGIN

本文来源:https://www.bwwdw.com/article/0nlw.html

Top