《汇编语言》复习题集 期末复习资料

更新时间:2023-03-14 10:34:01 阅读量: 教育文库 文档下载

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

《汇编语言》复习题集

(注意:此习题集只限于同学们用来进行练习和检测,以便理解和掌握相关知识点。请不要背题目记答案,否则一进考场,你一定会后悔的哦!另外,版权所有,非授权不得公开)

一、选择题:

1.汇编语言源程序是指( )

A:系统提供的 MASM B:用户编写的 .ASM C:汇编生成的 .OBJ D:连接生成的 .EXE

2.汇编源程序出现语法错误的指令有 ( )

A:MOV [BX+SI],AL B: MOV AX,[BP+DI] C:MOV DS,AX D: MOV CS,AX

3.指令MOV 1000[DI][BP],AX 目标操作数的隐含段为( )。

A:数据段

B:堆栈段

C:代码段

D:附加段

4.MOV AX,ES:[2000H] 源操作数的寻址方式是:( )

A:立即寻址 B:直接寻址 C:变址寻址 D:基址寻址

5.指令mov ax, 10[SI]的源操作数字段的寻址方式是( )。

A:寄存器寻址

B:寄存器间接寻址

C:变址寻址 D:基址寻址

6.MOV AX,ES:COUNT[DI] 源操作数的寻址方式是:( )

A:基址寻址 B:立即寻址 C:变址寻址 D:基址变址寻址

7.MOV AX, [BP][DI]的源操作数的寻址方式是:( )

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

8.指令ADD CX,[DI+10H]中源操作数的寻址方式是 ( )

A:相对的变址寻址 B:基址寻址 C:变址寻址 D:基址变址寻址 9.十进制数-100的8位二进制数的补码为( )

A:1100100 B:10011101 C:10011011 D:10011100

10.下列四个寄存器中,哪个寄存器在程序设计中是不可省略的( A:CS B:DS C:ES D:SS

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

D:BX,BP,SI,DI

12.8086∕8088 CPU中可用作寄存器间址的寄存器是( )。

A:BX、SI、DI

B:BX、BP、SI、DI

C:BX、IP、SI、DI

D:BX,DX,SI,DI

13.指令MOV AX,COUNT[BX]完成的操作是( )。

A:从存储单元读出一个字送AX B:从存储单元读出一个字节送AX C:将AX中的一个字节写入存储单元 D:讲AX中的一个字写入存储单元

14.不能用MOV指令赋初值的段寄存器是( )

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

15.汇编语言中存储单元的属性不能是( )

)。

) 。 .

A:双字DWORD型 B:字WORD型 C:字节BYTE型 D:字符CHAR型

16.唯一代表存储空间中每个字节单元的地址是 ( )

A:段地址 B:偏移地址 C:物理地址 D:有效地址

17.在DEBUG下,修改寄存器CS的命令是( )

A:U CS B:R C:A CS D:R CS

18.查看用户程序中数据段第18号存储单元的DEBUG命令是( )

A:D DS:12 B:D DS:18 C:D DS:10010 D:D DS:13

19.下面哪一个命令是显示内存单元的内容?( )

A:D命令 B:E命令 C:U命令 D:R命令

20.能被计算机直接识别和执行的指令是:( )

A:符号指令 B:机器指令 C:伪指令 D:宏指令

21.若计算机字长16位,则无符号整数的范围用十六进制表示为 ( )

A:0000H~7FFFH B:8000H~FFFFH C:0001H~FFFFH D:0000H~FFFFH

22.已知(AX)=56H,(BX)=0ACH,(CX)=10AH执行下列程序后(AX)= ( )

PUSH AX PUSH BX

PUSH CX POP BX POP AX POP CX

A:5600H B:00ACH C:0056H D:010AH 23.顺序执行PUSH AX,PUSH BX和POP AX,POP BX两条指令,其功能等

同于 ( ) A:MOV BX,AX B:XCHG AX,BX

C:MOV AX,BX D:XCHG BL,AH 和XCHG BH,AL 24.SP栈指针内容是1200H,执行两条PUSH指令, 一条POP指令之后,SP的值是( )

A:11FCH B:11FEH C:1202H D:1204H

25.若栈顶的物理地址为20100H,当执行完指令PUSH AX后,栈顶的物理地址为( )。

(A)20102H (B)20101H (C)200FFH (D)200FEH 26.用来表示堆栈指针的寄存器是 ( ).

A:IP B:BP C:SP D:SS

27.在程序执行过程中, IP寄存器中始终保存的是( )

A:正在执行指令的首地址 B:上一条指令的首地址

C:需计算有效地址后才能确定地址 D:下一条指令的首地址

28.指令MOV DX, [BX][SI]的源操作数保存在( )

A:数据段 B:代码段

C:堆栈段 D:附加段

29.若(SI)=2300H,(BX)=1013H,(SS)=3593H,则SUB DX,[BP][SI]的有效地

址(即偏移地址)是 ( ) A:3213H B:3313H C:45A6H D:1013H

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

A:17500H B:16500H C:14500H D:13500H

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

A:17400H B:17000H C:15400H D:14500H

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

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

33.指令MOV AX,ES:[BX][SI]源操作数的物理地址是 ( )

A:SS×16+BX+SI B:DS×16+BX+SI C:ES×16+BX+SI D:CS×16+BX+SI

34.设物理地址(20FF0H)=40H,(20FF1H)=50H,(20FF2H)=60H,从地址20FF1中取出一个字的内容是( ).

A:5060H B:4050H C:6050H D:2050H

35.在机器内部操作中,CPU与存储器之间的任何信息交换使用的都是( )

A:物理地址

C:DF=1 D:DF=0 68.中断向量是指( )。

(A)中断向量表的地址 (B)中断处理子程序的入口地址 (C)被中断程序的入口地址 (D)被中断程序的断点地址

二、填空题:

1.能够将汇编指令转换成机器指令的翻译程序,我们称其为 。 2.一个CPU的寻址能力为16KB,那么它的地址总线宽度为 。 3.一个CPU的寻址能力为4GB,那么它的地址总线宽度为 。 4.在存储器中,数据和程序都是以 形式存放的。

5.有一数据存放在内存20000H单元中,现给定段地址为SA,若想用偏移地址寻到此单元,则SA应满足的条件是:最小为 ,最大为 。 6.在8086/8088系统中,存储器是分段的,每段最大长度是__ __字节,段内偏移地址从__ ____到__ ___。

7.在8086/8088CPU中,有许多寄存器,他们是通用寄存器:( ax )( bx )( cx )( dx );指针和变址寄存器:(sp )( bp )( si )(di );段寄存器:( cs )(ds )(ss )( es );指令指针:( ip )还有一个标志寄存器:( flags ),他们都是( 16 )位的。

8.在8086CPU中,有4个专门存放段地址的寄存器,称为段寄存器,请写出以下段寄存器的符号: 代码段寄存器:(cs ) 堆栈段寄存器:( ss )

数据段寄存器:( ds ) 附加段寄存器:( es )

9.CPU与外设间交换的信息有三种,它们是数据信息、控制信息和_______地址信息_____,这三种信息都是通过CPU的_____________________总线来传送的。

10.8086 CPU通过________寄存器和______寄存器能准确找到指令代码。 11.完成一个汇编语言程序的编制调试,通常需经过四个步骤:首先用编辑程序编出用户的源程序,然后通过运行汇编程序获得

程序(文件),接着运行连接装配程序,产生___ __ 程序(文件),最后通常使用 程序调试运行程序。

12.用二进制代码组成的计算机能直接识别的语言称为 机器语言 。用机器指令的助记符以及伪指令,宏指令表示的一种面向机器的语言称 汇编语言 ,用该语言编写的程序需经过 汇编程序 翻译,成为计算机能直接识别并执行的程序称 目标程序 。

13.汇编语言源程序的扩展名是__.ASM ____。 14.汇编语言目标程序的扩展名是_.OBJ _____。

15.汇编语言源程序不一定包含数据段、堆栈段,但必须包含 。 16.每个段都以符号___SEGMENT ___作为段的开始, 以语句___ ENDS ___作为段的结束。

17.伪指令“END 标号”中的“标号”指明了程序的__ ___。 18.循环结构的程序通常由 初值 ,设置循环体 和 循环控制 三部分组成。 19.指令MOV AX,[BX+SI+10H]源操作数寻址方式是 。 20.假设(SP)=0100H,(SS)=2000H,执行PUSH BP指令后,栈顶的物理地址

是___ ____.

21.设(AX)=AACCH,(BX)=1122H ,执行如下指令后:

PUSH A PUSH B POP A POP B 试回答:

①(AX)= ,(BX)= ② 执行前SP=100H,执行后SP=

22.已知AX=FF60H,执行下述指令

MOV DX,96H

XOR DH,0FFH ;XOR指令的功能: 实现两个操作数按位‘异或’运算,

结果送至目的操作数中.(异或:相异为真,相同为假.)

SBB AX,DX

后,AX= ,CF= .

MOV AX,[BP]的源操作数的物理地址为 。

23.在汇编语言中,一个标号和过程有NEAR和FAR两种属性。NEAR属性表明在 转移和调用,FAR属性表示在 转移和调用。 24.段属性就是定义标号的段起始地址,标号的段总是在__ ____寄存器中,偏移属性就是定义标号的偏移地址,它应安排在_____寄存器中。

25.判断无符号数运算是否溢出,应根据 标志位;而判断有符号数运算是否溢出,应根据 标志位。

26.指令操作数可以存放在指令中,也可以存放在CPU的寄存器中,大多数存放在存储器中,它们分别被称为 、 和 寻址方式。

27.调用程序与子程序之间的参数传递方法有三种,即堆栈法、寄存器法、存储单元。

28.用DW 1234H语句定义的一个字,如改用DB定义时,其语句是 。 29.在16位存储单元中能存储的最大无符号数为65535,能表示的有符号数的范围是 。

30.将AX中第4,5位清0的指令是 AND AX,0FFCFH ;将AX的低四位取反的指令是 XOR AX,0FH 31.写出下列程序段执行后AX的结果:

MOV AX,6262H ; AND AL, 0FH ADD AL, 30H OR AH, 30H OR AH, F0H

;AX= H ;AX= H ;AX= H ;AX= H

32.设寄存器AL、BL、CL中内容均为76H,执行下述指令

XOR AL,0FH ; AND BL,0FH OR CL,0FH

后,AL=______、BL=______,CL=______。

33.当执行MUL BX指令后,乘积的结果在( )中,其中一个乘数默认在( )中,另一个乘数在( )中。当执行DIV BX指令后,被除数在( )中,所得商在( )中,余数在( )中。

34.用一条语句实现AX的内容加1,要求不影响CF。(

35.已知AX=0A33AH,DX=0F0F0H,执行下述指令

AND AH,DL XOR AL,DH

NEG AH ;NEG指令是求补运算,操作功能是用0减去目标操作数,结果

送回原来的操作数。例:(AL)=44H,取补后,(AL)=0BCH(-44H)。

NOT AL ;完成对操作数按位求反运算(即0变1,1变0),结果返回原操作数. 后,AH= 60H ,AL= 35H

36.在程序中执行 MOV BX,[BP+2] 指令前,下列寄存器状态为: BP=0200H, CS=1000H, DS=2000H, SS=2300H,内存地址中数据如右表所示,指令执行后各寄存器数据为:BX= , BP= 。

37. 是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。 38.从内存地址0000H:0048H开始的连续4个单元中存放的内容为00H、38H,30H、50H,则该地址对应的中断类型码为_____________________,该中断对应的中断服务程序的入口地址为_____________________。

)。

三、简答题:

1.简述汇编语言源程序,经汇编连接后产生的程序在执行后正常返回DOS的两种方法。

2.简述上机运行汇编语言程序的过程。

3.段内调用和段间调用的异同点是什么?

4.串处理指令有什么特殊规定?

5.指出CALL指令与JMP指令的异同?

6.在寄存器间接寻址方式中,如果指令中没有具体指明段寄存器,段寄存器如何确定?如果要用某个段寄存器指出段地址,指令应如何表示?

7.指出下列MOV指令的源操作数的寻址方式。 MOV AX,1234H MOV AX,[BX]

=立即 =寄存器间接

MOV AX,TABLE ;TABLE是一个变量名。=直接 MOV AX,[1234H]

=直接

MOV AX,[BX+1234H] MOV AX,[BP][SI]

=基址 =基址变址

=基址变址

MOV AX,[BX+SI-1234H]

8.设(DS)=2000H,(BX)=0100H,(SS)=1000H,(BP)=0010H,(SI)=0002H。求下列每条指令源操作数的存储单元地址。 MOV AX,[1234H]

=21234H =20100H =2010AH =10010H =10012H

MOV AX,[BX] MOV AX,2000AH [BX] MOV AX,[BP] MOV AX,[BP][SI]

9.自内存0F00:0006开始的内存单元中存放着80 32 56 98 76 B5这六个十六进制数据,试分别写出0F00:0008的字节型数据,字型数据、双字型数据的值。 字节型:

( 56

) )

字型: ( 9856 双字型:

( B5769856)

10.已知:BX=1100H,BP=2312H,SI=1987H,DS=2000H,SS=0468H,CS=4B00H,指出下述指令中存储器操作数的有效地址和实际地址。

①MOV AL, [BX] ②MOV AH, [BP] ③MOV BH, CS:[SI] ④MOV DL, [SI+10H] ⑤MOV CH, [BP+20H] ⑥MOV CL, SS:[SI+50H] 有效地址 实际地址 ⑦MOV BL, DS:[BP+30H] ⑧MOV [BP+SI+30H],AH ⑨MOV [BX+SI-40H],AH ⑩MOV CS:[BX+SI],DH

11.若(SS)=2000H,(SP)=000AH,先执行将字数据1234H和5678H压入堆栈的操作,再执行弹出一个字数据的操作,试画出堆栈区及SP的内容变化过程示意图(标出存储单元的物理地址)。 答:

内容 堆栈地址 内容 堆栈地址 内容 堆栈地址 78H 20006H 56H 20007H 20006H 执行后SP-> 78H 20006H 20007H 20008H 20009H 2000AH 56H 20007H 34H 20008H 最后SP-> 34H 20008H 12H 20009H 2000AH 12H 20009H 2000AH 执行前SP-> 12.有关寄存器及存储单元的内容如下:

SS=2000H,BP=0100H,SI=0002H,存储单元的内容见习题12示意图。试说明下列各条指令执行后AX寄存器的内容。 ①MOV AX,1200H ②MOV AX,BP

地址 20100 20101 20102 20103 ┆ 21200 21201 21202 21203 内容 1AH 2BH 3CH 4DH ┆ 2AH 4CH B6H 89H ③MOV AX,[1200H] ④MOV AX,[BP] ⑤MOV AX,1100[BP] ⑥MOV AX,[BP][SI] ⑦MOV AX,1100[BP][SI]

习题12示意图

四、编程题:

1.编程,向内存0:210~0:24f依次传送数据0~63(3f)。

2. 编程,将内存fff0:00~fff0:2f单元中的数据复制到0:200~0:22f单元中。

3. 设当前DS的内容为2E00H,在数据段的偏移地址0100H单元内,含有一个内容为0AB10H和1100H的指针,它们是一个16位变量的偏移地址和段地址,试写出把该变量装入AX的指令序列(只需写出这部分程序指令序列)。

4.编写一个子程序,完成自然数1~100的求和运算。

5.将AX寄存器中的16位数分成4组,每组4位,然后把这4组数分别放在AL、BL、CL和DL中的最低4位。

6.下面程序段的功能是将数据0?9转换为对应的ASCII码。 试将空白处填上适当的指令。 VA DB 0,1,2,3,4,5,6,7,8,9 ASC DB 10 DUP(0) MOV SI, OFFSET VA MOV DI,OFFSET ASC (1) LOP: MOV AL,[SI] (2) MOV [DI], AL INC SI INC DI LOOP LOP

答案:(1)MOV CL,10 (2) OR AL,30H 或ADD AL,30H

7.程序如下,编写code段中的代码,用push指令将a段中的前8个字形数据逆序存储到b段中。

assume cs:code

a segment

dw 1,2,3,4,5,6,7,8 a ends

b segment

dw 0,0,0,0,0,0,0,0

b ends

code segment start:

????????????????(要完成的代码程序) code ends end start

8.编程,将datasg段中每个单词的前四个字母改为大写字母:

assume cs:codesg,ds:datasg,ss:stacksg stacksg segment dw 0,0,0,0,0,0,0,0 stacksg ends datasg segment db '1. display......' db '2. brows........' db '3. replace......' db '4. modify.......' datasg ends codesg segment start: …… codesg ends end start

9.编程:将data段中字符串转化为大写。 assume cs:code data segment

db 'conversation',0 ;(注意:这个是以0结尾的字符串) data ends

10.将data段中字符串全部转化为大写 assume cs:code

data segment //(注意:这些字符串是以0结尾的字符串) db ‘word',0 db ‘unix',0 db ‘wind',0 db ‘good',0 data ends

11. 编程:用串传送指令,将2000H段中的最后32个字符复制到data段中。 data segment db 32 dup (0) data ends

12. data段中的8个字节如下: data segment

db 8,11,8,1,8,5,63,38 data ends

(1)编程:统计data段中数值为8的字节的个数,用ax保存统计结果。 (2)编程:统计data段中数值大于8的字节的个数,用ax保存统计结果。

(3)编程:统计data段中数值小于8的字节的个数,用ax保存统计结果。

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

Top