汇编试题与答案 下载本文

汇编语言程序设计 综合复习

一、填空题

1.一个十进制数35.625其对应的二进制数为 、十六进制数为

2.将8存放在一个字单元中,则该单元中二进制代码是

3.计算机软件分为两个部分即 和 而汇编程序属于 , 汇编

语言应用程序属于

4.把汇编语言源程序翻译成计算机能够识别、执行的目标程序的软件称为

5.8086/8088 CPU内部一般用来存放数据的寄存器有

6.8086/8088 CPU内部用来存放段地址寄存器的有

7.逻辑地址由 组成

8.一个语句的名字项可以是标号或变量,在程序中它们两个在书写形式上的主要区别是

9.在PSW中,用以记录当前运算结果特征信息的那些位称为 , 一般是由 自动设置。

10.存储器单元与物理地址的关系是 ,在一个逻辑段内,每个单元对应的段地址

是 ,而偏移地址是

11.在I/O接口中,为每个可访问的寄存器分配的地址是

12.用以指示当前堆栈栈顶的指针寄存器是

13.机器指令是一组规定计算机的操作类型及相关操作数的

14. 假设执行指令前BX=5678H,CL=8,指令ROL BX,CL执行后BX的内容是

15.一条指令的基本结构一般由 和 两个部分组成。

16.8086/8088 存储器地址分段时,每个段起始地址的特征是

17.所谓“寻址方式”是指在指令中用以说明操作数所在 的方法

18.在指令中直接给出操作数的寻址方式称为

19.无符号数和带符号数的两组条件转移指令,每条指令都有完全等效的两个指令助记

符,例如,JL 指令另一个指令助记符是

共28页 第 1 页

汇编语言程序设计 综合复习

20.8086/8088指令系统中,用以描述(说明)寄存器操作数的寻址方式是

21.设MASK为一个变量,在“MOV AX,MASK[SI+BX]”指令中,源操作数的寻址方式是

22.CPU执行“JMP BX”指令只改变 内容 ,而不改变 内容。

23. 每次进行串扫描指令SCAS时,要进行递增或递减修改的变址寄存器是

24.段间间接基址BX变址SI寻址的无条件转移指令是

25.使用“MUL BX”指令时,乘数放在 中,被乘数放在 中,执行该指令后结

果在 中

26.执行带符号数字节相乘指令IMUL BL后,CF=1,OF=1意味着

27.在串操作指令中,使地址自动加1或加2必须使用指令 将方向标志DF置 源串必须在 段中,而目的串必须在 段中。

28.若要测试AL中操作数的第0,1,2,7位是否为0,根据结果实现条件转移,可使用 指令。

29.8086/8088 CPU允许最大的存储空间为1MB,因此CPU的地址总线是 位

30.与LOOP yeqianyi指令功能等效的两条指令依次是 和

31.将AX寄存器清零的逻辑指令是 或

32. 在指令语句操作数项上,引用一个段名,就是获取段地址的 数据

33.执行查表指令XLAT时,要先将表地址存放在 中,将位移量存放在

34.十进制调整指令DAA或AAA必须放置在 指令之后,只对 内容进行修

正。

35.假设执行前AX=7862H,指令XOR AX,AX执行后AX中的值是

36.指令CBW只能实现对寄存器 的内容进行扩展,而它当中存放的数据应该是一个 数。

37.比较两个带符号A与B的大小,若(OF)?(SF)=0,则A-B

38.变量的类型属性指的是该变量对应存储单元的

39. VAR1 DD 10H DUP(?)语句实现留空 个字节单元。

共28页 第 2 页

汇编语言程序设计 综合复习

40.在源程序中定义一个逻辑段,使用 语句表示一个段的开始,用 语句表

示一个段的结束。

41.汇编语言源程序中的语句有三种类型,它们是宏指令语句, 及

42.ARRAY DB 0,2 DUP(1,2),0,3汇编时生成的数据依次是

43.在指令语句和伪指令语句中常用符号 表示地址计数器的当前值。

44.指令MOV AX,SEG BUF的执行,是把 送到AX中。

45.用DW 1200H 语句定义的一个字,如改用DB语句定义时,该语句是

45.如果过程与调用的主程序处在同一代码段,这样的过程属性是 ,与调用它的

主程序处于不同的代码段,则该过程属性是

47.在数据段或代码段中,常用伪指令 “ORG n” 来定义本段的偏移地址初值,该初值的

范围是

48.在存储单元yeqianyi开始,欲保留100个字长的存储单元,应使用的数据定义伪指令

49.在存取一个存储器操作数时,段地址必须由 提供。

二、选择题

1. 能够将目标模块或子程序连接起来,生成可执行文件的系统程序是

? DEBUG ? LINK ? MASM ? EDIT

2. 用汇编语言编写的程序称为

? 汇编程序 ? 源程序 ? 可执行文件 ? 目标程序

3. 汇编语言源程序文件的扩展名为

? .OBJ ? .EXE ? .COM ? .ASM

4. 设(101)x=(41)16 求x=

? 6 ? 10 ? 8 ? 2

5. 内存某字节单元中存放的二进制代码为94H,若将它看作是一个压缩BCD码,则其对应

的数值为

? 148 ? -20 ? -108 ? 94

6. 当执行ADD AX,BX指令后,若AX的内容为4E52H时,设置的奇偶标志位PF=0,下面的叙述正确的是

① 表示结果中含1的个数是奇数 ② 表示结果中含1的个数是偶数 ③ 表示该数是奇数 ④ 表示结果中低8位中含1的个数是奇数

共28页 第 3 页

汇编语言程序设计 综合复习

7.要输入端口1234H中的8位数据,其指令应是

① MOV DX,1234H ② MOV DX,1234H OUT DX,AL IN AL,DX

③ IN AX,1234H ④ OUT DX,1234H

8. 下列寄存器组中,在访问存储器操作数地址时,可以提供偏移地址的是

① BP、BX、SI、DI ② AX、BX、CX、DX ③ SP、IP ④ BX、SI、DI、DS

9. IBM PC机的存储器单元的物理地址是用 表示的。

① 5位十进制数 ② 20位无符号二进制数 ③ 4位十六进制数 ④ 20位带符号二进制数

10. 能够与SS寄存器组合形成堆栈区物理地址的寄存器是

① BX ② BP ③ IP ④ SI

11.若AX=-15要得到AX=15应执行的指令是

① NEG AX ② NOT AX ③ INC AX ④ DEC AX

12. 取指令的物理地址表达式为

① (DS)×10H+(BX) ② (SS)×10H+(SP) ③ (ES)×10H+(SI) ④ (CS)×10H+(IP)

13. 可以作为一个段的起始地址的是

① 21002H ② 00104H ③ 01000H ④ F0008H

14. 在标志寄存器FLAGS中,用以记录当前运算结果是否为零的标志是

① CF ② OF ③ SF ④ ZF

15.8086/8088对I/O端口寻址范围是

① 16KB ② 32KB ③ 64KB ④ 1MB

16.8086/8088系统执行传送指令MOV时

① 不影响标志位 ② 影响DF方向标志 ③ 影响SF符号标志 ④ 影响CF进位标志

17.设物理地址(21000H)=20H,(21001H)=30H,(21002H)=40H, 如从地址21001H中取出一个字的内容是

① 2030H ② 3040H ③ 3020H ④ 4030H

18.若内存中有100个字节数据区,其首地址为10210H,那么其最末一个字节单元的地址

① 10274H ② 10310H ③ 1021H:0063H ④ 1021H:0064H

19. 假设存储器中从7462H单元开始的四个相邻字节单元中的内容依次是32H,46H,

共28页 第 4 页

汇编语言程序设计 综合复习

52H,OFEH,则存放字数据0FE52H的字地址是

① 7462H ② 7463H ③ 7464H ④ 7465H 20.将-1存入AX中,其内容为

① FFFFH ② -0001H ③ FFH ④ 8001H

21.在段内寻址时,可以提供偏移地址的寄存器组是

① AX,BX,CX,DX ② BX,BP,SI,DI ③ SP,BP,SI,DI ④ DS,ES,CS,SS

22.将AX的内容存入堆栈正确的指令是

① MOV [SP],AX ② POP AX

③ PUSH AX ④ MOV SS:[SP],AX

23. MOV AL,79 ADD AL,0B1H

上面指令执行后,设置的标志位CF和OF的值是

① CF=0,OF=1 ② CF=1,OF=1 ③ CF=0,OF=0 ④ CF=1,OF=0

24. 能够将BL的低四位清“0”的指令是

① AND BL,0F0H ② OR BL,00H ③ OR BL,0F0H ④ AND BL,00H

25.已知AX、BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是 ① DIV BX ② CWD

IDIV BX ③ XOR DX,DX ④ CBW

DIV BX IDIV BX

26.没有语法错误的输入指令是

① IN AL,30H ② IN 30H,AL ③ IN DX,AL ④ IN AL,[BX]

27. 设(AL)=63H (BL)=29H 执行下面指令后 SUB AL,BL DAS

AX的内容是

① (AX)=0304H ② (AX)=0034 ③ (AX)=0034H ④ (AX)=0304

28. 算术右移指令SAR和逻辑右移指令SHR,两条指令执行结果完全相同的条件是 ① 目的操作数最高位为0 ② 目的操作数最高位为1

③ 目的操作数为任意情况 ④ 无论什么情况都不可能完全相同

29. 设OP1、OP2是变量,下面哪条指令是非法的

① CMP AX,OP1 ② CMP OP1,OP2

共28页 第 5 页

汇编语言程序设计 综合复习

③ CMP BX,OP2 ④ CMP OP,0FFH

30.在执行十进制调整指令前,必须先把需要调整的数送入

① AL ② AX ③ DL ④ DX

31.下列指令中操作数在代码段中的是

① MOV EAX,123400FEH ② ADD EBP,EAX

③ SUB [BX],DI ④ INC WORD PTR[BX]

32. 设AL=0A8H,CL=23H,执行乘法指令MUL CL后,标志位OF,CF的值分别是

① OF=1,CF=1 ② OF=1,CF=0 ③ OF=0,CF=1 ④ OF=0,CF=0

33. 设DF=0,SI=20H,CX=10,执行REP LODSW指令后,SI中的内容是

① 20H ② 30H ③ 34H ④ 40H

34. 在串操作指令中,使用重复操作前缀不正确的是

① REP MOVSB ② REP LODSB ③ REP STOSB ④ REPNZ SCASB

35. 设有变量VAR和标号LAB,不正确的指令是

① LEA AX,VAR ② LEA AX,LAB ③ JMP NEAR PTR VAR ④ JMP SHORT LAB

36. 指令CALL DWORD PTR VALUE 属于 寻址方式。

① 段内直接调用 ② 段内间接调用 ③ 段间直接调用 ④ 段间间接调用

37.用REPE SCASB指令对字符串进行扫描,如CX≠0时,扫描结束,那么表示 ① 在字符串中遇上第一个AL中指定的字符 ② 在字符串中有一个AL中指定的字符

③ 在字符串中有一个不是AL中指定的字符

④ 在字符串中遇上第一个不是AL中指定的字符

38.指令LOOPNE LOP的循环条件是

① (ZF)=0,(CX)=0 ② (ZF)=0,(CX)≠0 ③ (ZF)=1,(CX)=0 ④ (ZF)=1,(CX)≠0

39.累加器AX内的内容为01H,执行CMP AX,01H指令后,(AX)=

① 0H ② 1H ③ -2H ④ 2H

40.指令执行后可能改变了累加器内容的是

① OR AL,00H ② AND AL,0FFH ③ XOR AL,AL ④ TEST AL,0FFH

41. 在指令PUSH AX的执行过程中,要进行 操作

① (SP)-2?SP ② (SP)+1?SP

共28页 第 6 页

汇编语言程序设计 综合复习

③ (SP)-1?SP ④ (SP)+2?SP

42.设A、B均为无符号数,若A≥B则转向VALUE处,给出错误的条件转移指令是

① JNB VALUE ② JAE VALUE ③ JNC VALUE ④ JNS VALUE

43.设SP的初值为1000H,执行指令PUSH AX后SP的值是

① 0FFFH ② 1001H ③ 0FFEH ④ 1002H 44.下列指令中,非法的是

① MOV AL,DX ② SHR DX,CL ③ IN AL,DX ④ OUT 02,AL

45.下列指令执行后对源操作数和目的操作数均无影响的是

① MOV [BX+2],AX ② SUB AX,2476H ③ SBB [SI],BX ④ CMP AX,BX

46.设AX中存放的是带符号数,对其进行除8操作,能够完成此项功能的指令序列是

① SHR AX,2 ② SAR AX,2

SHR AX,2 SAR AX,1

③ MOV CL,3 ④ MOV CL,3 SHR AX,CL SAR AX,CL

47. 设AL中是无符号数,试将AL内容扩展后送入BX中, 能够完成此项功能的指令序列

① CBW ② MOV AH,0

MOV BX,AX MOV BX,AX

③ MOV AH,0FFH ④ MOV BL,AL

MOV BX,AX MOV BH,AH

48.若(AX)=1234H,(DX)=89ABH,执行XCHG AX,DX指令后,AX、DX中的内容应是

① (AX)=1234H (DX)=1234H ② (AX)=12ABH (DX)=8934H ③ (AX)=89ABH (DX)=1234H ④ (AX)=89ABH (DX)=89ABH

49.(CF)=1时转移到目标地址的条件转移指令是

① JNC ② JC ③ JZ ④ JS

50.汇编语言源程序,可以是

① 可以直接由机器执行

② 必须由编译程序生成目标程序才能执行 ③ 必须由解释程序生成目标程序才能执行 ④ 必须由汇编程序汇编成目标程序才能执行

51.完成(BX)-(CX)?AX的错误指令是

① SUB BX,CX ② XCHG AX,CX

共28页 第 7 页

汇编语言程序设计 综合复习

MOV AX,BX SUB AX,BX

③ XCHG AX,BX ④ MOV AX,BX SUB AX,CX SUB AX,CX 52. 下列指令中操作数在代码中的是

① MOV AL,[100H] ② MOV AL,00H ③ MOV [20H],AL ④ MOV AL,BL

53.下列指令中,影响或修改PSW内容的指令是

① PUSHF ② POPF ③ JCXZ ④ LOOPZ

54.下列有语法错误的语句是

① DB 12H ② DW 4567H ③ DD ‘ABCD’ ④ DB ‘ABCD’

55.AL、BL中都是无符号数,若(AL)>(BL)时,转到NEXT处。在执行CMP AL,BL指令

后应选用的指令是

① JNBE NEXT ② JNLE NEXT ③ JBE NEXT ④ JLE NEXT

56.使状态标志位CF清零的错误指令是

① CLC ② XOR AX,AX ③ SUB AX,AX ④ MOV CF,0

57.执行POP AX 指令正确的CPU操作过程是

① i(SP)+1?SP,((SP)) ?AL ② i (SP)+1?SP,((SP)) ?AH ii(SP)+1?SP,((SP)) ?AH ii (SP)+1?SP,((SP)) ?AL

③ i((SP)) ?AL,(SP)+1?SP ④ i((SP)) ?AH, (SP)+1?SP ii((SP)) ?AH,(SP)+1?SP ii((SP)) ?AL, (SP)+1?SP

58. MOV BX,0FFFEH

NEG BX NOT BX

上述三条指令执行后,BX中的内容是

① -1 ② -2 ③ -3 ④ -4

59. ORG 200H

BUF DB 12H,34H

?

?

?

MOV AX,WORD PTR BUF

上述指令语句执行后,AX中的内容是

① 3412H ② 1234H ③ 0200H ④ 0012H

60. 执行NEG指令对状态标志位CF有影响,其规则是

共28页 第 8 页

汇编语言程序设计 综合复习

① 对正数求补时,(CF)=0 ② 对负数求补时,(CF)=0 ③ 对非零数求补时,(CF)=1 ④ 对零求补时,(CF)=1

61. 已知AL内容为压缩BCD码,对它进行加“1”操作,其中错误的指令序列是

① INC AL ② ADD AL,1 DAA DAA

③ ADC AL,1 ④ STC

DAA ADC AL,0 DAA

62. 设数据段有:DA1 DB XX;是任一数据 DA2 DB 0FEH

则下列两条指令:MOV DL,DA1 OR DL,DA2 执行后,DL中的内容可能是

① 0FFH或0FEH ② 只能是0FEH ③ 只能是0FFH ④ 只能是01H

63. DB1 DB 8 DUP(2 DUP(3),3 DUP(2))

? ?

?

MOV AX,WORD PTR DB1[04H] 上面指令执行后,AX的内容是

① 0302H ② 0203H ③ 0202H ④ 0303H

64.伪指令 DA1 DB 04H DUP(3 DUP(2),2 DUP(3))在数据区中能构成0203H操作数共有

① 7个 ② 4个 ③ 3个 ④ 2个

65.设BUF1和BUF2均为变量名,操作数部分合法的指令是

① ADD AL,BUF1*BUF2 ② ADD AL,BUF1/BUF2 ③ ADD AL,BUF1+BUF2 ④ ADD AL,BUF2-BUF1

66.MOV BL,80H MOV CL,2 SAR BL,CL

上述指令序列执行后,结果是

① (BL)=40H ② (BL)=20H ③ (BL)=0C0H ④ (BL)=0E0H

67.已知(SP)=1FFFH,执行下列指令后,(SP)=

?

? ?

POPF

PUSH AX

共28页 第 9 页

汇编语言程序设计 综合复习

? ? ?

① 2000H ② 2002H ③ 1FFCH ④ 1FFFH

68.设NUM1 EQU 100 NUM2=64H

下面指令执行后,使BL中全为1的指令是

① MOV BL,NUM1 EQ NUM2 ② MOV BL,NUM1 LT NUM2 ③ MOV BL,NUM1 NE NUM2 ④ MOV BL,NUM1 GT NUM2

69.设(AL)=04H,(BL)=0F8H,执行MUL BL指令后,结果为

① (AX)=03E0H ② (AX)=0FEE0H ③ (AX)=0032H ④ (AX)=00E0H

70. ORG 100H

NUM EQU 8042H DA1 DB 56H

? ? ?

MOV BX,OFFSET DA1

上述程序段执行后BX中的值是

① 56H ② 100H ③ 101H ④ 102H

71. 设(AL)=63H (BL)=29H 执行下面指令后 SUB AL,BL DAS

AX的内容是

① (AX)=0304H ② (AX)=0034

③ (AX)=0034H ④ (AX)=0304

72.实现对AX中的带符号数除以2的指令是

① IDIV 2 ② SAR AX,1 ③ ROR AX,1 ④ SHR AX,1

73.MOV AL,-1 NEG AL XOR AL,65

上述程序段执行后,AL的内容是

① 40H ② 64H ③ 01H ④ 61H

74. 设数据段中定义语句 DA1 DB 12H,34H DA2 DW 12H,34H

下面有语法错误的语句是

共28页 第 10 页

汇编语言程序设计 综合复习

① BUF1 DW DA1 ② MOV DA1+1,AX

③ MOV BYTE PTR DA2+1,AL ④ MOV WORD PTR DA1,AX

75. DA1 DW 2A05H DA2 DB 0FAH ?

?

?

MOV AL,BYTE PTR DA1 SUB DA2,AL

上述指令执行后,DA2中的内容是 ① 0DAH ② 0FAH

③ 0F5H ④ 0D0H

76.在执行POP [BX]指令,寻找目的操作数时,段地址和偏移地址分别是

① 在DS和BX中 ② 在ES和BX中 ③ 在SS和BX中 ④ 在CS和BX中

77.MOV AL,79 ADD AL,0B1H

执行上述指令后,标志位CF和OF的值是 ① (CF)=0,(OF)=0 ② (CF)=0,(OF)=1 ③ (CF)=1,(OF)=0 ④ (CF)=1,(OF)=1

78.DA1 EQU WORD PTR DA2 DA2 DB 0ABH,0CDH

? ?

?

SHL DA1,1 SHR DA2,1

上述两条指令执行后,DA2中两字节单元内容分别是 ① 0ABH,0CDH ② 2BH,9BH ③ 4DH,57H ④ 56H,9BH

79. TEST VAR,55H

JE ZER0 ? ? ?

ZER0:??

上述程序段执行JE ZER0指令后能够产生分支的条件是 ① VAR=0 ② VAR=55H

③ VAR中第1,3,5,7位均为0 ④ VAR中第0,2,4,6位均为0

80. XOR AX,AX MOV AL,90H

共28页 第 11 页

汇编语言程序设计 综合复习

CWD

执行上述指令后,结果为

① (DX)=0000, (AX)=FF90H ② (DX)=FFFFH,(AX)=0090H ③ (DX)=FFFFH,(AX)=FF90H ④ (DX)=0000, (AX)=0090H

81. 在程序采用DOS系统功能调用退出用户程序时,在使用INT 21H指令前,应选用 指令

① MOV AX,4CH ② MOV AL,4CH ③ MOV AH,4CH ④ RET

82.设(AH)=0,(AL)=6H,(BL)=9H, 执行下面指令: ADD AL,BL AAA

之后,其结果是

① (AH)=1,(AL)=5 ② (AH)=0,(AL)=0FH ③ (AH)=1,(AL)=15 ④ (AH)=0,(AL)=5

83.STR1 DB ‘BeiJing 2009’

SCA DB ‘J’

? ? ?

LEA DI,STR1 MOV AL,SCA MOV CX,0CH CLD

REPNE SCASB

NEXT:??

程序运行到NEXT时 CX= ZF=

① 8和1 ② 7和1 ③ 10和0 ④ 10和1

84.VAR1 DW 1234H,89,255,-2,-0AH

VAR2 DB 34,78H,44,22,19,-12

? ? ?

MOV AH,23H LEA BX,VAR1+4

MOV AL,BYTE PTR [BX+1] MOV SI,WORD PTR VAR2+3 程序段执行后 AX= SI=

① AX=23FEH SI=1317H ② AX=23FEH SI=1316H ③ AX=23FFH SI=1316H ④ AX=23FFH SI=1317H

85.测试BL的内容是否与数据5AH相等,若相等则转移到NEXT处,可实现的方法是

① TEST BL,5AH ② XOR BL,5AH JZ NEXT JZ NEXT

共28页 第 12 页

汇编语言程序设计 综合复习

③ AND BL,5AH ④ OR BL,5AH

JZ NEXT JZ NEXT

86. 使用DOS系统功能调用时,子程序编号(功能号)应先放入 寄存器中。

① AH ② AL ③ DL ④ AX

87.设(AL)=03H,能够完成将AL中的低4位代码变反,而其高4位代码不变的指令是

① AND AL,0FH ② XOR AL,0FH ③ OR AL,0FH ④ SUB AL,0FH

88. 下列指令能够使AX中的数据必为奇数的是

① AND AX,0001H ② XOR AX,0001H ③ OR AX,0001H ④ ADD AX,0001H

89. 下列指令中有语法错误的是

① MOV CS,AX ② MOV DS,AX ③ MOV SS,AX ④ MOV ES,AX

90. BUFF单元开始,连续存放了十个字节数据,欲找出与AL中内容不同的数,并将不

同数据的地址偏移量送ADR单元,应选用的指令序列是

① REPZ CMPSB ② REPNZ CMPSB

JZ K1 JZ K1

MOV ADR,DI MOV ADR,DI K1: ?? K1: ??

③ REPZ SCASB ④ REPNZ SCASB

JZ K1 JNZ K1 DEC DI DEC DI

MOV ADR,DI MOV ADR,DI K1: ?? K1: ??

91.已知AX=0FFFFH,DX=0001H MOV CX,2 LOP:SHL AX,1 RCL DX,1 LOOP LOP

上述程序段执行后DX= AX=

① DX=0006H AX=0FFFDH ② DX=0006H AX=0FFFCH ③ DX=0007H AX=0FFFDH ④ DX=0007H AX=0FFFCH

92. ARRAY DW 6,9,$+4,10H,$+4

? ? ?

MOV AX,ARRAY+4

设变量ARRAY的偏移量是0084H,上述指令执行后AX中的内容是

① 0009H ② 008CH ③ 0090H ④ 0010H

共28页 第 13 页

汇编语言程序设计 综合复习

93. 已知AX=7865H,BX=89AAH

CLC

ADD AX,BX OR BX,AX RCR AX,1 RCL BX,1

程序执行后,AX= BX= CF=

① (AX)=0107H (BX)=175FH (CF)=1 ② (AX)=0106H (BX)=175EH (CF)=1 ③ (AX)=0107H (BX)=175EH (CF)=0 ④ (AX)=0106H (BX)=175FH (CF)=0

94.设(SS)=338AH,(SP)=450H,执行 PUSH BX和 PUSHF两条指令后,堆栈顶部的物理地址是

① 33CECH ② 33CF2H ③ 33CF4H ④ 33CE8H

95.不能表示存储单元逻辑地址是

① 变量名 ② 标号名 ③ 段名 ④ 符号名

96.VAY1 DW ?

VAY2 EQU Byte PTR VAY1

经过以上定义后,VAY1与VAY2之间的关系是

① 段地址相同,偏移地址不同 ② 段地址不同,偏移地址相同 ③ 段地址不同,偏移地址不同 ④ 段地址相同,偏移地址相同

97. 不合法的变量类型是

① 一字节 ② 二字节 ③ 三字节 ④ 四字节

98. 在存储器中定义20个字长的数据缓冲区的伪指令是

① Buffer EQU 20 ② Buffer DW 20 DUP(?) ③ Buffer DW 20 ④ Buffer DB 20 DUP(?)

99. 下列操作中允许段超越前缀的是

① 取指令 ② 存目的串 ③ 以BP为基址存取操作数 ④ 堆栈操作

100.下面程序段是判断两个存储单元是否同为负数,若是,则AX置全1,否则AX置0

试在空白处各填上适当的条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。 VAR1 DW ×××× VAR2 DW ××××

? ? ?

MOV AX,VAR1 MOV BX,VAR2 XOR AX,BX

共28页 第 14 页

汇编语言程序设计 综合复习

TEST BX,8000H

MOV AX,0FFFFH NEXT:MOV AX,0

? ? ?

① JNS NEXT ② JS NEXT JE NEXT JE NEXT

③ JC NEXT ④ JNC NEXT JZ NEXT JNZ NEXT

101. VARY1 EQU BYTE PTR VARY2 VARY2 DW 0ABCDH

? ? ?

SHL VARY1,1 SHR VARY2,1

上述两条指令执行后,VARY2字存储单元内容是

① 0ABCDH ② 0BCDEH ③ 55CDH ④ 0AB55H

102.DEC2 DB ‘56’

? ? ?

XOR DI,DI

MOV BL,DEC2[DI+1] AND BL,0FH

MOV AL,DEC2[DI] AND AL,0FH MOV DL,10

MUL DL

ADD AL,BL

上述程序段执行后,AL= BL=

① AL=56 BL=7 ② AL=55 BL=6 ③ AL=56 BL=6 ④ AL=55 BL=7

103.设(SP)=0028H,执行段内返回指令RET 6后,SP的内容是 ① 0036H ② 0022H ③ 0030H ④ 0020H

104.汇编语言语句格式中,根据对符号名的规定,错误的解释是

① 名字的第一个字符只可以是大小写英文字母及?、@、_等 ② 名字的第一个字符可以是数字 ③ 名字的有效长度≤31个字符 ④ 名字的最后一个字符可以是数字

共28页 第 15 页

汇编语言程序设计 综合复习

105. 下列语句中能实现留空8个字节单元的语句是

① DATA1 DT ? ② DATA2 DW ? ③ DATA3 DD ? ④ DATA4 DQ ?

106.已知AX=0078H,BX=0408H SHR BX,1

AND BX,0F0FH MOV CX,4 LOP:XCHG BH,BL

DIV BL SAL AX,1 LOOP LOP

上述程序段执行后,AX= BX=

① 30和0402H ② 30和 0204H ③ 35和0400H ④ 35和 0400H

107. yeqianyi DW 10H DUP(3 DUP(2,50),3,5)

上述语句汇编后,为变量yeqianyi分配的存储单元字节数是

① 80H ② 100H ③ 50H ④ 124H

108. 在汇编语言源程序中,每个语句可以由四项组成,如语句要完成一定功能,那么该

语句中不可省略的项是

① 名字项 ② 操作项 ③ 操作数项 ④ 注释项

109. 在汇编语言源程序中,对END语句的叙述正确的是

① END语句是一可执行语句 ② END语句表示程序执行到此结束 ③ END语句表示源程序到此结束 ④ END语句在汇编后产生机器代码

110. 设数据段中有:

DATA1 DB 10H,00H DATA2 DW 20H,30H

在下面指令中,使用变量有错误的是

① MOV DATA1,AX ② MOV BYTE PTR DATA2,AL ③ ARRD DW DATA1 ④ MOV WORD PTR DATA1,AX

111. 下面对伪指令语句的说明,正确的是

① 汇编程序将伪指令翻译成机器代码。 ② 伪指令在执行时完成其功能。

③ 伪指令的功能是指示、引导汇编程序在汇编过程中所完成的不同操作。 ④ 当汇编结束后,目标程序中仍保留伪指令。

112. 条件转移指令JNBE 产生转移的条件是

① CF=0 AND ZF=0 ② CF=0 AND ZF=1 ③ CF=1 AND ZF=0 ④ CF=1 AND ZF=1

113. 设定义BUF DW 100 DUP(0),则指令“MOV CX,SIZE BUF”的等效指令是

共28页 第 16 页

汇编语言程序设计 综合复习

① MOV CX,100 ② MOV CX,200

③ MOV CX,400 ④ MOV CX,100 DUP(0)

114. AR1 DB‘ABCDEFGH’

AR2 DB O

? ? ? MOV AH,1 INT 21H AND AL,0FH DEC AL

LEA BX,AR1 XLAT AR1 MOV AR2,AL

假设键盘输入数字4,则执行后(AR2)= ; 执行后CF=

① 44H(或‘D’),0 ② 43H(或‘C’),1 ③ 44H(或‘D’),1 ④ 43H(或‘C’),0

115.ADR DW 1234H,5678H

? ? ?

LEA SI,ADR LDS BX,ADR

设变量ADR的偏移地址是100H,上述两条指令执行后:SI= ,DS=

① 100H 和1234H ② 100H 和5678H ③ 000H 和1234H ④ 000H和5678H

116. NUMBER EQU 81H DATA DB 49H

? ? ?

XOR DATA,NUMBER

上述语句执行后DATA中的内容是

① 81H ② 49H ③ C8H ④ 89H

117. 现有一数据定义伪指令在DA单元定义一数据: DA DW 0123H

能与上述语句等效的语句是

① MOV WORD PTR DA,‘123H’ ② MOV DA,123H

③ MOV Byte PTR DA,0123H ④ MOV DA,‘123H’

118. DATA SEGMENT

DA1 DB 64H DUP(?) DA2 DW 0100H,0200H

共28页 第 17 页

汇编语言程序设计 综合复习

DA3 DW DA2

? ? ?

MOV SI,DA3

上述指令执行后,SI中的内容是

① 100H ② 200H ③ 100 ④ 300H

119. 一数据段定义如下: DATA SEGMENT ORG 0134H

DA DB 12H,63,26H ARRD DW DA DATA ENDS

能够使BX中的数据为奇数的语句是

① MOV BX,ARRD ② MOV BL,DA+2 ③ MOV BX,WORD PTR DA ④ MOV BL,DA+1 120.已知DX=0A476H,CX=0203H,CF=1 OR DX,DX RCR DX,CL XCHG CH,CL RCL DX,CL

上述程序段执行后DX= CF= ① 523BH 和1 ② 523BH和0 ③ 423CH 和1 ④ 423CH 和0

121. 在同一程序段中,定义下面伪指令,错误的是 ① PORT1 EQU AL ② PORT2=AL

③ PORT2=2A50H AND 0FFH ④ PORT3 EQU 2A50H

PORT3 EQU 2A50H AND 0FFH

122. 设ADRT=100H,不符合语法规则的语句是

① MOV AX,ADRT ② MOV AX,[ADRT+SI] ③ MOV [ADRT],AX ④ MOV ADRT[SI],AX

123.指出下面哪组伪指令使用是错误的

① DAT Segment ② Extra Segment ③ Stack Segment ④ Cod Segment ? ? ? ? ? ? ? ? ?

DAT Ends Extra Ends Stack Ends

Cod Ends,8 SHL AX,1 SHL AX,1 MOV BX,AX

共28页 第 18 页

? ? ?

124. MOV AX汇编语言程序设计 综合复习

MOV CL,2 SHL AX,CL ADD AX,BX

上述程序段执行后,BX= AX=

① 0020H 和 00A0H ② 0028H和 00A0H ③ 0028H 和 00C8H ④ 0020H和 00C8H

三、程序填空

1. 在以BCD为首地址的字节单元中存放了3个压缩BCD码x、y、z本程序用以计算

x+y-z,并将结果存放在SS字节单元中。试在程序的空格处填入适当的指令。 BCD DB x,y,z SS DB ?

? ? ?

MOV AL, BCD ADD AL, BCD+1 SUB AL, BCD+2 MOV SS, AL

2. DA1 DB ‘01234’

DA2 DB 5 DUP(0) ?

?

?

MOV SI,0 MOV CX,5

LOP: MOV AL,DA1[SI]

ADD AL,11H OR AL,01H

MOV DA2[SI],AL INC SI LOOP LOP

试问: (1) 程序段执行后,DA2各字节中的数据是

(2) 程序中MOV AL,DA1[SI]指令的源操作数寻址方式是

3.下面程序段用以统计AX中为“0”的位数,统计结果放在CONT单元中,试在程序段的空格处填上缺少的指令。

MOV CONT, 0 MOV CX, 16

NEXT: SHR AX, 1

共28页 第 19 页

汇编语言程序设计 综合复习

INC CONT DONE: JNZ NEXT

4.下面程序段用以统计SUM字单元中含有多少个“5” 统计结果存放在AL中,试在程

序段的空格处填上缺少的指令。 XOR AX, AX NEXT: CMP SUM, 5 JL DONE JMP NEXT DONE: ?

? ?

5.在主程序中,采用调用子程序方式求一个字数组中的元素之和,并将之送入SUM单元。试在下面程序段中填补上空缺的指令。

? ? ?

MOV BX, OFFSET ARRAY

MOV CX,NN

CALL yeqianyi

? ? ?

yeqianyi PROC

PUSH AX

NEXT: ADD AX,[BX] ADD BX,2 LOOP NEXT POP AX RET yeqianyi ENDP

6.在主程序中,采用调用子程序方式将一组非压缩BCD在屏幕上显示出来。试在下面 程序段中填补上空缺的指令。

? ? ?

MOV BX,OFFSET feiyabcd MOV CX,NN

共28页 第 20 页

汇编语言程序设计 综合复习

? ? ?

DISPLAY PROC

PUSH DX

LOP: MOV DL,[BX] ADD DL,30H

INT 21H INC BX LOOP LOP RET

DISPLAY ENDP

7.BUF DW 1,0,0AB1CH,582H,9,3A04H,9,0

? ? ?

LEA DI,BUF MOV CX,8 MOV AX,9 CLD

REPNZ SCASW JNZ K1

SUB DI,OFFSET BUF MOV DX,DI SHR DX,1 ADD DL,30H MOV AH,2 INT 21H K1:??

上述程序执行后 (1)程序完成的功能是 ,显示输出的值是

8.在以String为首地址的内存区域存放了一个字符串,下面程序段的功能是实现将该串中所有字母字符依次送入BUFF缓冲区,试在程序中填补上空缺的指令。

String DB ‘123ABC051AF??049ADVWS’ N EQU $- String BUFF DB N DUP(?)

? ? ?

MOV CX,N MOV BX,0

yeqianyi: CMP String[BX], ‘A’ JB NEXT

CMP String[BX], ‘Z’

共28页 第 21 页

汇编语言程序设计 综合复习

JA NEXT

MOV BUFF[SI],AL INC SI NEXT: INC BX

LOOP yeqianyi HLT

9.下面程序段是将BUFF单元的绝对值送入DAR单元,请将空白处各填上一条指令。

BUFF DW ×××× DAR DW ?

? ? ?

MOV AX,BUFF

JZ NEXT

NEXT: MOV DAR,AX

共28页 第 22 页

汇编语言程序设计 综合复习

四、编程题

1.编一程序段将BUF字节单元中的数拆成高低四位,并且将分离出的高四位和低四位分别放于BUF+1和BUF+2字节单元的低四位上。 D:\\ZQL>type exp11.asm

DATA SEGMENT BUF DB 34H,?,? CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL,BUF 方法二: MOV CL,4 MOV AL,BUF SHR AL,CL MOV BUF+2,AL MOV BUF+1,AL AND BUF+2,0FH MOV AL,BUF MOV CL,4 AND AL,0FH SHR AL,CL MOV BUF+2,AL MOV BUF+1,AL MOV AH,4CH INT 21H CODE ENDS END START

2.编制一子程序,将AL中一位十六进制数转换为对应的ASCII码并用2号DOS功能调用显示出来,输入参数:被转换的十六进制数已在AL中。 方法一: 方法二: D:\\ZQL>type exp12.asm CODE SEGMENT CODE SEGMENT ASSUME CS:CODE ASSUME CS:CODE START:MOV AL,05H START:MOV AL,0DH CALL Liuweipei CALL Liuweipei MOV AH,4CH MOV AH,4CH INT 21H INT 21H Liuweipei PROC Liuweipei PROC CMP AL,10 CMP AL,10 JC K1 JC K1 ADD AL,37H ADD AL,7 JMP L2 K1: ADD AL,30H K1: ADD AL,30H MOV DL,AL L2: MOV DL,AL MOV AH,2 MOV AH,2 INT 21H INT 21H RET RET Liuweipei ENDP Liuweipei ENDP CODE ENDS CODE ENDS END START END START 共28页 第 23 页

34H 03H 04H BUF BUF+1 BUF+2 汇编语言程序设计 综合复习

3.用字符串指令编制一程序段,把以DAT1为首地址的数据区中的50个字节数据依次传送到以DAT2为首地址的数据区中。要求:在程序中按地址递增方式进行数据传送。 CLD

MOV CX,50 LEA SI,DAT1 LEA DI,DAT2 REP MOVSB

4.在以Block为首地址的字节单元中,存放了06计算(1)班的学生考试成绩。试编制一程序,利用学生的序号来查表得到该学生的成绩,设学生的序号在NUMBER单元,查表结果存入RESULT单元中。 DATA SEGMENT

Block DB X1, X2, X3,??,X50 NUMBER DB X RESULT DB ?

相关知识见59面 DATA ENDS

CODE SEGMENT

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

MOV AL, NUMBER XLAT

MOV RESULT, AL

MOV AH,4CH

INT 21H

CODE ENDS

END START 5.在南昌市的湖坊乡,约有人口45000 ,试编写一程序统计一下该乡超过100岁以上的老人有多少,并将统计结果存放在SUM单元中。

DATA SEGMENT

AGE DB 25,31,6,101,90,71,116, … 和打印出的第5章第四CONT EQU $-AGE 大题的第3小题一样! SUM DB ? DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA NEXT: INC BX START: MOV AX,DATA LOOP LOP MOV DS,AX MOV AH,4CH MOV CX,CONT INT 21H MOV BX,0 CODE ENDS LOP: CMP AGE[BX],100 END START JB NEXT INC SUM

共28页 第 24 页

汇编语言程序设计 综合复习

6.设有DX:AX构成一个32位数据,从AX的低位(第0位)开始,逐位向高位和DX置1,置1的个数由CX的内容确定( 已知 CX<32 )。试编制一程序段,实现上述要求。 XOR AX,AX

XOR DX,DX CF D15 DX D0 CF D15 AX D0 LOP: STC RCL AX,1 RCL DX,1 LOOP LOP

7.编写程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符是“Y”,则转向YES程序段;如字符是“N”,则转向NO程序段;如果是其它字符,则转向DOS功能调用,重新输入字符。(考生勿需写出源程序格式,只需写出与试题要求有关的指令序列) KEY:MOV AH,1 (YES和NO分别是两程序段入口处的标号) INT 21H

CMP AL,‘Y’ JE YES

CMP AL,‘N’ JE NO JMP KEY

8. 在以STRING为首地址的存储区域存放了一个字符串,串的长度为50,查找其中是否有

字符$,若有将SIGN单元置1,反之,将SIGN单元置0(只需写出有关的指令序列)

(1) 用比较条件转移指令实现。 (2)用重复操作前缀串搜索指令实现。

(1) MOV CX,50 (2) MOV CX,50 MOV BX,0 LEA DI,STRING

N: CMP STRING[BX],’$’ CLD

JZ DONE MOV AL,’$’

INC BX REPNE SCASB

LOOP N JZ DONE

MOV SIGN,0 MOV SIGN,0 JMP EXIT0 JMP EXIT0 DONE: MOV SIGN,1 DONE: MOV SIGN,1 EXIT0: HLT EXIT0: HLT

共28页 第 25 页

DI STRING A B C $ D …… 汇编语言程序设计 综合复习

9. 从键盘接收一个4位十进制数据,并将其存入ASCII缓冲区,若输入出错,则调用子程序输出出错信息,提示重新输入,试编写一程序完成上述功能。

DATA SEGMENT

ASCII DB 4 DUP(?) SIGN DB ‘Input error,Repeat! $’ 和打印出的第7章DATA ENDS 程序设计题一样! CODE SEGMENT

ASSUME CS:CODE,DS:DATA 若输入:3456 START: MOV AX,DATA DONE: CALL OUTPUT MOV DS,AX JMP NEXT LEA SI,ASCII OUTPUT PROC ASCII 33H MOV CX,4 PUSH CX NEXT: MOV AH,01H LEA DX,SIGN 34H INT 21H MOV AH,09H CMP AL,30H INT 21H 35H JB DONE POP CX CMP AL,39H RET 36H JA DONE OUTPUT ENDP MOV [SI],AL CODE ENDS INC SI END START LOOP NEXT MOV AH,4CH INT 21H

SI

源程序:

DATA SEGMENT 10.编写一完整源程序,将M1中M1 DB ×× 的二进制数按位倒排送M2中,即M2 DB ? M1第0位送M2第7位,M1第1DATA ENDS 位送M2第6位,依次类推。 CODE SEGMENT

数据段如下: ASSUME CS:CODE,DS:DATA

DATA SEGMENT START:MOV AX,DATA

MOV DS,AX

M1 DB YY;任一字节数 MOV CX,8

M2 DB ? MOV AL,M1

XOR AH,AH DATA ENDS LOP: SAL AL,1

RCR AH,1 D7 D0 LOOP LOP M1: 1 0 1 0 1 0 1 1 MOV M2,AH

MOV AH,4CH D7 D0 INT 21H M2: 1 1 0 1 0 1 0 1 CODE ENDS

END START

共28页 第 26 页

汇编语言程序设计 综合复习

11.在数据段中,WEEK是星期一~星期日的英文缩写,DAY单元中有数1~7(1 表示星期一,7表示星期日):

WEEK DB ‘MON’, ‘TUE’, ‘WED’, ‘THU’, ‘FRI’, ‘SAT’, ‘SUN’ DAY DB X ; 数字1~7

试编写一源程序,根据DAY的内容用单个字符显示功能调用(2号功能)去显示对应的英文缩写。 源程序:

DATA SEGMENT

WEEK DB ‘MON’, ‘TUE’, ‘WED’, ‘THU’, ‘FRI’, ‘SAT’, ‘SUN’ DAY DB X DATA ENDS LOP: MOV DL,WEEK[BX] CODE SEGMENT MOV AH,02H ASSUME CS:CODE,DS:DATA INT 21H START:MOV AX,DATA INC BX MOV DS,AX LOOP LOP XOR BX,BX MOV AH,4CH MOV BL,DAY INT 21H DEC BL CODE ENDS MOV AL,BL END START SAL BL,1 ADD BL,AL MOV CX,3

12.试编制一程序段,用串操作指令STOSB实现向DA数据区依次相间存放字母字符A,B,

C,??J和数字字符0~9,相间顺序是:A,0,B,1,C,2,?,I,8,J,9(设DA数据区所在段已由ES指向) 源程序: MOV AL,‘A’

MOV AH,‘0’

ES DI LEA DI,DA DA A MOV CX,20 0 CLD B LOP:STOSB; (DI) AL DI DI+1 1 INC AL C XCHG AL,AH 2 LOOP LOP ??

共28页 第 27 页

汇编语言程序设计 综合复习

13.在首地址为TAB的数组中按递增次序存放着100个数,试编程将出现次数最多的数以及出现的次数分别存放于变量NUM和COUNT中,并以: COUNT=? 的形式输出COUNT的值(设最多重复次数<10) DATA SEGMENT

BUF DB 1,2,14H,14H,14H,14H,14H,15H,15H,15H,15H,59H LEN =$-BUF NUM DB ? COUNT DB 0

MM DB 'COUNT=','$' DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV SI,0 MOV CX,LEN MOV BL,0

A: MOV AL,BUF[SI] CMP AL,BUF[SI+1] JNE KL1 INC BL MOV BH,AL JMP KL2

KL1:CMP COUNT,BL JAE L2 注意和教材 MOV COUNT,BL P1065.6比较 MOV NUM,BH L2: MOV BL,0 KL2:INC SI LOOP A INC COUNT LEA DX,MM MOV AH,9 INT 21H

MOV DL,COUNT ADD DL,30H MOV AH,2 INT 21H MOV AH,4CH INT 21H CODE ENDS

END START

共28页 第 28 页