admin 管理员组

文章数量: 1086019


2024年12月30日发(作者:用msgbox制作弹出对话框)

汇编语言程序设计习题集111

《汇编语言程序设计》习题

一、 选择题

1. 机器数为10000000B, 它代表-127D,则它是(C )。

A. 补码

B. 原码

C. 反码

D. 原码或反码

2.[x1]原=10111101B, [x2]反=10111101B, [x3]补

=10111101B (C )。

A. x1最小

B. x2最小

C. x3最小

D. x2=x1=x3

3.计算机的内存“溢出”是指其运算结果()。

A .为无穷大

B .超出了计算机内存储单元所能存储的数值范围

C .超出了该指令所指定的结果单元所能存储的数值范围

D .超出了一个字所能表示数的范围

4. [x1]原=11001010B, [x2]反=11001010B, [x3]补=11001010B ,

那么它们的关系是()。

A. x3>x1>x2

B. x2>x3>x1

C. x3>x2>x1

D. x2>x1>x3

5. 在计算机中表示地址时使用(A )。

A 无符号数

B 原码

C 反码

D 以上都不对

6. 下面说法错误的是(D )。

A 8位二进制无符号数表示的最大十进制数是255

B 8位二进制带符号数表示的最大十进制数是127

C 计算机中无符号数最常用于表示地址

D 计算机中小数点隐含在符号位之后,占一位

7. 只有当与非门的输入变量A 、B 的值为( )时,其输出才为0。

A 0,0

B 0,1

C 1,0

D 1,1

8. 只有当或非门的输入变量A 、B 的值为( )时,其输出才为1。

A 0,0

B 0,1

C 1,0

D 1,1

9. 若逻辑运算Y=A+B, 当A=B=1时,Y 为( )。

A 0

B 1

C 10

D 2

10. 若门电路的两个输入量为1、1,输出量为0,不可能完成此功

能的是( )。

A “异或”门

B “与非”门

C “或非”门

D “与”门

11. 下列不正确的是( )

A A A

B A B +=+ B _____

AB A B =+

C AB B AB A B ++=+

D A B A B +=

12. 已知V AR 为字节变量,下面是关于①MOV BX, OFFSET V

AR 和②LEA BX, V AR 指令的说明,正确的是( )。

A .指令①执行速度比指令②执行速度快

B .指令①中OFFSET 只能与简单的符号地址相连,不能与诸如V

AR[SI]等复杂数相连。指令②LEA 没有这个限制

C .指令①有错误,因为V AR 为字节变量,而BX 为字

D .指令①与指令②的作用完全相同

13.下列指令中正确的是(D)。

A.MOV 100,CL B.MOV CL,100H

C.MOV CL,1000 D.MOV CL,100

14.设(BX)=8D16H,执行指令序列MOV CL,7 SAR BX,

CL 后BX寄存器的内容是(B)。

A.011AH B.0FF1AH C.2D1AH D.0B00H 15.在程序运行

过程中,确定下一条指令的物理地址的计算表达式是(A)。

A.CS*16+IP B.BX*16+DI

C.SS*16+SP D.ES*16+SI

16.提示下列指令序列执行后的正确结果是(A)。

MOV BX,OFFFCH

MOV CL,2

SAR BX,CL

A.3FFFH B.0FFFH C.0FFFCH D.0FFF5H 17.下列指令中

不影响标志位的是(C)。

A.SUB AX,BX B.ROR AL,1

C.JNC LABLE D.INT n

18.将寄存器AX的内容取负的正确操作是()。

A.NEG AX B.CMP AX,0FFFH

C.NOT AX D.CMP AX,AX

19. 指令SCAS的寻址方式是()。

A源操作数为寄存器寻址,目的操作数为寄存器间接寻址

B 源操作数为寄存器间接寻址,目的操作数为寄存器间接寻址

C 源操作数为寄存器间接寻址,目的操作数为寄存器寻址

D 源操作数为寄存器寻址,目的操作数为寄存器寻址

20. TABLE为字变量,下面是关于指令①MOV AX,TABLE与指令

②LEA AX,TABLE的说明,错误的是()。

A指令①送TABLE为偏移地址的单元的内容,指令②送TABLE的

偏移地址给AX

B 指令①送TABLE的偏移地址,指令②送TABLE为偏移地址的单

元的内容给AX

C 源操作数寻址方式是:指令①为直接寻址,指令②为立即数寻

D 源操作数寻址方式是:指令①为直接寻址,指令②为直接寻址

21. 下列指令中正确的是(C)。

A MOV BX, AL

B MOV BL, AX

C MOV BL, AL

D MOV BL, BP

22. 下列指令中不合法的指令是(C)。

A IN AX, 03F8H

B MOV BX, AX

C REP CMPSB

D SHR BX, CL

23. 下列指令中正确的是()。

A MOV SS, 2400H

B MOV SS, [2400H]

C MOV SS, DS

D MOV SS, SP

24. 下列指令中正确的是(A)。

A XCHG AH, AL

B XCHG AL, 20H

C XCHG DS, AX

D XCHG SP, [20H]

25. 下列指令中正确的是(B)。

A IN 100H, AL

B IN AX, 21H

C OUT 21H, AX

D OUT 260H, AL

26. 假定(SS)=2000H,(SP)=0100H,(AX)=2107H,执行指令

PUSH AX后,存放数

据21H的物理地址是()。

A20102H B 20101H C 200FEH D 200FFH

27. 在下列指令中,有语法错误的是(A)。

A MOV [SI], [DI]

B IN AL, DX

C JMP WOR

D PTR[BX] D PUSH WORD PTR 20[BX+SI-2]

28. 两个有符号的整数A和B比较后,为了判定A是否大于B,

应使用下列(A)条

指令。

A JG

B JA

C JNB

D JNBE

29. 下列程序段执行完后,BX寄存器中的内容是( C )。

MOV CL, 3

MOV BX, 0B7H

ROL BX, 1

ROR BX, CL

A002DH B 00EDH C C02DH D 000DH

30. 执行下列程序:

MOV AX, 0

MOV BX, 1

MOV CX, 100

A: ADD AX, BX

INC BX

LOOP A

HLT

执行后的结果为:(AX)= ( C ),(BX)= ( ).

A5050,99 B 2500,100 C 5050,101 D 2550,102

31. JMP FAR PTR ABCD(ABCD是符号地址)是(D)。

A段内间接转移 B 段间间接转移

C 段内直接转移

D 段间直接转移

32. 已知JNC指令的机器代码是73FCH(FC是根据条件转移确定

的偏移量),CF=0,IP=1000H,试问执行该指令后,IP=(C)。

A0FFFH B 10FEH C 0FFEH D 10FCH

33. 满足转移指令JNE的测试条件是(C)。

A ZF=1

B CF=0

C ZF=0

D CF=1

34. 将累加器AX的内容清零的正确指令是(A)。

A AND AX, 0

B XOR AX, BX

C SUB AX, BX

D CMP AX, BX

35. 逻辑位移指令SHR用于(D),而算术位移指令SAR用于带

符号数除2。

A带符号数减2 B 带符号数除2

C 无符号数乘2

D 无符号数除2

36. 对于下列程序段:

AGAIN: MOV AL, [SI]

MOV ES: [DI], AL

INC SI

INC DI

LOOP AGAIN

也可用指令()完成同样的功能。

A REP MOVS

B B REP LODSB

C REP STOSB

D REP

E SCASB

37. JMP WORD PTR[DI]是(B)。A

A段内间接转移 B 段间间接转移

C 段内直接转移

D 段间直接转移

38. 直接、间接、立即三种寻址方式指令的执行速度,由快至慢的

排序为(C)。

A直接、立即、间接 B 直接、间接、立即

C 立即、直接、间接

D 不一定

39. 执行下列指令后:

MOV AX, 1234H

MOV CL, 4

ROL AX, CL

DEC AX

MOV CX, 4

MUL CX

寄存器AL的值是( B )。

A60H B 00H C 04H D 08DH

40. 下列程序执行后,(AL) = (B)。

MOV AX, 1234H

MOV BX, 5678H

ADD AL, BL

DAA

MOV CL, AL

MOV AL, AH

ADC AL, BH

DAA

A69H B 78H C 56H D 34H

41. 若AL, BL中是BCD数,且在执行ADD AL, BL之后,

(AL)=0EH,CFAF=10。

再执行DAA后,(AL)=()。

A04H B 14H C 64H D 74H

42. 下面程序段中,当满足条件转到NEXT标号执行时,AL中的

值正确的是(D)。

CMP AL,OFBH

JNL NEXT

……

NEXT:……

A AL=80H

B AL=8FH

C AL=0F0H

D AL=0FFH

43. 对于下列程序段:

AGAIN: MOV ES:[DI],AL

INC DI

LOOP AGAIN

可用指令()完成相同的功能。

A REP MOVS

B B REP LODSB

C REP STOSB

D REP

E SCASB

44. 设AL和BL中都是带符号数,当AL≤BL时转至NEXT处,在

CMP AL,BL指令后应

选用正确的条件转移指令是(B)。

A JBE

B JNG

C JNA

D JNLE

45. 使得JB指令执行转移操作的条件是()。

A CF=1

B CF=1且ZF=0

C ZF=0

D CF=0或ZF=1

46. 在“先判断后工作”的循环程序结构中,循环执行的次数最少

是()。

A 1

B 0

C 2

D 不定

47. 下列指令中,指令()先执行CX-1赋给CX操作,然后再根

据CX的值决定是否

转移、循环或进行重复操作。

A JNC

B REP

C JCXZ

D LOOP

48. 指令LOOPZ的循环执行条件是()。

A CX≠0并且ZF=0

B CX=0或ZF=0

C CX≠0并且ZF=1

D CX=0或ZF=1

49. 向量中断是()。

A 外设提出中断

B 由硬件形成中断服务程序入口地址

C 由硬件形成向量中断地址,再由向量地址找到中断服务程序入

口地址

D 以上都不正确

50. 寄存器间接寻址方式中,操作数在(C)中。

A 通用寄存器

B 堆栈

C 主存单元

D 段寄存器

51. 运算型指令的寻址和控制转移型指令的寻址,其不同点在于

()。

A 前者取操作数,后者决定程序的转移地址

B 后者取操作数,前者决定程序的转移地址

C 两者都是取操作数

D 两者都是决定程序的转移地址

52. 在PC系列机中调试汇编语言程序的工具软件是DEBUG。用

DEBUG调试程序时,

可以在目标程序中设断点,或用单步跟踪来找出程序中的毛病。

断点只能在RAM中设置,不能在ROM中设置,这是因为()。

A ROM不能存放汇编程序

B ROM中数据不能修改

C ROM不能放入断点中断指令

D ROM不能保护断点

53. 汇编语言语句格式中的名字项,下列哪一个不正确?()

A. FFFFFH

B. @Variable

C. 0FFFFH

D. Third_street

54. 下列语句中错误的有()

A. MOV BL,0A7H

B. MOV CX,COUNT

C. MOV [BX],5

D. IN AL,PORT-VAL

55. (A)不是数值变量的类型属性。

A. 字符型

B. 字型

C. 字节型

D. 双字型

56. 用ASSUME伪指令指定某个段分配给那个寄存器后,还需要

通过MOV指令来给段寄

存器赋值,其中(C)不能这样做,而是在程序初始化时自动完成

的。

A. 数据段寄存器DS

B. 堆栈段寄存器SS

C. 代码段寄存器CS

D. 附加段寄存器ES

57. 有关宏指令和子程序,下列说法哪一个不正确?(D)

A. 宏指令并不能简化目标程序

B. 子程序可以简化目标程序,但执行时间要长些

C. 子程序或过程在执行时,由CPU处理

D. 宏指令在执行时要保护现场和断点

58. 下列哪一个伪指令对符号名可以重复定义(A)

A. =

B. EQU

C. DB

D. PURGE

59. 下面指令序列执行后的正确结果是( A )。

MOV BX,0FFFCH

MOV CL,2

SAR BX,CL

A. 3FFFH

B. 0FFFFH

C. 0FFFCH

D. 0FFF5H

60. 一般用条件转移指令JZ、JNZ、JC、JNC等来实现程序的(B)

结构。

A. 顺序

B. 分支

C. 循环

D. 模块化

61. 下列哪一种不是多分支程序设计的形式?()

A. 开关法

B. 转移表法

C. 地址表法

D. 逻辑分解法

62. 下面程序段中,当满足条件转到NEXT标号执行时,AL中的

值正确的是(D)。

CMP AL,0FBH

JNL NEXT

NEXT:......

A. AL=80H

B. AL=8FH

C. AL=0F0H

D. AL=0FFH

63. 循环程序的基本结构形式不包括下面哪一部分?()

A. 循环参数置初值部分

B. 循环工作部分

C. 循环控制部分

D. 设置段寄存器部分

64. 数值计算中的反复迭代计算的过程是循环结构,该类问题使用

()控制循环。

A. 计数控制法

B. 条件控制法

C. 开关控制法

D. 逻辑尺控制法

65. 在循环设计中循环体的重复执行次数已知的情况下,一般采用

哪种计数方法来控制

循环?()

A. 正计数法

B. 倒计数法

C. 两者相同

D. 两者都不是

66. 子程序结构中不包括(B)。

A. 子程序的说明文件

B. 子程序的现场保护和现场恢复

C. 子程序的调用和返回

D. 入口参数的设置

67. (D)不是系统功能调用的功能。

A. 文件管理

B. 设备管理

C. 作业管理

D. 总线管理

68. DOS系统功能调用中,将子程序编号送入(A)寄存器。

A. AH

B. AL

C. BH

D. BL

69. 表达式19 MOD 7的结果为(B)。

A 2

B 5

C -2

D -5

70. 执行伪指令语句STR DD‘AB’后,下列说法正确的是()。

A 存入41H,42H

B 存入42H,41H

C 存入41H,42H,00H,00H

D 存入42H,41H,00H,00H

71. 下列伪指令语句正确的有(D)。

A ERR1:DW 99

B EXPR DB 2*3+7

C ERR2 DB 25*60

D ERR3 DD ‘ABCD’

72. 下列说法正确的是(B)。

SEGMENT与ENDS是段定义语句的伪指令,而ASSUME不是

SEGMENT和ENDS语句成对使用,把汇编语言源程序分为段

代码段中存放指令和伪指令,但不存放宏指令

SEGMENT与ENDS伪指令前的段名可以不同

73. 汇编语言在上机过程中用不到的程序为(D)。

A 编辑程序

B 汇编程序

C 连接程序

D 编译程序

74. 程序设计的结构化的首要问题是()。

A 程序的模块化

B 程序设计时采用“自上而下,逐步求精”的实施方法

C 模块之间的组合问题

D 各个结构的出口点和入口点

75. 下面指令序列执行后完成的运算,正确的算术表达式应是

(C)。

MOV AL,BYTE PTR X

SHL AL,1

DEC AL

MOV BYTE PTP Y,AL

A Y=2X+1

B X=2Y+1

C Y=2X-1

D X=2Y-1

76. 若各分支条件不满足线性规律,是一些跳跃性很大的离散值。

则在程序设计时,

一般采用()。

A 开关法

B 转移表法

C 地址表法

D 逻辑分解法

77. 实现“>=”转移的伪指令是(C)。

A JAE/JN

B B JBE/JNA

C JGE/JNL

D JG/JNLE

78. 在程序设计的实际应用中往往存在要重复执行的某些操作的一

类问题,这类问题

由(C)来解决。

A 顺序结构程序

B 分支结构程序

C 循环结构程序

D 以上都不是

79. 下列说法中,错误的有()。

A 内循环必须完整地包含在外循环中,内外循环不能相互交叉

B 内循环在外循环中位置可根据需要任意设置

C 从内循环中可以直接跳到外循环,从外循环也可以直接跳到内

循环

D 每次由外循环再次进入内循环中,初始条件必须重新设置

80. ()是循环程序设计的一个核心问题。

A 循环的控制

B 循环结构的选择

C 循环体的设计

D 循环参数的置初值

81. 循环体不包括下列哪项?()

A 重复操作的程序段

B 循环参数的修改

C 循环控制参数的修改

D 循环参数置初值部分

82. 如果在一个循环结构中包含若干个循环体,每个循环体对应一

个条件,当满足某

一条件后就执行对应循环体。进行这种循环结构的程序设计,常

用()。

A 计数控制法

B 条件控制法

C 开关控制法

D 逻辑尺控制法

83. 下列说法错误的是()。

A 子程序结构简化了程序设计过程,使程序设计时间大量节省

B 子程序结构缩短了程序的长度,节省了程序的存储空间

C 子程序结构不利于对程序的修改、调试

D 子程序结构方便了程序的模块化、结构化和自顶向下的程序设

84. ()不是子程序的参数传递方法。

A 立即数传递

B 寄存器传递

C 堆栈传递

D 存储器传递

二、填空

1.异或门的逻辑表达式为,其运算规则是。

2.请用最小的二进制位表示下列符号数。

[-24]补= ; [+67]补=

3.设(AL)= 45H,若是无符号数,它代表,若是带符号数,它

代表,若是BCD数,它代表,若是ASCⅡ码,它代表

4. 已知某机器数为10000000B,若为原码,它表示的十进制数是;

若为反码,它表示的十进制数是;若为补码,它表示的十进制数是。

5. 在字长相同的原码、反码和补码,表示数的范围较宽,这是因

为。

6.若累加器AX中的内容为4142H,执行指令CMP AX,4041H

后,(AX)= 4142H 。

执行SUB AX,4041H后,(AX)= 101H 。

7.若AL中的内容为7DH,下列指令单独执行后AL为:

(1)指令AND AL,0FH后,AL= 0DH ;

(2)指令AND AL,0F0H后,AL= 70H ;

(3)执行指令OR AL,0FH后,AL= 7FH ;

(4)执行指令OR AL,0F0H后,AL= FDH ;

(5)执行指令XOR AL,0FH后,AL= 72H ;

(6)执行指令XOR AL,0F0H后,AL= 8DH 。

8.若AL=24H,CL=8,CF=1,执行ROL AL,CL指令AL=,

24H CF= 0 。

9.设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,

试问:

(1)执行指令PUSH AX后SP= 1FFEH 。

(2)再执行PUSH BX及POP AX后,SP= 1FFEH ,AX=

5000H 。

(3)最后执行POP BX后,SP= 2000H ,BX= 3000H

10.已知程序段如下:指令执行后,完成填空。

MOV AX,1234H ;(AX)= H,CF= ,SF= ,ZF=

MOV CL,4

ROL AX,CL ;(AX)= H,CF= ,SF= ,ZF=

DEC AX ;(AX)= H,CF= ,SF= ,ZF=

MOV CX,4

MUL CX ;(AX)= H,(DX)= H,CF= ,SF= ,ZF= INT

20H

11.已知:(AX)=01CDH,(BX)=0AFH,(CX)

=0BE02H,CF=1,写出单步执行每条指令时CF,ZF及相关寄存器的

内容。

TEST AX,BX ;AX=01CDH,BX=0AFH

;CF= ,ZF= ,(AX)= H,(BX0= H ROL BX,CL ;(BX)

=2BC H,(CL)=02H

;CF= ,ZF= ,BX= H,CL= H 12.执行下列指令序列后完成的

功能是将(DX,AX)的值。

MOV CX,04

NEXT:SHR DX,1

RCR AX,1

LOOP NEXT

13.对于字除法指令,目的操作数存放在AX 中,指令执行后,

商放在AL ,余数在AH 中。

14. 用CBW指令生成双倍长度的被除数存放在AX 中,用CWD

指令生成双倍长度的被除数存放在DX:AX 中。

15. 在除法指令IDIV BX中,被除数隐含为AX或DX:AX 。

16. 在乘法指令MUL WORD PTE[BX]中,被乘数隐含为AX ,乘

积在DX:AX 中。

17. 执行XLA T指令前,要将表的首地址放在BX 中,表内偏移地

址放在AL 。

18. 若AL=34H,CL=4,CF=0,执行SAL AL, CL指令后,AL= 40H ,

CF= 1 。

19. 若用2个字节存放非压缩BCD码,其可表示的十进制数据范

围是0~99 ,存放压缩BCD码,其可表示的十进制数据范围是

0~9999 。

20. 若DF=1,执行指令LODSB后,SI的内容会自动。

21. 若CF=1,执行指令CMC后,CF= 。

22. 利用指令JO实现转移的条件为。

23. 利用指令JZ后,程序顺序执行下一条指令的条件是。

24. 执行指令JAE后,欲使程序跳转,条件为>= 。

25. 执行指令JNGE后,欲使程序跳转条件为< 。

26. 写出以下指令中内存操作数的地址。

⑴MOV AL, [BX+5];有效地址:BX+5 ,物理地址

(DS)*16+(BX)+5 。(下面差不多的)

⑵ MOV [BP], AX;有效地址: (BP) ,物理地址 (SS) *16+(BP) 。

⑶INC BYTE PTR[SI+3] ;有效地址:(SI)+3 ,物理地址

(DS)*16+(SI)+3 。

⑷ MOV DL, ES:[BX+DI] ;有效地址:(BX)+(DI),物

理地址(ES)*16+(BX)+(DI)。

⑸ MOV BX, [BX+SI+2] ;有效地址:(BX)+(SI)+2,

物理地址(DS)×16+(BX)+(SI)+2 。

27. 假设(BX)=0E3H,变量V ALUE中存放的内容为76H,确定下

列各条指令单独执行后的结果。

⑴XOR BX,VALUE ;(BX)=95 H

⑵AND BX,VALUE ;(BX)=62 H

⑶OR BX,VALUE ;(BX)=F7 H

⑷XOR BX,0FFH ;(BX)=1C H

⑸AND BX,0 ;(BX)=0 H

⑹TEST BX,01H ;(BX)=0E3 H

28. 试分析下列程序段:

ADD AX,BX

JNO L1

JNC L2

SUB AX,BX

JNC L3

JNO L4

JMP SHORT L5

如果AX和BX的内容给定如下,问该程序执行完后转向哪里?

AX BX

⑴ 147B 80DC 转向L1 。

⑵ B568 54B7 转向L5 。

⑶ 42C8 608D 转向L1 。

⑷ D023 9FD0 转向L5 。

⑸ 94B7 B568 转向L5 。我也不会

29. 有程序段如下,该程序段的功能是。

CLD

MOV CX,10

LEA SI,FIRST

LEA DI,SECOND

REP MOVSB

30. 条件转移指令的目标地址应在本条件转移指令的下一条指令地

址的字节

范围内。

31. 指令LOOPZ/LOOPE是结果为或相等发生转移的指令。

32. 一个有16个字的数据区,它的起始地址为70A0:DDF6,那么

该数据区的最后一个字单元的物理地址为H。

33. 假设

(DS)=B000H,(BX)=080AH,(0B080AH)=05AEH,(0B080CH)=4000H,

执行指令“LES DI,[BX]”后,(DI)=, (ES)= 。

34. 指令SAR可用来实现对数除2。

35. 当一个带符号数大于0FBH时程序转移,需选用的条件转移指

令是。

36. 令(AL)=98H, (BL)=12H, 则执行指令MUL BL后,(AX)=。

37. 假设(SS)=2250H,(SP)=0140H,如果在堆栈中存入5个数据,

则栈顶的物理地址

为。

38. 对于字节乘法指令,其目的操作数存放在中,而其源操作数可

以用除立即数以外的任一种寻址方式。其乘积为位,应存放在中。

39. 执行以下程序段后,AX= 。

MOV CX,5

MOV AX,50

NEXT: SUB AX,CX

LOOP NEXT

HLT

40. 执行指令SUB AX,BX后,CF=1,说明最高有效位。

41.程序结构化的首要问题是,它是通过的手段来实现的。

42.程序由一些基本结构组成,这些基本结构包括、和。

43.8086/8088存储器结构要求存储空间分段使用。因此,要分别

定义、、和。

44.下面程序段完成将字变量OPR1转换成反码和补码分别存入自

变量COMP和NEGA单元,将语句补充完整。

OPR1 DW -XXXXXD

COMP DW ?

NEGA DW ?

MOV AX,OPR1

(1)

MOV COMP,AX

(2)

MOV NEGA,AX

HLT

45. 用于控制重复执行的次数,一般是检测。当循环结束条件不满

足时,返回去继续循环体;当循环结束条件满足时,退出循环执行循

环结构外的。

46.在重复执行次数已知的情况下,采用来控制循环,它又可分为

和。

47.对循环次数未知的循环结构,是最常用的一种控制方法。该方

法有两种形式,分别为和。

48.一个完整的子程序结构,必须包括、、。

49.汇编语言所操作处理的对象主要是,主程序调用子程序时,已

经占用了一定的寄存器,子程序执行时又要使用寄存器,返回主程序

后,又要保证主程序按原有状态继续正常执行,所以要对寄存器的内

容加以保护即,子程序执行完毕后再恢复被保护寄存器的内容,即。

50.子程序是通过来定义的。子程序的定义不仅要说明所定义子程

序的,而且还应指出子程序的。

51.主程序传递输入参数和子程序传递输出参数的过程称为,实现

该过程的方法有三种,它们分别为、和。

系统功能调用分为三步:、、。

系统功能调用中00H号调用的功能是;0AH号调用的功

能是。

54.分析下面程序段,回答指定问题:

XOR AL,AL

CALL SUBROUT

MOV BL,AL

CALL SUBROUT

RCR AL,1

HLT

SUBROUT PROC NEAR

NOT AL

JS NEXT

STC

NEXT: RET

SUBROUT ENDP

问:程序运行后,AL= ,BL= ?

55.分析下面程序段,回答指定问题。

BUF DB 0CH

MOV AL,BUF

CALL FAR PTR HECA

HECA PROC FAR

CMP AL,10

JC K1

ADD AL,7

K1: ADD AL,30H

MOV DL,AL

MOV AH,2

INT 21H

RET

HECA ENDP

问:程序执行后,DL= ,屏幕上显示输出的字符是。

56. 程序执行的问题,在某些实时控制、跟踪等程序中显得特别突

出。

57. 循环结构有两种形式:和。

58. 流程图一般是利用一些带方向的和等把解决问题的先后次序直

观地描述出来。流程图种类比较多,如、、等。

59. 利用流程图进行程序设计是一种最基本的方法,流程图一般由

四部分组成:、

、和。

60. 分析下面程序段,指出程序完成的功能和运行结果。

0000

MOV AL,28H 0000 0000

0000

MOV AH,0 0000

SAL AX,1

MOV BX,AX

SAL AX,1

SAL AX,1

ADD AX,BX

(1)该程序段完成的功能是。

(2)程序运行后AX= 。

61. 一个循环结构的程序主要由三部分组成:、、。

62. 循环程序的初始状态,需要在进入循环以前给出,一般成为设

置。循环初值又可分为的初值和的初值。

63. 在多重循环中,最简单最常用的是,它是指一个循环的循环体

中含有一个或多个相互独立的。该类型的循环是两层嵌套循环,外面

一层称,里面一层循环称。

64. 现场保护和现场恢复的方法有和。

65. 子程序定义时的类型属性有和两种。

66. PC-DOS系统中设置了两层内部子程序供用户使用,即和。这

些子程序对用户来说均可看成,它们的入口地址都存放在中。

67. 系统功能调用是微机的为用户提供的一组例行子程序,它们的

功能比BIOS更加齐全、完整,主要功能是、、和等。

68. 调用系统功能时总是先采用,如果这层模块内容达不到要求,

再选用。

三、问答()

1.什么是原码、反码及补码?计算机中常用补码表示数,有什么

意义?

2.计算机中为什么采用二进制?

3. 布尔代数有哪两个特点?

4.指出下列指令的错误的原因,并更正。

(1)MOV [BX],[SI] (2) POP CS

(3) MOV DS,2000H (4) MOV BL,F5H

5.要想完成把[2000H]的一个字送[1000H]中,用指令:MOV

[1000H],[2000H]是否正确?如果不正确,应用什么方法?

6.假定LAB是标号,V AR是变量,CON是常数,列出下列操作

数或传送指令的寻址方式。

(1)V AR[BX] (2)CON+50H

(3)V AR (4)LAB

(5)V AR[BX+3] (6)V AR[BX][DI]

(7)MOV word ptr[BP][SI],100 (8)MOV V AR[BX],CX

(9)MOV AX,V AR[BX][DI] (10)MOV [BX+1000],DI

7.试问下面的程序段完成什么功能?

MOV CL,04

SHL DX,CL

MOV BL,AH

SHL AX,CL

SHR BL,CL

OR DL,BL

8.分析下面的程序,回答指定的问题。

START: XOR AX,AX

MOV CX,10

MOV BX,2

LOP1: ADD AX,BX

INC BX

DEC CX

JNZ LOP1

MOV SUM,AX

HLT

CODE ENDS

问:

(1)该程序完成的功能是什么?

(2)程序执行完后,SUM单元的内容是什么?

9.下面有四条等值语句

C1 EQU 1000

C3 EQU 20000

C4 EQU 25000

下列指令哪些是不对的?请说明原因。

(1)ADD AL,C1-C2 (2)MOV AX,C3+C4 (3)SUB BX,C4-

C3

(4)SUB AH,C4-C3-C1 (5)ADD AL,C2

10. 什么是寻址方式?简述8086/8088的寻址方式。

11. 说明存储器操作数有效地址EA的构成。

12. 指出下列操作数的寻址方式。

(1) POPF (2) IN AL,20H (3) CALL (4) INT 16H

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

(1) MOV AX,2010H MOV AX,[2010H]

(2) AND BL,0FH OR BL,0FH

(3) JMP SHORT L1 JMP NEAR PTR L1

(4) MOV AX,[BX] MOV AX,BX

(5) SUB DX,CX CMP DX,CX

(6) MOV [BP][SI],CL MOV DS:[BP][SI],CL

14. 假如想用100中减去AL中的内容,用SUB 100,AL是否正确?

如果不正确,就用什么方法?

15. 当执行CMP AL,BL后,ZF=0,CF=0,SF=1,OF=0,试问:

(1)若AL,BL中的内容是两个无符号数,比较结果如何?

(2)若AL,BL中的内容是两个带符号数,比较结果如何?

试举例说明。

16. 若8086执行SUB AH,AL后的结果是(AH)=85H,OF=1,问:

(1)执行前AH和AL内的数哪个大?

(2)AH中原存的是正数还是负数?其理由是什么?

(3)结果(AH)=85H是否正确?理由是什么?

17. 试问下面的程序段完成什么样的操作功能?

MOV DX,8001H

IN AL,DX

MOV AH,AL

DEC DX

IN AL,DX

MOV DX,AX

18. 分析下面的程序,回答指定的问题。

BEGIN: LEA BX,BUFFER

XOR AL,AL

MOV CL,64H

REPEAT: MOV BYTE PTR[BX],AL

INC BX

DEC CL

JNZ REPEAT

问:该程序完成的功能是。

19. 分析下面的程序,回答指定的问题。

DAT1 DB 0,1,2,3,4,5,6,7,8,9

DAT2 DB 5 DUP(?)

MOV CX,5

MOV BX,5

MOV SI,0

MOV DI,0

NEXT: MOV AL,DAT1[BX+SI]

MOV DAT2[DI],AL

INC SI

INC DI

LOOP NEXT

问:(1)该程序完成的功能是什么?

(2)程序执行后写出DAT2数据区的内容是什么?

20. 指出下列程序段完成的操作。

MOV CL,4

MOV DL,AL

AND DL,0FH

SHR AL,CL

AND AL,0FH

MOV DH,DL

MOV BL,AH

AND BL,0FH

SHR AH,CL

AND AH,0FH

MOV AL,AH

MOV CL,DH

21. 如果把AX,BL和DH中的内容分别乘以8,使用下面指令序列

能完成此工作吗?为什么?

MOV CL,3

SHL AX,CL

SHL BL,CL

SHL DH,CL

22. 什么是宏指令语句?为何要使用宏指令语句?如何使用?

23.下列语句中,哪些是无效的汇编语言指令?并指出无效指令中

的错误。

(1)MOV SP,AL

(2) MOV WORD-OP[BX+4*3][SI],SP

(3) MOV VAR1,VAR2

(4) MOV CS,AX

(5) MOV DS,BP

(6) MOV SP,SS:DATA-WORD[SI][DI]

(7) MOV AX,VAR1+VAR2

(8) MOV AX,[BX-SI]

(9) INC [BX]

(10) MOV 25,[BX]

(11) MOV [8-BX],WORD PTR 25

(12) MOV AL,DATA2[SI]

(13) MOV AX,OLA-DATA

(14) MOV AX,[BX*7]

(15) MOV AL,BYTE PTR[SI-100H]

24.若数组ARRAY在数据段中已作以下定义

ARRAY DW 100 DUP(?)

试指出下列语句中操作数中的各操作符的作用,指令执行后各寄

存器产生了什么变化? MOV BX,OFFSET ARRAY

MOV CX,LENGTH ARRAY

MOV SI,0

ADD SI,TYPE ARRAY

25. 试分析下列程序段,说明完成了什么操作?

SKEY DB 2

START: MOV AL,SKEY

LEA BX,BRATB

SHL AL,1

XOR AH,AH

ADD BX,AX

JMP BX

BRATB: JMP SHORT ZERO

JMP SHORT ONE

JMP SHORT TWO

JMP SHORT THREE

26.执行下列程序段前,BUFFER存储区的数据为:

DB 1,2,3,4,5,6

请给出执行下面程序段后BUFFER存储区中的数据。

MOV SI,OFFSET BUFFER

MOV CX,5

XOR AL,AL

AGAIN: SHL [SI],1

INC SYTE PTR[SI]

ADD AL,[SI]

INC SI

LOOP AGAIN

MOV [SI],AI

HLT

27.判断下列指令或程序是否有错,若有错,请指出错在哪里?

(1)K1 EQU 1024

MOV K1,AX

(2) MOV DS,100

MOV [1000],[2000]

(3) IMP DB ?

MOV IMP,AX

(4) A1 DB ?

A2 DB 10

CMP A1,A2

(5)将1000送入X1单元,用如下程序:

X1 DB ?

MOV BX,X1

MOV [BX],1000

28.假设VAR1和VAR2为自变量,LAB为程序中的一个标号,试

找出下列指令的错误之处。

(1)ADD VAR1,VAR2

(2)SUB AL,VAR1

(3)JNZ VAR1

(4)JMP LAB[SI]

(5)JMP NEAR LAB

26.有符号定义语句如下:

BUFF DB 1,2,3,‘123’

EBUFF DB 0

L EQU EBUFF-BUFF

问L的值为多少?

29.假设程序中的数据定义如下:

LNAME DB 30 DUP(?)

ADDRESS DB 30 DUP(?)

CITY DB 15 DUP(?)

CODE_LIST DB 1,7,8,3,2

(1)用一条MOV指令将LNAME的偏移地址放入BX。

(2)用一条指令将CODE_LIST的头两个字节内容放入SI。

(3)写一条伪指令使CODE_LENTH的值等于CODE_LIST域的

实际长度。

30.指出下列伪指令表达方式的错误,并改正之。

(1)STACK_SEG SEGMENT‘STACK’

(2)DATA_SEG SEG

(3)SEGMENT ‘CODE’

(4)MYDATA SEGMENT‘DATA’

ENDS

(5)MAIN_PROC PROC FAR

END MAIN_PROC

MAIN_PROC ENDP

31. 指出下列每一对伪指令语句的区别。

(1) X1 DB 76

X2 EQU 76

(2) X1 DW 3548H

X2 EQU BYTE PTR X1

(3) X1 EQU 3

X2=3

(4) X1 DW 3678H

X2 DB 36H,78H

(5) X1 DW 6341H

X2 DW 6341

32. 假设程序中的数据定义如下:

PARTNO DW ?

PNAME DB 16 DUP(?)

COUNT DD ?

PLENTH EQU $-PARTNO

问PLENTH的值为多少?它表示什么意义?

四、计算

1.已知x,机器字长为8位,试求[x]原、[x]反、[x]补?

(1)x = +1001101B (2) x = +0001110B (3) x = -1011001B

(4) x = -0100111B 2.已知x及y,试分别计算[x+y]补、[x-y]补,

并指出是否产生溢出(设补码均用8位

表示)。

(1)x = +1001110, y = +0010110

(2)x = +0101101,y = -1100100

(3)x = -0101110,y = +0111011

(4)x = -1000101,y = -0110011

3.完成下列各式补码数的运算,指出运算结果是否有效。

(1)00101101+10011100 (2)01011101-10111010

(3)70ADH-0B1CEH (4)0A2C0H+1234H

4. 一个16位二进制整数,若采用补码表示,由5个“1”和11个

“0”组成,则最小值是多少?最大值是多少?(用十进制数表示)

5.已知(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以

下各种寻址方式下的有效地址是什么?

(1) 立即寻址

(2) 直接寻址

(3) 使用BX的寄存器寻址

(4) 使用BX的寄存器间接寻址

(5) 使用BX的寄存器相对寻址

6.在0624H单元内有一条二字节指令:JMP SHORT OBJ,若其中位

移量分别为(1) 27H,(2) 6BH,(3)0C6H,试问转向地址OBJ的值是多少?

7.求出以下各十六进制数与十六进制数62A0H之和,并根据结果设

置标志位SF,ZF,CF 和OF的值。

(1)1234H (2) 4321H (3) 0CFA0H (4) 9D60H

8.

280H,

(DS)=2000H,(BX)=1256H,(SI)=528FH,TABLE=20A1H,(232F7H)=3


本文标签: 指令 执行 程序 循环