汇编语言题库及部分答案

更新时间:2024-04-04 23:53:01 阅读量: 综合文库 文档下载

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

一、单项选择题

1、在下列的选项中,能够组成计算机系统的是(A )。

A.硬件系统和软件系统 B.CPU、存储器、输入/输出设备 C.操作系统、各种语言 D.系统软件和应用软件

2、汇编语言属于( B )。

A.用户软件 B.系统软件 C.高级语言 D.机器语言

3、汇编语言源程序经汇编程序汇编后产生的文件的扩展名是(B )。

A.EXE B.OBJ C.ASM D.LST

4、汇编语言的什么文件经链接(LINK)后产生可执行文件?(D)

A.ASM B.EXE C.LST D.OBJ

5、中央处理器CPU是由(D )组成的。

A.运算器 B.控制器 C.寄存器组 D.前三者

6、IBM PC机的DOS是属于( B )。

A.用户软件 B.系统软件 C.系统硬件 D.一种语言

7、汇编语言源程序是( A )程序。

A.不可直接执行的 B.可直接执行的

C.经汇编程序汇编后就可执行的 D.经连接后就可直接执行的

8、8086/8088 CPU的寄存器组中,8位的寄存器共有(C )个。

A.4 B.6 C.8 D.10

9、8086/8088 CPU的寄存器组中,16位的寄存器共有(D )个。

A.10 B.12 C.13 D.14

10、8086/8088 CPU执行算术运算时PSW共有( C )个标志位会受影响。

A.4 B.5 C.6 D.7

11、在程序执行过程中,IP寄存器始终保存的是(B )。

A.上一条指令的首地址 B.本条指令的首地址。

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

12、IBM PC机的存储器可分( D )个段。

A.4 B.256 C.512 D.65536 13、当使用BP作编程地址时,此时使用的是(D )段。 A.CS B.DS C.ES D.SS

14、如果指令的运算结果为0,则( C )标志位为1。

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

15、如果指令的运算结果中有奇数个1,则(A )标志位为0。

A.PF B.CF C.OF D.SF

16、IBM PC机的内存是按(B )是编址的。

A.位 B.字节 C.字 D.双字

17、存储器的一个字节表示(A )位。

A.8 B.16 C.32 D.64

18、如果某个字变量的数据存放在奇地址单元,则8086/8088 CPU读写该变量时需要

( B )个读写周期。

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

19、在机器内部操作中,CPU与存储器之间的任何信息交换使用的都是( B )地址。

A.逻辑 B.物理 C.有效 D.相对

20、一个16位相对位移的范围是( C )。

A.0~65535 B.0000H~FFFFH C.8000H~7FFFH D.8000H~FFFFH

21、物理地址的形成过程是将段地址左移( C )位加偏移地址。

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

22、如果某一存储单元的逻辑地址为236FH:1000H。则物理地址为(D )。

A.1236FH B.336FH C.336F0H D.246F0H

23、如果内存的某一单元的物理地址为12345H。则它的逻辑地址为( C ):0345H。

A.0012H B.12000H C.1200H D.0120H

24、如果一个字变量中存放16个字,该字变量的起始地址为1000H:2000H,则该字

变量数据区中的最末一个字单元的物理地址为( C )。

A.1201FH B.12000H C.1201EH D.12020H

25、设22000H、22001H单元分别存放的数据为12H、34H,若要读取22000H字

单元中的数据,此时读出的数据是( C )。

A.12H B.34H C.3412H D.1234H

26、如果数据存放在DI的内容为偏移地址的数据段中,设DS=3624H,DI=2200H,

则此存储单元的物理地址为( A )。

A.38440H B.58240H C.25624H D.58240H

27、一般的外部设备接口电路中的状态寄存器是用来存放外设或接口电路的( C )信息。

A.数据 B.控制 C.状态 D.前三者

28、下列叙述正确的是( B )。

A.不同类型的机器字长是一样的 B.一个字节有8位二进制数

C.各种不同的机器指令系统都是一样的 D.机器指令都是8位的

29、下列叙述正确的是( D )。

A.8088 CPU的内部数据总线是8位的,外部数据总线是8位的 B.8088 CPU的内部数据总线是16位的,外部数据总线是16位的 C.8086 CPU的内部数据总线是8位的,外部数据总线是8位的 D.8086 CPU的内部数据总线是16位的,外部数据总线是16位的

30、下列叙述正确的是( A )。

A.机器指令是可执行指令 B.汇编语言源程序可直接执行 C.汇编语言目标程序可直接执行 D.高级语言程序可直接执行 二、多项选择题

1、中央处理器CPU是由(ABC )组成的。

A.运算器 B.控制器 C.寄存器组 D.存储器

2、下列寄存器中属于段寄存器的有( CD )。

A.SI B.DI C.SS D.ES

3、下列属于系统软件的有( ABCD )。

A.操作系统 B.汇编语言 C.高级语言 D.编译程序

4、下列的16位寄存器中能够用2个8位寄存器来表示的有(BD )。

A.SI B.AX C.BP D.BX

5、逻辑地址是由( AC )组成的。

A.段地址 B.物理地址 C.偏移地址 D.实际地址

6、在下列标志位中,不能根据运算结果置位/复位的标志位有( AC )。

A.IF B.PF C.TF D.OF

7、在下列的标志位中,够能根据运算结果置位/复位的标志位有( ABC )。

A.ZF B.PF C.DF D.SF

8、在下列的逻辑地址中,用来表示同一个物理地址3240AH的有( ACD )。

A.3040H:200AH B.240AH:3000H C.3200H:040AH D.3000H:240AH

9、在下列文件中,能够在计算机上直接运行的有( AC )。

A.EXE文件 B.COM文件 C.OBJ文件 D.BAT文件

10、在外部设备接口电路中,一般有( ABD )。

A.数据寄存器 B.状态寄存器 C.标志寄存器 D.控制寄存器 三、填空题

1、中央处理器CPU包括___运算器____,__控制器_____和内部可编程的___寄存器组_

___。

2、计算机的硬件系统包括_CPU______,___存储器____和输入/输出子系统三个主要组

成部分。

3、汇编语言是属于__系统_____软件。

4、汇编语言源程序必须经过____汇编程序汇编___后再___连接____才能产生__可执行(E

XE)_____文件。

5、装入程序的作用是把要执行的___程序____和库文件或其它已翻译过的__子程序____

连接在一起形成机器能__执行_____的程序。

6、装入程序的作用是将程序从__外存储器_____传送到___内存____。

7、在PC机中,一些简单的汇编语言可以通过___调试程序____来建立、修改和执行。 8、操作系统是属于__系统_____软件。 9、调试程序是属于__系统_____软件。

10、用汇编语言编写的图像显示软件属于____用户(应用)___软件。

11、8086/8088 CPU的地址有__20____位。可寻址的内存地址空间是____1MB___。 12、8086/8088 CPU有___4___个段寄存器。

13、在读取下一条指令时,___CS____中的内容为作为该指令的段地址,__ IP_____

中的内容作为该指令的偏移地址。

14、当两个无符号数的字节相加时,其结果超过__255_____时就将CF置1。 15、当两个有符号数的字节相加时,其结果超过_+127~-128______时就将OF置1。 16、若运算的结果为负数,则SF为___1____。 17、IBM PC机的存储器是按___字节____编址的。

18、若某双字变量中存放两个数据,它占用___8____个存储单元。

19、在8086/8088 CPU的微机中,CPU访问奇地址字单元需__2_____个内存读写周

期,访问偶地址字单元需_____1__个内存读写周期。

20、IBM PC机的存储器按段划分,每个段的大小可在__64KB____范围内选取任意个_

___字节__数。

21、IBM PC机的1MB内存空间最多可分为____64K___个段。

22、逻辑地址是由___段地址____和___偏移地址____组成的,它可以形成20位的物理

地址。

23、形成内存物理地址的过程是将__段地址_____左移__4_____位加 偏移地址 。 24、某微机的字长为32位,一个字需占用内存___4____个字节单元。

25、若某存储单元的逻辑地址为1200H:3400H,则该存储单元的物理地址为__15400

H_____。

26、IBM PC机可寻址的I/O端口地址有__64K_____,共使用__16_____条地址线。 27、若要将字1234H存放在以10000H开始的存储单元之中,则10000H=__34H__

___,10001H=___12H____。

28、若要将双字12345678H存放在20000H开始的存储单元之中,则20002H=___

_34H___。

29、外设与接口电路中的控制寄存器中的内容是由__CPU_____送来的。

30、外设与主机传递信息是通过外设接口电路实现的。一般的接口电路中有__数据寄存器

_____、__控制寄存器____和__状态寄存器_____三种不同类型的寄存器。

31、压缩型BCD码一个字节能表示___2____位十进制数,非压缩型BCD码一个字节

能表示___1___位十进制数。

32、辅助进位位AF主要是用于对__十进制_____数据进行算术的调整。

四、简答题

1、IBM PC微型计算机一般采用什么总线结构形式?这种总线结构将那几个主要部件连

接在一起构成微型计算机的硬件系统?

2、8086/8088 CPU为什么只能寻址1MB的内存空间? 3、IBM PC机的存储器为什么要分段?怎样采用分段寻址?

4、一个8位数能表示的最大值和最小值是多少?一个16位数能表示的最大值和最小值是

多少?

5、如何实现ASCII码数字字符与BCD码之间的相互转换? 6、简述存储器的逻辑地址、物理地址和有效地址。 7、堆栈操作的原则是什么?堆栈操作的过程是怎样进行的? 8、在8086/8088系统中,内存的逻辑地址是由哪两部分组成的? 9、下列操作可使用哪些寄存器? (1)加法和减法。 (2)循环计数。

(3)乘法和除法。

(4)指示程序已执行到哪条指令的地址。 (5)指示当前从堆栈中弹出数据的地址。 (6)表示运算结果为零。

11、设SS=1200H,堆栈压入10个字节后,SP=00F6H。请指出堆栈底部字单元的物理地址,堆栈顶部字单元的物理地址。

12、设有一个30个字的数据区,它的起始地址是2000H:3000H,请给出这个数据区

的首、末字单元的物理地址。 一.单项选择题

1.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8]的源操作有效地址为(B )。 A.5000H B.5008H C.23008H D.32008H

2.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理址为( A )。

A.13000H B.23000H C.33000H D. 3000H

3.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为( B )。

A.20200H B.30200H C.50200H D.200H 4.指令MOV MEM[BX],AX中的MEM是( C )。 A.原码 B.反码 C.补码 D.移码 5.用来作为寄存器间接寻址的寄存器有( D )个。 A.8 B.6 C.5 D.4

6.指令MOV [BX+SI],AL中的目的操作数使用( B )段寄存器。 A.CS B.DS C.SS D.ES

7.指令MOV BX,[BP+5]中的源操作数使用( C )段寄存器。 A.CS B.DS C.SS D.ES 8.段内间接寻址只改变( B )中的内容。 A.CS B.IP C.CS和IP D.PSW 9.段间间接寻址只改变( C )中的内容。 A.CS B.IP C.CS和IP D.PSW 10.下述指令中不改变PSW的指令是( A )。 A.MOV AX,BX B.AND AL,0FH C.SHR BX,CL D.ADD AL,BL

11.下述指令中不影响CF的指令是( B )。 A.SHL AL,1 B.INC CX C.ADD [BX],AL D.SUB AX,BX

12.两个整数补码9CH和7AH相加运算后,会产生( B )。 A.无溢出且无进位 B.无溢出但有进位 C.有溢出且有进位 D.有溢出但无进位 13.指令JMP WORD PTR [BX]属于(B )寻址。 A.段内直接 B.段内间接 C.段间直接 D.段间间接 14.指令MOV AX,[BX+SI+8]的源操作数属于( D )寻址。 A.直接 B.寄存器相对 C.基址变址 D. 相对基址变址 15.指令( A )不改变CF的内容。 A.DEC AL B.ADD AX,CX C.SUB [BX],CL D.SBB AL,DL

16.十进制数字74所对应的压缩型BCD码的形式是( B )。 A.74 B.74H C.4AH D.4A

17.十进制数字85所对应的非压缩型BCD码的形式是( D )。 A.0085 B.0085H C.0805 D.0805H 18.设AL=67H,执行―CMP AL,76H‖后,AL=( C )。 A.76H B.0DFH C.67H D.00

19.设AL=65H,BL=29H,执行下列指令后,AL=( C )。 ADD AL,BL DAA

A.8EH B.94 C.94H D.8E 20.压栈操作是( B )位数的操作。

A.8 B.16 C.32 D.任意

21.执行IMUL指令时,如果乘积的高位部分不是低位部分的符号扩展,则( D )。 A.OF=0、CF=0 B.OF=0、CF=1 C.OF=1、CF=0 D.OF=1、CF=1 22.设AX=3762H,CL=5,执行―SHR AX,CL‖后,AX=( B )。 A.0376H B.01BBH C.01BB D.0376

23.若要在BUF缓冲区中寻找与AL中不相等的数据,应使用( C)SCASB串操作指令。 A.REPNE B.REP C.REPE D.REPNZ

24.如果―JNC L‖指令的操作码放在0040H,转移后在0020H处取下一条指令的操

作码,那么该条指令的位移量是( C )。

A.20H B.1EH C.0DEH D.0E0H

25.如果―JA P‖指令的操作码放在0050H, 该指令的位移量为34H,执行完此条指 令转移到取下一条指令的偏移地址为( C)

A.0082H B.0084H C.0086H D.0088H

26.若DS=1000H,BX=2000H,(12000H)=56H,(12001H)=78H,AX=1000H,执行―ADD AX,[BX]‖指令后,AX=( A )。 A.8856H B.6678H C.8800H D.6600H

27.设AX、BX寄存器中存放的是有符号的二进制数据,若执行―CMP AX,BX‖指 令后,( D )L表示大于则转L。

A.JZ B.JA C.JGE D.JG

28.执行―DIV BX‖指令后,( C )寄存器中存放商。 A.AL B.AH C.AX D.DX

29.执行―( A )AX,BX‖指令不改变AX寄存器中的内容。 A.CMP B.ADD C.XOR D.OR

30.若AX=1000H,执行―NEG AX‖指令后,AX=( C )。 A.1000H B.0E000H C.0F000H D.1001H 二、多项选择题

1.在下列寻址方式中,用来访问内存的寻址方式有( BCD )。

A.寄存器寻址 B.寄存器间接寻址 C.寄存器相对寻址 D.直接寻址 2.用来作为寄存器间接寻址的寄存器有( BC )。 A.AX B.BX C.BP D. CX

3.在下列指令中,源操作数使用DS段寄存器进行寄存器相对寻址的有( AD )。 A.MOV AX,[DI+4] B.MOV AX,ES:[SI+8] C.MOV AX,[BP+4] D.MOV AX,[BX+4] 4.在下列指令中,源操作数的寻址方式是错误的有( BCD )。 A.MOV AX,[DI+BX] B.MOV AX,[SI+DI] C.MOV AX,[BP+BX] D.MOV AX,[DX] 5.在下列指令中,属于段内转移指令的有( ABD )。 A.JMP SHORT A B.JMP [BX]

C.JMP DWORD PTR [BX] D.JMP NEAR PTR [BX+SI] 6.在下列指令中,错误的指令有( ABCD )。

A.SUB 5,AL B.ADD AL,BX C.INC [BX] D.SHR AX,6

7.执行―CMP AX,8003H‖指令后,当AX中的无符号数高于8003H时,下列指令中有效的转移指令有( AB )。

A.JNB L B.JA L C.JG L D.JNL L 8.可与串操作指令―CMPSW‖指令配合使用的重复前缀有( BCD )。 A.REP B.REPZ C.REPNZ D.REPE 9.在下列的输入/输出指令中,正确的指令有( ABD )。 A.IN AX,80H B.OUT DX,AX C.IN AL,340 D.OUT DX,AL 10.在下列的指令中,错误的指令有( ABCD )。 A.PUSH AL B.MOV AL,BX C.PUSH 1000H D.CALL AX 11.可以用下列指令代替―LOOP L‖指令的有( AC )。 A.DEC CX B.DEC CX JNZ L JNC L C.DEC CX D.DEC CX CMP CX,0 JE L JE L 三.填空题

1.在一条指令中,立即数只能作 源 操作数。 2.8086/8088 CPU形成的内存物理地址有 20 位。

3.指令―MOV AX,[BX+SI]‖的源操作数在内存的 DS(数据) 段。 4.指令―MOV BX,[BP+DI]‖的源操作数在内存的 SS(堆栈) 段。 5.指令―MOV AX,ES:[SI]‖的源操作数在内存的 ES(附加) 段。 6.入栈指令使用的是 SS(堆栈) 段。

7.指令―ADD [BX+SI],AL‖的目的操作数是 基址加变址 寻址方式。 8.指令―SUB BX,A[SI]‖的源操作数是 寄存器相对 寻址方式。 9.指令―JMP DWORD PTR [BX]‖属于 段间间接 寻址方式。 10.可作为寄存器间接寻址的寄存器有 4 个。

11.堆栈是从 目标地址 高 地址向 低 方向生长的。其操作遵循 后进先出(先进后出) 的操作原则。

12.在进行弹栈操作时应该先将弹出的数据送 目标地址 ,然后 SP+2 。 13.在进行多精度加法运算时,一般使用 ADC(带进位加) 指令。 14.通用的数据传送指令不影响 标志位(PSW) 。 15.―INC AL‖ 指令不影响标志位的 CF 位。 16.若AL=11H,执行―NEG AL‖ 后,AL= 0EFH 。 17.JMP指令的执行 不影响 PSW寄存器中的各位。

18.两个无符号数进行比较时,可以根据 CF(SF) 标志位来判断大小。在编写程序时可使用

JA(JB、JC、JNC、JS、JNS) 指令来实现。

19.若执行―DIV BX‖,其被除数的高16位必须放在 DX ,低16位必须放在 AX 。 20.DAA指令只对 AL 寄存器中的内容进行调整。 21.若AL=84H,在执行CBW后,AL= 0FF84H 。 22.十进制数1234的压缩型BCD码为 1234H 。 23.执行 AND AL,0FH JNZ L

指令,是检测AL中的 低4位 位,当它为非零则转移。

24.若移位指令的移位位数大于1时,其移位位数必须放在 CL 中。

25.如果AL=85H,CL=4,执行―SAR AL,CL‖时,AL= 0F8H ,CF= 0 。 26.在串操作指令中,SI指向 源 串,DI指向 目的 串。

27.如果要查找某串中与AL寄存器中有相同的字符(数),则在SCASB指令前应配合使用 REPNE(REPNZ) 重复前缀。

28.转移指令―JNZ L ‖的转移范围(十进制)是 –128~127 。该指令的第二个字节为位移量,用 补码 形式表示。

29.段内调用指令改变 IP 中的内容。 30.段间调用指令改变 CS和IP 中的内容。

四.判断题(判断下列指令是否正确,如果是错误的,请指出错误的原因) 1.ADD AL,BX 2.MOV [BX],SI 3.SUB [BX],[SI] 4.CMP 5,AL 5.MOV CX,AX 6.LEA BL,A

7.SHR AL,6 8.MOV AL,[DI+SI] 9.MOV BL,200H 10.MOV AX,DATA 11.INC [BX]

12.CMP [BX],A ;A为变量 13.MOV AX,?+‘ 14.MOV AX, [BP+BX] 15.ADD AX,[CX] 16.OUT 400,AL 17.JNC P

18.MOV BX,,OFFSET A 19.LEA DI,A[SI] 20.CMP AX,5

五.改错题(按下列指令中的原意改正下列指令) 1.DEC [SI]

2.CMP AL,BX ;无符号数比较 3.MOV [DX],AL 4.MOV AL,300H

5.MOV [BX],[DI] ;字节操作 6.ADD AL,[CX+SI]

7.ADD AL,BX ;有符号数相加 8.PUSH AL

9.CMP [BX],5 ;字节比较 10.MOV DS,1234H 六.简答题

1.设BX=1000H,SI=2000H,位移量D=3000H,请指出下列各种寻址方式的有效地址是什么?

(1)使用D的直接寻址 (2)使用BX寄存器的间接寻址 (3)使用BX寄存器的相对寻址 (4)基址变址寻址

(5)相对基址变址寻址

2.请指出下列各条指令的源操作数的寻址方式是什么? (1)MOV AX,BUF (2)CMP AL,5 (3)ADD [BX+5],AX (4)SUB AX,[BX+SI] (5)ADC AH,A[SI] (6)MOV BX,[SI] (7)AND CX,B[BP+SI]

(8)JMP WORD PTR [BX] (9)JMP P (10)JMP FAR PTR P

3.设 DS=2000H, BX=0100H, SI=0002H, (20100H)=12H, (20101H)=34H,(20102H)= 56H, (20103H)= 78H, (21200H)= 2AH, (21201H)= 4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令执行完后AX寄存器中的内容是多少?

(1)MOV AX,1200H (2)MOV AX,BX (3)MOV AX,[1200H] (4)MOV AX,[BX]

(5)MOV AX,[BX+1100H] (6)MOV AX,[BX+SI]

(7)MOV AX,[BX+SI+1100H]

4.按下列各小题的要求写出相应的一条汇编语言指令。

(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中

(2)以BX和SI寄存器作基址变址寻址方式,把该单元中的一个字传送到AX。 (3)以SI和位移量20H作寄存器相对寻址,将该单元中的内容与CX寄存器中的内 容相加,结果存入CX寄存器中。

(4)清除AX寄存器的内容,同时清除CF标志位 (5)将字单元NUM与0B6H进行比较

5.按下列各小题的要求使用相应的几条指令完成其操作。

(1)将偏移量为200H的存储单元中的数与300H相加,结果存入AX寄存器中

(2)比较AX寄存器中与BX寄存器中的16位有符号数,当AX中的内容大于BX中的内容时转移到L。

(3)将BUF1和BUF2中的16位数据交换

(4)测试BUF字缓冲区中第15位,如果为1则转移到P (5)将BUFI和BUF2的字相加,结果送S缓冲区

6.设BX=8234H,请说明下列两条指令的区别,执行下列各指令后BX中的内容是什么? SHR BX,1 SAR BX,1

7.分别说明下列每组指令中的两条指令的区别。

(1) MOV BX,BUF LEA BX,BUF (2) OR BL,0FH AND BL,0FH (3) JMP SHORT L JMP L

(4) MOV AX,BX MOV AX,[BX] (5) MOV AX,[BX+DI] MOV AX,[BP+DI] 8.说明下列各指令的源操作数和目的操作数的存储地方。 (1)MOV [2000H],AX (2)ADD AX,[BX+5] (3)LEA SI,BUF (4)DAA (5)MUL BL

9.指出下列无条件转移指令的转移目标地址是什么?存放在何处? (1)JMP BX

(2)JMP WORD PTR [BX] (3)JMP DWORD PTR [BX] (4)JMP P

(5)JMP SHORT R

10.说明MOVSB和CMPSB各能使用哪些重复前缀? 七.程序分析题

1.现有程序段如下: MOV AX,1234H MOV BX,60H ADD AX,BX

请回答 :(1)该程序段完成的功能是什么? (2)程序段执行完后AX= 。 2.现有程序段如下: MOV AX,0603H MOV BL,8 AAD DIV BL

请回答 :(1)该程序段完成的功能是什么? (2)程序段执行完后AX= 。

3.设AX=0D023H,BX=9FD0H,试分析执行完如下程序段后程序转向何处? ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP L5 4.程序段如下: MOV AX,X MOV DX,X+2 ADD AX,Y ADC DX,Y+2 ADD AX,36 ADC DX,0 SUB AX,Z SBB DX,Z+2 MOV W,AX MOV W+2,DX

请回答 :(1)该程序段完成的功能是什么? (2)该程序的操作数是何类型? (3)结果存放在何处?

5.设A为字节变量,变量中的内容分别为64H、52H;B为字节变量,变量中的内容分别为12H、46H,现有程序段如下: MOV AL,A SUB AL,B DAS

MOV C,AL MOV AL,A+1 SBB AL,B+1 DAS

MOV C+1,AL

请回答 :(1)该程序段完成的功能是什么? (2)最后结果是什么? 6.现有程序段如下: MOV BL,AL MOV CL,4 SHR BL,CL MOV A,BL AND AL,0FH MOV B,AL

请回答 :(1)该程序段完成的功能是什么?

(2)如果AL的初值为56H,则A= ,B= 。 7.现有程序段如下: MOV AL,8 MOV BL,7 MUL BL AAM

ADD AX,3030H XCHG AH,AL MOV BUF,AX

请回答 :(1)该程序段完成的功能是什么? (2)BUF两个单元中的值分别为 。 8.现有程序段如下:

MOV AX,M MOV DX,N SHR DX,1 RCR AX,1

请回答 :(1)该程序段完成的功能是什么?

(2)若M=1234H,N=5678H,程序运行后DX= ,AX= 。 9.现有程序段如下: XOR AX,AX MOV AX,6342H MOV CX,0404H ROL AH,CL XCHG CH,CL ROR AL,CL

请回答 :(1)该程序段执行后AX= 。 (2)CF= 。 10.现有程序段如下: MOV AX,1 MOV BX,2 MOV CX,4 MOV DX,3 L: INC AX ADD BX,AX SHR DX,1 LOOPNZ L

请回答 :(1)该程序段的循环次数是多少?

(2)该程序段执行完后AX= ,BX= ,CX= ,DX= 。 11.现有程序段如下: MOV CX,16 MOV BX,0 MOV DX,1 L: MOV AX,9AB8H AND AX,DX

JZ N INC BX N: SHL DX,1 LOOP L MOV M,BX

请回答 :(1)该程序段完成的功能是什么? (2)该程序段执行完后(M)= 。 12.现有程序段如下: CLD

MOV SI,OFFSET BUF1 MOV DI,OFFSET BUF2 MOV CX,100 REP MOVSB

请回答:该程序段完成的功能是什么? 13. 现有程序段如下: CLD

LEA DI,BUF MOV AL,20H MOV CX,100 REPNZ SCASB

请回答 :(1)该程序段完成的功能是什么?

(2)若ZF=1,表示BUF中 值为20H数据

(3)若BUF的首地址为0,ZF=0,执行完该程序段后DI= 。 14.现有程序段如下: MOV AL,0 MOV BL,1 MOV CX,10 L: ADD AL,BL INC BL LOOP L

请回答 :(1)该程序段完成的功能是什么? (2)该程序执行完后,AL= 。

15.现有程序段如下: MOV AX,M CMP AX,N JA L MOV AX,M+2 CMP AX,N+2 JAZ L

MOV FLG,BYTE PTR 0 JMP P

L: MOV FLG BYTE PTR 1 P: …

请回答 :(1)该程序段完成的功能是什么?

(2)若M=1234H,N=5678H,则FLG= 。 16.现有程序段如下: MOV CX,100 LEA BX,BUF MOV DX,0

L1:MOV AL,<, /FONT>[BX] CMP AL,10 JL L2 INC DX L2:INC BX LOOP L1

请回答 :(1)该程序段完成的功能是什么?

(2)如果将JL改为JG,该程序段完成的功能又是什么?

17.设TAB中存放的数据为30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,现有程序段如下: LEA BX,TAB

MOV AL,X ;X为数字0~9 XLAT

请回答 :(1)该程序段完成的功能是什么? (2)若X中的内容为4,则AL= 。

18.现有程序段如下: LEA SI,BUF1 LEA DI,BUF2 MOV CX,100 L: MOV AL,[SI+100] MOV [DI],AL INC DI DEC SI LOOP L

请回答:该程序段完成的功能是什么? 19.现有程序段如下: MOV AX,BUF CMP AX,0 JNS L

MOV BX,BUF+2 NEG BX

MOV BUF+2,BX NOT AX ADC AX,0 MOV BUF,AX L: …

请回答:该程序段完成的功能是什么? 20.现有程序段如下: MOV AL,X AND AL,0FH JZ L

MOV BYTE PTR FLG,1 JMP M

L: MOV BYTE PTR FLG,0 M: …

请回答:该程序段完成的功能是什么?

八.程序设计题

1.使用串操作指令,将BUF缓冲区中的100个字节清0。

2.比较5个字节的字符串A和B,若两个串相等则字节标志单元FLG置0;否则清1。 3.设BUF缓冲区中有100个字数据。编写程序段统计100个字数据中数据为0的个数, 并将统计的结果存放在DL寄存器中。

4.计算Z=(X+5)*Y+30,(X,Y为无符号字节数据)。 5.将DX:AX:BX中的48位数乘以2。

6.将有100个字符的缓冲区BUF中的$符号用空格(20H)代替。 7.将有符号的字数据A和B中的大者存入C中。

8.测字单元A中的第四位是否为0,是则FLG置1,否则清0。 9.将DX:AX中的32位数据逻辑左移2位。 10.将100个元素的字数组A中的每个元素减1。 3.4.1 单项选择题

1.下列选项中不能作为名字项的是(C )。 A.FH B.A3 C.3B D.FADC 2.下列指令不正确的是( D )。

A.MOV AL,123 B.MOV AL,123Q C.MOV AL,123D D.MOV AL,123H 3.下列指令不正确的是( A )。

A.MOV BL,OFFSET A B.LEA BX,A C.MOV BX,OFFSET A D.MOV BX,A

4.若定义―BUF DB 1,2,3,4‖,执行MOV AL,TYPE BUF 后AL=( B )。 A.0 B.1 C.2 D.3

5.若定义―A EQU 100‖,执行―MOV AX,A‖后,AX=( C )。 A.A的偏移地址 B.A单元中的内容 C.100 D.A的段地址

6.若定义―B DW 1,2,10 DUP(0)‖,则该伪指令分配( D )字节单元。 A.10 B.20 C.22 D.24

7.若定义―C DD 2,4‖,则该伪指令分配( D )个字节单元。 A.2 B.4 C.6 D.8

8、伪指令是( C )规定的汇编说明符,它在源程序汇编时进行说明。 A、DEBUG B、LINK C、MASM D、EDIT

9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个( A )文件。

A. .LST B. .EXE C. .MAP D. .ASM

10.LINK命令执行后可以生成一个以( B )为扩展名的文件。 A.ASM B.EXE C.OBJ D.COM 11.一个段最大可定义( B )字节。 A.1M B.64K C.32K D.16K

12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选( D )。 A.BYTE B.WORD C.PARA D.PAGE

13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的(B )。

A.相同 B.长 C.短 D.不定

14.宏指令与子程序相比,子程序调用的执行速度比宏指令的( C )。 A.相同 B.快 C.慢 D.不定

15.ASSUME伪指令说明了汇编程序所定义段与段寄存器的关系,它只影响( A )的设定。

A.源程序 B.目标程序 C.汇编程序 D.连接程序

16.设A和B为字变量,C为标号,下列指令中不正确的是( C )。 A.MOV AX,A B.MOV AX,B C.JNE A D.JMP C

17.代码段中的语句( B )表示该段结束。 A.ASSUME B.CODE ENDS C.START:MOV AX,DATA D.END START

18.过程定义语句以―过程名PROC‖开始,以过程名( B )结束。 A.ENDS B.ENDP C.ENDM D.END

19.一个段可以放在内存的任何地方,但起始地址应该从一个能被( A )整除的单元地址开始。

A.16 B.32 C.64 D.128 20.在数据定义语句中,下列描述不正确的是( A )。 A.存放存储单元的地址可以用字节表示 B.存放存储单元的地址可以用字表示 C.存放存储单元的地址可以用双字表示

D.存放存储单元的地址可以用四字表示 3.4.2 多项选择题

1.在8086汇编语言中,语句的种类有( AB )。

A.指令性语句 B.指示性语句 C.汇编语句 D.说明语句 2.在下列的选项中,不能作为名字的有( ABD )。

A.AX B.3MA C.ABCD D.MOV 3.在下列的选项中,作为变量的类型有( ABC )。

A.字节 B.字 C.双字 D.近程 4.在下列的选项中,作为标号的类型有( CD )。

A.DB B.DD C.NEAR D.FAR 5.在运算符OFFSET后可以是( AB )。

A.标号 B.变量 C.表达式 D.数字 6.在指令―LEA BX,X‖中的X可以是( ABC )。 A.标号 B.变量 C.表达式 D.数字 7.不能分配内存单元的伪指令语句有( AC )。

A.EQU B.DW C.= D.DD 8.定义一个段的伪指令语句有( AD )。

A.NAME SEGMENT B.NAME PROC C.NAME ENDP D.NAME ENDS 9.定义一个过程的伪指令语句有( BC )。

A.NAME SEGMENT B.NAME PROC C.NAME ENDP D.NAME ENDS 10.宏指令与子程序的主要区别在于( BCD )。 A.完成的功能完全不同 B.目标程序的长度不同 C.执行程序的速度不同 D.汇编时处理的方式不同 3.4.3 填空题

1.汇编语言的语句有指令语句和 指示性语句(伪指令) ,宏指令是 指令语句 的另一种形式。

2.标号的三个属性是段地址、 偏移地址 和类型。 3.变量的三个属性是段地址、 偏移地址 和类型。

4.标号的类型有 近程(NEAR) 和 远程(FAR) 。

5.变量的类型有 字节(BYTE) 、 字(WORD) 、 双字(DWORD) 、四字(八字节)和十字节。

6.等价语句不能重复定义、等号语句 可以 重复定义。 7.等价语句和等号语句 不分配 内存单元。

8.语句―MOV BX,OFFSET A‖可用 LEA BX,A 一条指令代替。

9.若定义―A DW 1234H‖,指令―MOV AL,BYTE PTR A‖执行后,AL= 34H 。 10.若定义―B DW 1,2,30 DUP(5)‖,则B分配的内存单元数是 64 字节。 11.若定义C DW ?AB‘,则―MOV AL,BYTE PTR C‖执行后,AL= 42H 。 12.在程序的操作数项中使用的段名、标号名、变量名和符号名都必须在源程序中先 定义 ,否则汇编程序进行汇编时就会 报错 。

13.使用伪指令 ―段名 SEGMENT‖ 和 ―段名 ENDS‖ 定义一个段。 14.使用伪指令 ―过程名 PROC‖ 和 ―过程名 ENDP‖ 定义一个过程。利用过程定义语句可以把程序分成小段,以便于 阅读 、 理解 、调试和修改。 15.伪指令 ―END [表达式]‖ 表示整个程序结束。

16.宏展开就是用宏定义取代源程序中的宏指令。若实元个数大于变元个数,则多余的实元 不予考虑 。若实元个数少于变元个数,则多余的变元用 用空格 代替。 17.汇编语言源程序经 MASM(汇编) 产生目标文件,它 不能 直接在机器上运行,还必须经过 LINK(连接) 后形成可执行文件。

18.在数据段中使用字符串时,该字符必须用 引号 括起来。当定义含有多个字符的字符串时,只能使用 DB 伪指令。

19.用汇编语言编写的程序称为 汇编语言源程序 ,其扩展名为 ASM 。 20.在源程序中只要对某一独立功能的程序段进行一次宏定义,就可以 多 次调用它。 3.4.4 简答题

1.按照下列题目要求写出每小题的伪指令。

(1)将12H、34H、56H、78H存放在字节变量A的存储单元中。 (2)将12、1638H、0E52H存放在字变量B的存储单元中。 (3)将字符串COMPUTER存放在C变量的存储单元中。 (4)将D字节变量的100个单元设置为0。 (5)将D的偏移地址存放在E变量中。 2.设数据段定义如下: DATA SEGMENT BUF1 DB 2,3

BUF2 DW 4,5,6

BUF3 DB 2,100 DUP(0) BUF4 DB ?ABCDE‘ BUF5 DW BUF3 BUF6 EQU $-BUF3 DATA ENDS

请回答 :(1)该数据段占用的内存有多少字节? (2)BUF5单元中的值是多少? (3)BUF6的值是多少?

(4)执行―MOV AL,BUF4+2‖指令后,AL= 。

(5)执行―MOV AX,WORD PTR BUF1‖指令后,AX= 。 3.设数据段定义如下: DATA SEGMENT A DW 23,45 B DW ?EF‘ C = $+5

D DB 10 DUP(?) E EQU $-D F DW D DATA ENDS

请回答:(1)该数据段占用的内存有多少字节? (2)C的值为多少? (3)E的值为多少?

(4)执行―MOV AX,F‖指令后,AX= 。

(5)执行―MOV AL,BYTE PTR B‖指令后,AL= 。 4.设数据段定义如下: DATA SEGMENT BUF1 DB 36H,3,2 BUF2 DW 1364H,253H BUF3 DB 30 DUP(?ABC‘) BUF4 DW $—BUF3 BUF5 DB 100 DUP(0)

DATA ENDS

请回答 :(1)执行―MOV AX,WORD PTR BUF1‖后,AX= 。 (2)执行―LEA BX,BUF3‖后,BX= 。 (3)执行―MOV CX,BUF4‖后,CX= 。 (4)执行―MOV AL,BUF3+2‖后,AL= 。 (5)执行―MOV AX,BUF2+1‖后,AH= 。 5.设数据段定义如下: DATA SEGMENT

A1 DB 10 DUP(? ‘) A2 DW 1234H,5678H,341H A3 DW $—A2 A4 DW A2 A5 DB 7,3,2 DATA ENDS

请回答:(1)用一条指令将A2的偏移地址送BX。 (2)将A1的第6个字节送字符?A‘的ASCII码 (3)将A2的第3个字节的内容送AL。 (4)将A2的第3个单元开始的字内容送AX。

(5)用一条伪指令求出A1和A2所占字节数(设伪指令的变量为C)。 6.设数据段定义如下: DATA SEGMENT A DW 2,3

B DB 100 DUP(0) C DD 12345678H D DB $—B E DW B DATA ENDS

请回答:(1)用一条指令将C的第2个字节的内容取出并送AL。 (2)执行完―MOV AL,LENGTH B‖后,AL= 。 (3)执行完―MOV AL,TYPE C‖后,AL= 。 (4)执行完―MOV AL,LENGTH A‖后,AL= 。 (5)执行完―MOV AL,SIZE B‖后,AL= 。

(6)执行完―MOV AL,D‖后,AL= 。 (7)执行完―MOV BX,E‖后,BX= 。 (8)执行完―MOV AL,A+2‖后,AL= 。 7.设数据段定义如下: DATA SEGMENT A DW 1,2,3 B DB ?ABCDEF‘ C DW ?AB‘

D DB 12H,34H,56H E = $+5 DATA ENDS

请回答:(1)用一条指令将B字符串中的字符?E‘送AL。

(2)用一条指令将D变量中的第2个、第3个字节的内容送AX。 (3)用一条指令将A变量中的第3个字节送AL。 (4)―MOV AX,C‖执行后,AX= 。 (5)―MOV AL,E‖执行后,AL= 。 8.按下列要求写出数据段DATA的相应内容。 (1)TAB是0~9的ASCII码表。

(2)STR是字符串变量,字符串为COMPUTER。 (3)BUF是100个空格的缓冲区。

(4)COUNT是计算BUF缓冲区中字节数的常量变量。 (5)AD是存放TAB的偏移地址变量。 (6)D是字节变量,数值为15H,2,3 9.按下列要求写出数据段DSEG的相应内容。 (1)STR是存放字符ABCDE的字符串变量。

(2)D是存放十进制BCD数据372,2673,6852的字变量。 (3)BUF是存放10个0的字节缓冲区。

(4)E是存放BUF偏移地址和段地址的双字变量。 (5)F是常量,其值为5。

10.简述宏指令与子程序的主要区别。

11.在操作系统状态下,执行MASM程序对某一汇编语言源程序进行汇编后,除产生目标文件外,通过对答方式还可以产生对应源程序的另外两个文件。请指出:

(1)这两个文件的扩展名是什么? (2)这两个文件的功能是什么?

12.简述汇编程序对宏调用作宏展开的过程。 13.设数据段定义如下: DATA SEGMENT A DW 1,2 B DB 3,4 C DB ?ABCD‘ D = $—C E DB 3 DUP(0) DATA ENDS

请回答:(1)画出该数据段在内存中的分配示意图。 (2)变量A、B、C、E的偏移地址各是多少? (3)变量D的值是多少? 14.设数据段定义如下: DATA SEGMENT BUF1 DW 123H BUF2 DB ?SIMPLE‘ BUF3 DW $+4 BUF4 EQU $—BUF1 DATA ENDS

请回答:(1)画出该数据段在内存中的分配示意图。 (2)BUF1、BUF2、BUF3的偏移地址各是多少? (3)BUF4的值是多少?

(4)―MOV AL,BUF2+5‖执行后,AL= 。 15.设数据段定义如下: DATA SEGMENT ORG=4

A EQU 100 B DB ?ABC‘,2 C DW 101B D EQU B+4

DATA ENDS

请回答:(1)画出该数据段在内存中的分配示意图。 (2)B、C的偏移地址各是多少?

(3)―MOV AX,D‖执行后,AX= 。 五.判断改错题

1.设数据段定义如下,判断各语句是否正确,如有错误则改正。

DATA SEGMENT A DB 123H B DW 23,45678H C DW ?ABCD‘

D DB 100 DUP(?ABC‘) E DB ($—D)/3 DATA END 2.设数据段定义如下: DATA SEGMENT BUF1 DB 2,3 BUF2 DW 3 BUF3 DD 5 BUF4 EQU $—BUF1 BUF5 DB ?ABCD‘ BUF6 DW BUF5 DATA ENDS

请判断下列指令是否正确,如果有错请改正。 (1) MOV AX,BUF1 (2) MOV AL,BUF5 (3) MOV AX,BUF4 (4) LEA BL,BUF2 (5) MOV AX,BUF3

(6) MOV [BX],TYPE BUF3 (7) MOV [BX],WORD PTR BUF3 (8) MOV BUF5,AL (9) MOV BUF6,BUF2

(10)MOV BX,BUF6

3.判断下列伪指令是否正确,如果有错请改正。 (1)DATA SEG ┇ ENDS

(2)CODE SEGMENT ┇ CODE END (3)MA SEGMENT ┇ ENDM

(4)STACK SEGMENT ?STACK‘ (5) A SEGMENT B DW 1 C DB 123H A ENDS

(6)MYNAME SEGMENT PARA ┇

MYNAME ENDS 六.程序分析题

1.分析下列程序,说明程序的功能。 DATA SEGMENT

A DB 18H,34H,05H,06H,09H DB 0AH,0CH,11H,12H,14H B DB 3,4 C DB 2 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,A

MOV CX,2

MOV SI,OFFSET B LEA DI,C L: MOV AL,[SI] XLAT

MOV [DI],AL INC SI INC DI LOOP L MOV AH,4CH INT 21H CODE ENDS END START

2.分析下列程序,说明程序的功能。 DATA SEGMENT

TAB DB 30H,31H,32H,33H,34H,35H DB 36H,37H,38H,39H STR DB 3,2,7,6,8 COUNT EQU $—STR BUF DB 10 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA BX,TAB LEA DI, BUF MOV CX,COUNT LEA SI, STR L: MOV AL,[SI] XLAT

MOV [DI],AL

INC SI INC DI LOOP L MOV AH,4CH INT 21H CODE ENDS END START

3.分析下列程序,说明程序的功能。 DATA SEGMENT

A DB 12,34,56H,0 B DB 53H,62,31H,0 C DB 4 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI,A LEA DI,B LEA BX,C MOV CX,4 CLC

L: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL INC SI INC DI INC BX LOOP L MOV AH,4CH INT 21H CODE ENDS

END START

4.分析下列程序,说明程序的功能。 DATA SEGMENT A DW ? B DW ? C DW ? D DW ?

E DW 2 DUP(0) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,A MOV DX,0 ADD AX,B ADC DX,0 ADD AX,C ADC DX,0 MOV CX,D DIV CX MOV E,AX MOV E+2,DX MOV AH,4CH INT 21H CODE ENDS

END START 5.分析下列程序,说明程序的功能。 DATA SEGMENT A DB 36H

B DB 0DH,0AH,?NUM=‘ C DB 4 DUP(0)

DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL, A LEA BX, C MOV CL, 4 SHR AL,CL AND AL,0FH CMP AL,9 JNA N ADD AL,7 N: ADD AL,30H MOV [BX],AL INC BX MOV AL, A AND AL,0FH CMP AL,9 JNA M ADD AL,7 M: ADD AL,30H MOV [BX],AL INC BX

MOV BYTE PTR[BX],?H‘ INC BX

MOV BYTE PTR[BX],?$‘ LEA DX,B MOV AH, 9 INT 21H MOV AH,4CH INT 21H

CODE ENDS END START 6.分析下列程序 DATA SGEMENT

A DW 123H,456H,789H B DB 12H,34H,56H,78H C DB 10 DUP(2,3) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA SI, A LEA DI, C MOV CX,10 L: MOV AL,[SI] MOV [DI],AL INC SI INC DI LOOP L MOV AH,4CH INT 21H CODE ENDS END START

请回答:C的前5个字节单元中的内容依次是什么? 7.分析下列程序 DATA SEGMENT

A DB 83H,62H,56H,0FAH,67H B DB 0 DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA MOV DS,AX LEA BX, A MOV CX, 5 L: MOV AL,[BX] CMP AL,100 JAE M

INC BYTE PTR B M: INC BX LOOP L MOV AH,4CH INT 21H CODE ENDS

END START

请回答:(1)该程序完成什么功能?

(2)程序运行后,B中的内容是多少? 8.分析下列程序。 DATA SEGMENT A DB 23H B DB 67H C DB 0 DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A CMP AL,B JGE L XCHG AL,B MOV A,AL L: MOV C,AL

MOV AH,4CH INT 21H CODE ENDS END START 请回答 :(1)该程序完成什么功能?

(2)程序执行后,A、B、C变量中的值各为多少? 9.宏定义语句如下:

M MACRO X,Y,Z MOV DX,X MOV AH,Y INT Z ENDM

宏调用语句如下:

M BUF1,9,21H M BUF2,9,21H

请写出上述两条宏调用的宏展开语句。

10.宏定义语句如下: W MACRO X,Y,Z LOCAL L LEA BX,X MOV CX,Y MOV AX,0

L: ADD AL,[BX] ADC AH,0 INC BX LOOP L MOV Z,AX ENDM

请回答:执行―W BUF,100,C‖指令后宏调用的程序功能是什么?

MOV AH,4CH INT 21H CODE ENDS END START 请回答 :(1)该程序完成什么功能?

(2)程序执行后,A、B、C变量中的值各为多少? 9.宏定义语句如下:

M MACRO X,Y,Z MOV DX,X MOV AH,Y INT Z ENDM

宏调用语句如下:

M BUF1,9,21H M BUF2,9,21H

请写出上述两条宏调用的宏展开语句。

10.宏定义语句如下: W MACRO X,Y,Z LOCAL L LEA BX,X MOV CX,Y MOV AX,0

L: ADD AL,[BX] ADC AH,0 INC BX LOOP L MOV Z,AX ENDM

请回答:执行―W BUF,100,C‖指令后宏调用的程序功能是什么?

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

Top