2015年6月汇编语言程序设计-试题库(给学生复习) 下载本文

选择题

1、设DS=8225H,DI=3942H,指令MOV BX,[DI]源操作数的物理地址是( ) A、85B92H

B、86192H

C、BB690H

D、12169H

2、计算机能直接识别并执行的语言是( )。 A、汇编语言

B、机器语言

C、高级语言

D、低级语言

3、循环指令LOOPNZ终止循环的条件是( )。 A、CX=0,且ZF=0 C、CX≠0,且ZF=0

B、CX=0,或ZF=1 D、CX≠0,或ZF=1

4、循环控制指令LOOPNZ/LOOPNE继续执行循环的条件是( )。 A、CX≠0且ZF=1 B、CX≠0且ZF=0 C、CX≠0或ZF=1 D、CX≠0或ZF=0

5、已知ARRY DB 500 DUP(0),则ARRY+100存储单元内容为( )。 A、100

B、500

C、0

D、101

6、?THIS IS A BOOK?作为字符串存储在数据段时应使用数据定义指令是( )。 A、DB B、DW B、DD D、以上三种情况均可 7、对一个段的起始地址描述,下面不正确的是( )。 A、可在内存任何地方

B、段的起始地址能被16整除

C、段的起始地址用16进制数表示,但最后一位为0 D、段的起始地址可用任意一个四位16进制数乘以16来表示

8、要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是( )。 A、BUF DW 9

B、BUF DB 9 D、BUF DW 9 DUP (?)

C、BUF DB 9 DUP (?)

9、AX,BX,CX都是通用寄存器,但它们又可用于专门的目的,它们的名字称为( )。

A、累加器、变址寄存器、计数器 B、累加器、基址寄存器、计数器 C、累加器、指针寄存器、计数器 D、累加器、变址寄存器、指针寄存器 10、变址寄存器指的是( )。 A、SI、DI

B、SI、SP

C、SP、BP

D、DI、DX

11、在执行子程序段间调用CALL SUBR指令后,SP的值( )。

A、加2 B、减2 C、加4 D、减4

12、在执行子程序段内调用CALL SUBR指令后,SP的值( )。 A、加1

B、减1

C、加2

D、减2

13、当SS=9876H, SP=4328H,执行POPF指令后,堆栈顶部的物理地址是( )。 A、9CA8AH

B、9CA90H

C、9CA86H

D、0DB00H

14、下列传送指令中有语法错误的是( )。 A、MOV CS,AX C、MOV SS,AX

B、MOV DS,AX D、MOV ES,AX

15、下面指令执行后,改变AL寄存器内容的指令是( )。 A、TEST AL,02H

B、OR AL,AL

C、CMP AL,BL

D、AND AL,BL

16、DEC BYTE PTR[BX]指令中的操作数的数据类型是( )。 A、字

B、双字

C、字节

D、四字

17、与MOV BX,OFFSET VAR指令完全等效的指令是( )。 A、MOV BX,VAR C、LES BX,VAR

B、LDS BX,VAR D、LEA BX,VAR

18、MOV SP,3210H

PUSH AX

执行上述指令序列后,SP寄存器的值是( )。 A、3211H

B、320EH

C、320FH

D、3212H

19、MOV BH,1000[SI],该指令中源操作数采用的寻址方式是( )。 A、立即

B、直接

C、寄存器相对寻址

D、寄存器间接寻址

20、BUF DW 10H DUP(3 DUP(2,10H),3,5)

上述语句汇编后,为变量BUF分配的存储单元字节数是( )。(DW后面的10H化为10进制为16,然后2*16*(3*(1+1)+1+1)=256个字节,转化为16进制数后就是100H A、80H

B、100H

C、124

D、192

21、DOS系统功能调用中,显示单个字符的系统调用号是( )H。 A、01H

B、02H

C、08H

D、09H

22、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是( )。

A、AX,BX,CX,DX C、SP,IP,BP,DX

B、BX,BP,SI,DI D、CS,DS,ES,SS

23、下面描述中,( )是正确的。

A、高级语言与汇编语言的算法都是针对计算机硬件结构的。 B、汇编语言需要算法,高级语言不需要算法。 C、高级语言的算法是针对计算机硬件结构的。 D、汇编语言的算法是针对计算机硬件结构的。

24、在书写汇编语言程序时,在代码段中初始位置要对数据段进行加载,加载的指令语句,下面( )描述正确。 A、mov ax,data

B、mov ds,data

D、mov ax,ds mov cs,ds

C、mov ax,data mov ds,ax

25、无条件段间间接转移指令JMP DWORD PTR[BX][DI]执行的操作是( )。

A、IP?(EA) CS? (EA+2) C、IP<=(BX)

DS? (DI)

B、IP? (BX) CS? (DI) D、IP? (BX)+(DI)

26、条件转移指令JA PROG是一条两字节指令,如果该条指令的第一字节存放在0025H单元,相对偏移地址为0F4H,如果测试条件满足时,应转移到( )处取下一条指令。 A、001BH

B、0119H

C、0019H

D、011BH

27、条件转移指令JC和段内直接短转移指令JMP SHORT LP,它们的转移范围是( )。

A、-128~+127 B、0~65535

C、-127~+128 D、0~255

28、在汇编语言程序的开发过程中使用宏功能的顺序是( )。 A、宏定义,宏调用

B、宏定义,宏展开 D、宏定义,宏展开,宏调用

C、宏定义,宏调用,宏展开

29、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( )。 A、名字项

B、操作项

C、操作数项

D、注释项

30、在下述指令中,错误的指令是( )。

A、MOV [BX],[DI] C、AND BX,8000H

B、MOV BX,AX D、INC BX

31、用MASM对汇编语言源程序进行汇编时,形成的目标序文件的扩展名应为( )。 A、.EXE

B、.ASM

C、.OBJ

D、.LST

32、用EDIT编辑程序建立汇编语言程序时,其源程序文件的扩展名应为( )。 A、.OBJ

B、.EXE

C、.ASM

D、.LST

33、既可以执行程序(文件名.EXE)进行运行,也可以对其进行调试的程序是( )。 A、MASM

B、DEBUG

C、EDIT

D、LINK

34、为了使执行串操作指令时,地址按减量方式处理应使用指令( )。 A、CLI

B、STI

C、CLD

D、STD

35、为在一连续的存储单元中依次存放数据41H,42H,?48H,下面的数据定义语句中有语法错误的是( )。

A、DB 41H,42H,43H,44H,45H,46H,47H,48H B、DW 4142H,4344H,4546H,4748H C、DB ‘ABCDEFGH’

D、DW ‘BA’,‘DC’,‘FE’,‘HG’

36、把若干个模块连接起来成为可执行文件的系统程序是( ) A、汇编程序 B、连接程序 C、机器语言程序 D、源代码程序 37、在下列语句中,AGAIN称为( )。

AGAIN: INC SI A、符号

B、助记符

C、标号

D、变量

38、已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是( )。 A、DIV BX

B 、CWD D 、CBW

IDIV BX IDIV BX

C、XOR DX,DX DIV BX

39、下面是关于子程序定义,正确的是( )。

A、子程序和一般程序一样,无特殊之处 B、子程序就是一个程序段

C、子程序是按规定格式设计,可以多次反复调用,完成指定功能的特殊程序段 D、具有一定功能的独立程序段

40、子程序是用过程定义语句( )定义的。 A、PROC ENDP C、CALL RET

B、PROC ENDS

D、PROC RET

41、主程序和所调用的子程序在同一代码段中,子程序的属性定义为( )。 A、TYPE

B、WORD

C、NEAR

D、FAR

42、执行下面指令序列后,结果是( )。

MOV AL,82H

CBW(字节转换为字指令,该指令的隐含操作数为AH

和AL。其功能是用AL的符号位去填充AH,即:当AL为正数,则AH=0,否则AH=OFFH。 A、AX=0FF82H

B、AX=8082H

C、AX=0082H

D、AX=0F82H

43、若AX=3500H,CX=56B8H,当AND AX,CX指令执行后,AX=( )。 A、1400H

B、77F8H

C、0000H

D、0FFFFH

)。

44、设DH=10H,执行NEG DH指令后,正确的结果是( A、DH=10H CF=1 C、DH=10H CF=0

B、DH=0F0H CF=0

D、DH=0F0H CF=1(NEG是汇编指令中的求补指令,NEG

指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数。求补运算也可以表达成:将操作数按位取反后加1;

因此10000按位取反后为11101111,加1为11110000,写成十六进制为F0H,因此答案在B和D之间选择。)

45、DA2 DB ?AB?,?CD? MOV AX,WORD PTR DA2+1

上述语句执行后,AX中的值是( )。 A、?AD?

B、?BC?

C、?DA?

D、?CB?

46、执行PUSH BP指令时,目的操作数的物理地址表达式是( )。 A、16*SS+BP

B、16*DS+BP

C、16*CS+BP

D、16*SS+SP

47、无论是BH中原有数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是( )。 A、ADD BH,01H C、XOR BH,01H

B、OR BH,01H D、TEST BH,01H

48、检查二个无符号数的关系,若要实现AL>=BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是( )。 A、JNC LOP1

B、JA LOP1

C、JC LOP1

D、JGE LOP1

49、设CL=8,AL=0C8H,执行SAR AL,CL后,AL中的数据是( )。 SAR算术右移指令,最高位不变,最低位移入CF A、0FFH

B、80H

C、00H

D、0FEH

50、完成将AX清零,并且使CF清零,下面错误的指令是( )。 A、SUB AX, AX C、XOR AX,AX

B、AND AX, 0 D、MOV AX,0

51、8086/8088系统执行传送指令MOV时( )。 A、不影响标志位

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

C、影响SF符号标志

52、下面关于保护现场和恢复现场的描述,不正确的是(c) A、保护现场和恢复现场工作可在主程序中完成 B、保护现场和恢复现场可在子程序中完成 C、保护现场和恢复现场工作只能在子程序中完成

D、保护现场和恢复现场既可在主程序中完成,也可在子程序中完成。 53、下面( )描述属于子程序嵌套调用。 A、某程序调用子程序

B、某程序调用子程序1,子程序又调用了子程序2。 C、某程序调用一个或多个子程序 D、某程序调用了两个子程序

54、执行CALL子程序调用指令时,CPU会自动地将断点压入堆栈保护。断点指的是( )。 A、CALL指令所在的地址

B、CALL指令的下一条指令的首地址

C、子程序入口地址 D、CALL指令所在的段地址

55、执行RET指令后,CPU自动将断点弹到相应的寄存器中。如果是段间返回,返回的操作是( ) A、先弹出送IP,后弹出送CS C、弹出送IP

B、先弹出送CS,后弹出送IP D、弹出送CS

56、能够与SS寄存器组合形成堆栈区物理地址的寄存器是( )。 A、BX

B、BP

C、IP

D、SI

57、不能作为地址指针寄存器的是( )。 A、CX

B、BX

C、SI

D、DI

58、将-1存入AX中,其内容为( )。 A、FFFFH

B、-0001H

C、FFH

D、8001H

59、下列指令中有语法错误的是( )。 A、PUSH AX C、POP CS

B、PUSH [20H+SI+BX] D、PUSH ES

60、十进制数-40用十六位二进制补码表示为( )。 A、FF40H

B、8040H

C、4000H

D、FFD8H

61、在程序中采用DOS系统功能调用退出用户程序时,在使用INT 21H指令前,应选用( )指令。 A、MOV AX,4CH C、MOV AH,4CH

B、MOV AL,4CH D、RET

62、8086CPU不能用指令直接访问的寄存器是( )。 A、SS

B、BP

C、ES

D、IP

63、能够与SS寄存器组合形成堆栈区物理地址的寄存器是( )。 A、BX

B、BP

C、IP

D、SI

64、使用DOS系统功能调用时,使用的软中断指令是( )。 A、INT 21H

B、INT 10H

C、INT 16H

D、INT 21

65、设AL=0AH,下列指令执行后能使AL=05H的是( )。 A、NOT AL

B、AND AL,0FH D、OR AL,0FH

C、XOR AL,0FH

66、下列指令中操作数在代码段中的是( )。 A、MOV AL,42H C、SUB [BX],DI

B、ADD AL,BL D、INC [DI]

67、表示过程定义结束的伪指令是( )。 A、ENDS

B、END

C、ENDM

D、ENDP

69、以寄存器DI间接寻址的存储器字节单元内容加1的指令是( )。 A、INC [DI]

B、INC DI

C、ADD [DI],1 D、INC BYTE PTR[DI]

70、指令SCASB操作数的段地址一定在( )寄存器中。 A、DS

B、ES

C、SS

D、CS

71、转移指令JMP NEAR PTR PROCA的转移范围是( )。 A、8000H~7FFFH C、80H~7FH

B、7FFFH~0FFFH D、0FH~7FH

72、串操作指令中,每次操作后使SI/DI为减量应设置( )。 A、DF=0

B、TF=1

C、DF=1

D、TF=0

73、指令MUL CX是将( )。

A、(CX,AX)←(AX)×(CX) B、(AX,CX)←(AX)×(CX) C、(DX,AX)←(AX)×(CX) D、(AX,BX)←(AX)×(CX) 74、下列指令中,( )指令影响8086标志寄存器的标志位。 A、MOV

B、NOT

C、XCHG

D、TEST

75、指令TEST AL,02H的含义是( )。 A、测试AL是否等于02H

B、测试AL第2位状态

D、将AL与02单元的各位进行测试

C、测试AL第1位状态

76、某存储单元的物理地址是12345H,可以作为它的段地址有( )。 A、2345H

B、12345H

C、12340H

D、1234H

77、AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是( )。 A、指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B、指令AND AX,0FH执行后,分离出AL低四位

C、指令OR DX,1000H执行后,将DX最高位置1,其余各位置0

D、NOT AX,执行后,将AX清0 78、下面有语法错误的指令是( )。 A、LDS BL,VAR[SI] C、LES DI,VAR[BX]

B、LEA BX,VAR[SI]

D、LEA DI,VAR[BP]

79、无条件转移指令JMP实现段间间接转移,转移的目标地址在( )。 A、某个16位通用寄存器中 C、某个字存储单元中

B、两个16位通用寄存器中 D、某个双字存储单元中

80、8088/8086存储器分段,每个段不超过( )。 A、64K个字

B、32K个字节

C、1兆个字节

D、64K个字节

81、若AX=-15要得到AX=15应执行的指令是( )。 A、NEG AX

B、NOT AX

C、INC AX

D、DEC AX

82、已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是( )。 A、2025∶0F2A C、2000∶017A

B、2108∶00EA D、2100∶117A

83、用REPE SCASB指令对字符串进行扫描,如CX>0时,扫描结束,那么表示( )。

A、在字符串中有一个AL中指定的字符 B、在字符串中遇上第一个AL中指定的字符 C、在字符串中遇上第一个不是AL中指令的字符 D、在字符串中有一个不是AL中指定的字符 84、将AX中有符号数除以2的正确指令是( )。 A、SHR AX,1 C、ROR AX,1

B、SAR AX,1 D、RCR AX,1

85、执行1号DOS系统功能调用,从键盘输入的字符值存放在( )寄存器中。 A、AL

B、BL

C、CL

D、DL

86、将CX寄存器低4位清零的正确指令是( )。 A、AND CX,0F0H C、AND CX,1110H

B、AND CX,0FFF0H D、MOV CX,0

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

A、2030H B、3040H C、3020H D、4030H

88、下列寄存器中用来指示堆栈中任意数据区的偏移地址的是( )。 A、BX

B、BP

C、SI

D、DI

89、设AL=57H,BL=24H,执行指令SUB AL,BL后,寄存器内容为( )。 A、AL=57H,BL=24H C、AL=57H,BL=33H

B、AL=33H,BL=24H D、AL=33H,BL=0

90、下列指令执行后影响CF值的是( )。 A、DEC

B、XCHG

C、LEA

D、SHL

91、CPU要访问的某一存储单元的实际地址称( )。 A、段地址

B、偏移地址

C、物理地址

D、逻辑地址

92、汇编语言指令中唯一不可缺少的部分是:( )。 A、标号名字

B、助记符

C、操作数

D、注释

93、中断服务程序入口地址占用( )个字节。 A、 4

B、6

C、2

D、1

94、有语句:COUNT EQU 256,下列四种叙述中,正确的是( )。 A、COUNT是变量

B、COUNT占用一个字节存储单元 D、COUNT占用二个字节存储单元

C、COUNT是符号常数

95、( )环境下,可以对源程序进行汇编、修改和执行。 A、LINK

B、MASM C、DOS

D、DEBUG

96、下列四条指令中错误的是( )。 A、MOV AX,[SI]

B、MOV AX,[DI] D、MOV AX,[SI-10]

C、MOV AX,[SI+DI]

97、执行下列( )指令后,就能用条件转移指令判断AL和BL寄存器中的最高位是否相同? A、TEST AL,BL C、AND AL,BL

B、CMP AL,BL D、XOR AL,BL

98、下列四条指令执行后不影响标志位的是( )。

A、JNC NEXT C、SHL AX,1

B、CMP AX,BX D、OR AL,AL

99、定义宏指令的伪指令是( )。 A、PROC和ENDP C、EQU和END

B、CODE和ENDS D、MACRO和ENDM

100、在下列寄存器中,代码段寄存器是( )。 A、DS

B、ES

C、CS

D、SS

101、有数据定义语句BUF DW 0ABH,1,10 DUP(3 DUP(1,0),2)汇编后,为变量BUF分配的存储单元字节数是( )。 A、48H

B、90H

C、120 D、60

102、若有BUF DW 1,2,3,4。则可将数据02H取到AL寄存器中的指令是:( )。

A、MOV AL,BYTE PTRBUF+1 B、MOV AL,BYTE PTRBUF+2 C、MOV AL,BYTE PTRBUF+3 D、MOV AL,BYTE BUF2 103、指令指针寄存器是( )。 A、IP

B、 SP

C、BP

D、PSW

104、下列指令执行后总是使CF=0,OF=0的是( )。 A、AND

B、NEG

C、NOT

D、INC

105、确定下列哪些数据在汇编语言中是非法的( )。 A、F3H

B、10101010B

C、123 D、137Q

106、现用数据定义伪指令定义数据:BUF DB 4 DUP(0,2 DUP(1,0)) 问定义后,存储单元中有数据0100H的字单元个数是( )。 A、4

B、3

C、8

D、12

107、计算机系统由()组成。

A、硬件系统和软件系统 B、系统硬件和系统软件 C、CPU和系统软件 D、操作系统和主机

108、8086/8088微处理器中,既可作为16位寄存器也可分为两个8位寄存器用

的寄存器是( )。 A、BP SP SI DI C、CS DS SS ES

B、AX BX CX DX D、AX BX SI DI

109、用DEBUG调试汇编语言程序时,显示某指令的地址是2F80:F400,此时段寄存器CS的值是( )。 A、F400H

B、2F80H

C、F4000H

D、2F800H

110、已知AX=0001H,下列四条指令执行后,不能使ZF=1的语句是( )。 A、DEC AX B、SUB AX, 1 C、AND AX , 1 D、CMP AX,1 111、设DS=8225H,DI=3942H,指令MOV BX,[DI]源操作数的物理地址是( )。 A、85B92H

B、86192H

C、BB690H

D、12169H

112、如果内存中某一单元的逻辑地址为2318H:0035H,它的段地址、偏移地址及物理地址是( )。 A、2318H、0035H、231B5H

B、2318H、0035H、234DH D、2318H、00350H、2668H

C、23180H、0035H、23215H

113、存储单元有惟一的物理地址,但可用不同段地址和偏移地址表示。若存储单元的物理地址是88D52H,则下面( )的表示是正确的。 A、8561H:3742H C、85610H:3742H

B、8561H:3752H D、3752H:85610H

114、控制寄存器是指() A、BP SP

B、SP IP

C、SI DI

D、IP FLAGS

115、FLAGS寄存器中,属于控制标志位的是() A、CF AF PF

B、DF IF TF

C、OF SF ZF

D.DF OF CF

116、用DEBUG调试汇编语言程序时,显示某指令的地址是2F80:F400,此时段寄存器CS的值是( )。 A、F400H

B、2F80H

C、F4000H

D、2F800H

117、设DS=1100H,(12000H)=80H,(12001H)=20H,(12002H)=30H,执行MOV AX, [1000H]则AX=( )。 A、8000H

B、0080H

C、2080H

D、8020H

118、CPU与存储器之间的信息交换使用的是()

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

119、若各段地址分配如下:数据段为1K,代码段为4K,堆栈为8K,附加段为16K。若从10000H开始分段,各段依次相连,段地址寄存器的值是() A、DS=1000H CS=1040H SS=1140H ES=1340H B、DS=1000H CS=1010H SS=1150H ES=13D0H C、DS=1000H CS=1040H SS=1050H ES=13D0H D、DS=1000H CS=1040H SS=1200H ES=1400H

120、有指令MOV AX,1234H,指令中的立即数1234H是存储在( )。 A、数据段

二、填空题

B、代码段 C、附加段 D、堆栈段

循环程序可由循环初始化、循环体、循环控制三部分组成。 循环初始化、循环体、循环控制

在存取一个存储器操作数时,段地址必须由相应的段寄存器提供。 相应的段寄存器

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

设BX=1152H,偏移量D=3568H,那么指令 “ADD D[BX],AL”中目的操作数的有效地址EA= 。 46BAH

在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是CMPS或SCAS才有实际意义。 CMPS、SCAS

有指令MOV CL,N完成将一个有符号数送入CL,要使该指令合法,则N的最大值是 127 ,最小值是 -128。(用十进制表示) 127,-128

中断INT 12H 在中断向量表中的物理地址是48H、49H、 4AH和4BH。 48H、49H、4AH、4BH

“=”和“EQU”两条伪指令有相同的功能,它们之间的区别是EQU伪指令不允许对符号名重复定义。 EQU

在汇编语言源程序文件中,每一个段都有段定义伪指令SEGMENT和ENDS来分段。 SEGMENT

存储器的存储单元的物理地址由两部分组成,它们是 和 。 段地址、偏移地址/有效地址/EA(3种写法均可以)

偏移地址可由各种成份组成,也称为有效地址,用EA表示。 有效地址、EA

取指令时,默认的段寄存器是 CS ,堆栈操作时,默认的段寄存器是 SS ,通用数据读写,默认的段寄存器是DS ,目的串操作时,默认的段寄存器是 ES ,以BP作为基地址进行存取方式时,默认的段寄存器是 SS 。 CS、SS、DS、ES、SS

DOS系统功能调用中1 号调用的功能是 ;2号调用的功能是 ;9号调用的功能是 ;10号调用的功能是 。 输入一个字符、显示一个字符、显示一个字符串、输入一个字符串

CF是程序状态字寄存器中的 标志位,ZF是 标志位,SF是 标志位。

进位、零、符号

要将二进制数10100110B输出到端口25H,可用MOV AL,10100110B 和OUT 25H,AL两条语句来实现。 MOV AL,10100110B、OUT 25H,AL

汇编语言源程序在计算机上不能直接运行,必须经过 和 后才能形成一个可执行文件。 编译、链接

8086/8088CPU中,有二个变址寄存器,分别是 SI 和 DI 。 SI、DI

在8086/8088系统中,存储器是分段的,每段最大长度是 64K 字节。 64K

内存的地址区域从00000H开始为中断向量表。 00000H

子程序的参数传送方式有寄存器 、 地址表 、 堆栈 等。

寄存器参数传送方式、地址表参数传送方式、堆栈参数传送方式

子程序调用和返回是通过指令 和 来实现的。 CALL、RET

逻辑运算指令都是按位操作的,其中 NOT 指令执行后不影响任何标志位,其他指令执行后,标志位 CF 和 OF 一定是0。

NOT、CF、OF

在1M字节的存储器中,每个存储单元都有一个唯一的 位地址(二进制形式),称为该物理单元的物理地址。 20

若(SP)=0FFFFH,则指令POP AX执行后,(SP)=0001H 0001H

n位补码的表数范围为:- ≤N≤+ 。 2n-1、2n-1-1

指令MOV AX,SEG BUF的执行,是把BUF所在的段地址送到AX中。 BUF所在的段地址

当标志位 CF =1时表示无符号数运算产生溢出,而当标志位 OF =1是表示带符号数运算产生溢出。 CF、OF

外中断有两种类型,分别是 可屏蔽中断和 非屏蔽中断 可屏蔽中断、非屏蔽中断

已知DS=29A0H,某数据的物理地址是2A400H,则当DS=6700H时,该数据的物理地址是 67A00H 67A00H

要将二进制数10100110B输出到端口25H,可用 和 两条语句来实现。

MOV AL,10100110B;OUT 25H,AL

中断INT 10H 在中断向量表中的物理地址是 、 、 和 。 40H,41H,42H,43H

在汇编语言源程序文件中,每一个段都有段定义伪指令 SEGMENT 和ENDS来分段。SEGMENT

汇编语言源程序在计算机上不能直接运行,必须经过编译 和 连接 后才能形成一个可执行文件。 编译,连接

一条指令由 操作码 和操作数 两部分组成。 操作码,操作数

子程序的调用和返回是通过指令 CALL 和RET 来实现的。 CALL,RET

8086/8088指令系统中,所有指令的目的操作数均不能为 立即 寻址方式。

立即

1、现有数据定义伪指令如下,写出对应的数据在存储单元中的存放形式。 BUF1 DB 01,52H

BUF2 DW 3 DUP(?,0)

BUF3 DB 2 DUP(0,2DUP(1,2),3) BUF1 BUF2 BUF3 BUF1 01 52

BUF2 - - 0 0 - - 0 0 - - 0 0 BUF3 0 1 2 1 2 3 0 1 2 1 2 3

2.有两个16位数1000H和ABCDH分别存放在内存10000H和10004H单元中,试用图表示他

们在内存中的存放情况。

3.若在内存中建立50个字的数据区,其起始地址为1000:0100,试给出数据区第一个字单元和最后一个字单元的物理地址。

解:第一个字的物理地址=1000H*10H+0100H=10100H 最后一个字的物理地址=10100H+(50-1)*2=10162H

4、什么是伪操作?简述伪指令和指令的区别?

答:伪操作是汇编程序对源程序进行汇编时处理的操作,完成处理器选择、存储模式定义、数据定义、存储器分配、指示程序开始结束等功能。

伪指令和指令的区别在于,每一条指令必须生成机器代码,然后在程序运行期间由CPU来执行其操作;而伪指令是在汇编期间由汇编程序执行的操作命令,除了数据定义及存储器分配伪指令分配存储器空间外,其它伪指令不生成目标码。

5、已知AX=1234H,CX=0302H,CF=0,指出下述指令执行后的结果及标志位CF、SF、ZF、OF的值分别是多?

解:1234H+0302H=1536H,指令执行后,AX的值为1536H。

没有产生进位,CF=0;结果为正数,SF=0;结果不等于0,故ZF=0;两正数相加,结果为正,故无溢出,OF=0。

6、在0624H单元内有一条二字节JMP SHORT OBJ指令,如其中位移量为(1)27H,(2)6BH,(3)0C6H,试问转向地址OBJ的值是多少?(要有计算过程) (1)0624H+2H+27H=064DH (2)0624H+2H+6BH=0691H (3)0624H+2H+0FFC6H=05ECH

7、求出15F4H减去4EA0H之差,并根据结果设置标志位SF、ZF、CF和OF的值。 15F4H-4AE0H=0C754H,其中 SF=1 ZF=0 CF=1 OF=0

8、如TABLE为数据段中0032单元的符号名,其中存放的内容是1234H,试问以下两条指令有什么区别?指令执行完后BX寄存器的内容是什么?(5分) (1)MOV BX,TABLE (2)LEA BX,TABLE

MOV指令是数据传送指令,是将TABLE对应的存储单元中的内容送入BX,因此,指令执行完后BX的内容为1234H,而LEA指令是地址传送指令,是将TABLE的偏移地址传送给BX,因此,指令执行完后BX的内容为0032H。

9、请简述指令JMP DI和JMP [DI]的相同点与不同点。

这两条指令都是无条件的段内间接转移指令,不同的是JMP DI采用的寄存器寻址方式,转移到以(DI)内容为偏移地址的单元去执行指令;而JMP [DI]则采用的是寄存器间接寻址方式,转移到以(DI)间接寻址的内存单元内容为偏移地址的单元去执行指令。

10、宏指令与子程序有什么不同之处? 宏指令实际上就代表了它对应的一组指令。对程序中出现的宏指令进行汇编时,这条宏指令被它对应的一组指令所代替。如果程序中多次使用宏指令,就等于多次重复拷贝了这个指令组,占用的内存随之增加。

调用子程序通过执行CALL指令实现,存在“主程序”与“子程序”之间的两次控制转移。使用宏指令不存在控制转移的过程。

使用子程序和宏指令都可以提高编程效率。子程序占用固定大小的存储空间,被主程序调用时,空间不会随调用次数而增加。但是,宏指令占用存储空间会随着使用次数的增加而增加。 11、求出16进制数4321H与62A0H的和,并根据结果设置标志位SF、ZF、CF和OF。 4321H+62A0H=A5C1H,其中SF=1,CF=0,ZF=0,OF=1 12、程序分析题

MOV AX,1234H MOV BX,AX NEG BX ADD AX,BX

请写出以上程序段执行后,(AX)=?,(BX)=?,CF=?

参考答案(AX)=0,(BX)=0EDCCH,CF=1 13、设某数据段: DATA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB ?COMPUTER? DB 0AH,0DH COUNT EQU $-DA1

DA2 DW ?CO?,?MP?,?UT?,?ER? DATA ENDS

试回答:1)DA1的偏移地址是多少?2)COUNT的值是多少?3)DA2+5字节单元的内容是多少?

参考答案: 1)20H 2)0AH 3)?U?的ASCII码

14、DA_B DB 0CH,9,8,0FH,0EH,0AH,2,3,7,4 ┇

XOR AX,AX XOR CL,CL XOR BX,BX

LOP: TEST DA_B[BX],01H JE NEXT

ADD AL,DA_B[BX] INC AH NEXT:INC BX INC CL CMP CL,10 JNE LOP

上述程序段运行结束后,AH=__4____,AL=__34____。如果把”JE NEXT“指令改为“JNE NEXT“指令,那么AH=__6____,AL=__50____。 参考答案4、AH=4,AL=34;AH=6,AL=50 15、分析下面程序,回答指定问题:

MOV AX,DX NOT AX ADD AX,DX INC AX

试回答:(AX)= ,(ZF)= 。(0,1) 16、BUF DW 0000H

LEA BX,BUF STC

RCR WORD PTR[BX],1 MOV CL,3

SAR WORD PTR[BX],CL

问:该程序段执行后,存储单元BUF的内容为 。(0F000H或十进制数-4096) 17、BLOCK DB 20,1FH,08H,81H,0FFH? RESULT DB ? ┇

START:LEA SI,BLOCK MOV CX,[SI] INC SI

MOV AL,[SI] LOP1: CMP AL,[SI+1] JNG NEXT

MOV AL,[SI+1] NEXT: INC SI LOOP LOP1

MOV RESULT,AL HLT

问:(1)该程序完成的功能是 ;

(2)该程序的循环次数是 。(从BLOCK数组中找出最小数,并送入RESULT单元;循环次数为20) 18、MOV AX,00FFH MOV BX 0FFFFH XOR AX,BX NEG AX

问:该程序段执行后,AX= ,CF= 。(0100H (CF)=1) 19、MOV BX,1234H

MOV AX,BX NEG AX ADD AX,BX

问:该程序段执行后,AX= ,CF= 。(0000H,1) 20、MOV AL,01H ROR AL,1 OR AL,AL NEG AL

上述程序段执行后,AL= ,CF= 。(AL=80H, CF=1) 21、已知有如下指令

MOV AX,A AND AX,0FF0H MOV A,AX OR A,000FH

1)以上指令实现的功能是什么?

2)若已知(A)=2525H,那么执行以上指令后,(A)=? 3)若已知(A)=5252H,那么执行以上指令后,(A)=?

1)将A高4位清0,低4位置1;2)(A)=052FH,3)(A)=025FH 22、设AL中高低4位分别有大于7的数, MOV AH,AL AND AH,88H MOV AL,AH OR AL,11H

程序段运行后,AH=_________,AL=_________。 AH=88H(2分),AL=99H

23、设DS=4000H,DI=0,内存单元4000F~40013H内容依次为02H,00H,38H,01H和40H,执行下面程序段后,(DS)=?,(CL)=?,(BX)=? MOV SI,[DI+0FH] MOV BX,[DI+10H] MOV AX,[DI+12H]

MOV DS,AX MOV CL,[SI+1]

(DS)=4001H,(CL)=40H,(BX)=3800H

24、XOR AX,AX MOV BX,2 MOV CX,10 LP:ADD AX,BX ADD BX,2 LOOP LP

1)该程序段的功能是什么?

2)程序执行后,(AX)=?,(BX)=?,(CX)=?

2、1)实现求2+4+?+20的和;2)(AX)=110;(BX)=22;(CX)=0 25、阅读以下程序代码,分析:

MOV BX,1

XOR AX,AX MOV CX,5

NEXT:ADD AX,BX INC BX

LOOP NEXT

上述程序段执行后AX=_______;BX=_______。 (AX)=000FH,(BX)=0006H 26、阅读以下程序代码,分析:

A: XOR CMP JZ SHL JNC INC DL,DL AX,0 BYE AX,1 B DL

B: JMP BYE: ……

A

试说明该程序段完成的功能。

该程序段完成的功能是统计AX中1的个数。 27、试分析下面的程序段完成什么功能?

MOV CL,04

SHL DX,CL MOV BL,AH SHL AX,CL SHR BL,CL OR DL,BL

程序功能:将(DX)(AX)中双字内容左移4位。 28、DA1 DB ?01234?

DA2 DB 5DUP(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]指令的操作数是什么寻址方式? 1)41H,43H,43H,45H,45H;2)寄存器相对寻址

29、在某子程序的开始处要保护AX、BX、CX、DX四个寄存器信息,在子程序结束时要恢复这四个寄存器信息。例如:

PUSH AX

PUSH BX ;保护现场 PUSH CX PUSH DX ……

;恢复现场

试写出恢复现场时的指令序列。 POP DX POP CX POP BX POP AX

30、指出下列指令源操作数的寻址方式: MOV AX,ES:[BX] 寄存器间接寻址方式 MOV AX,20[BX+SI] 相对基址变址寻址方式 MOV AX,ARRAY 直接寻址方式 MOV AX,[BX+DI] 基址变址寻址方式 MOV AX,1200H 立即寻址方式

程序填空题

1、下述程序段完成计算2~20之间的偶数的和,并将结果存于AX中,试把空白处填上适当的指令(每一空白只填一条指令) XOR AX,AX MOV BX,0 MOV CX,11 CONT:ADD AX,BX ADD BX,2 LOOP CONT

(第一空MOV CX,11,第二空ADD BX,2) 2、下面程序段判断A单元的有符号数,并根据其值小于0,等于0,大于0,分别将0FFH,00H,01H送入B单元中。在空白处填上适当的指令(每一空白处只填一条指令) MOV AL,A CMP AL,0 JLE AA

MOV B,1

JMP DONE AA: JL BB MOV B,0 JMP DONE BB: MOV B,0FFH DONE:HLT

(第一空JLE AA,第二空JMP DONE)

3、下列程序段的功能是把0~9的数据转换为相应的ASCII码。请在每个空白处填上一条指令。 DAT DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASC DB 10 DUP(?) COUN=ASC-DAT LEA SI,DAT

LEA DI,ASC MOV CX,10 LOP:MOV AL,[SI]

ADD AL,30H MOV [DI],AL INC SI INC DI LOOP LOP HLT

(第一空MOV CX,10,第二空 ADD AL,30H或OR AL,30H)

4、下面程序完成将0100H开始的100个字节数据搬移到从0180H开始的存储单元中,设DS、ES已设置好且其值相等。在每个空白处填上一条适当的指令。

MOV SI,0100H MOV DI,0180H MOV CX,100 CLD

REP MOVSB

(参考答案MOV CX,100、REP MOVSB)

5、设字符串的段地址、偏移地址和长度已经分别存于DS、SI和CX中,要统计其中字符“P”的个数,并存于DL中。试把空白处填上适当的指令(每一空白只填一条指令) MOV AL,?P? MOV DL,0 NEXT:CMP AL,[SI] JNZ/JNE CONT INC DL CONT:INC SI LOOP NEXT (第一空JNZ/JNE CONT,第二空 LOOP NEXT)

6、某程序段要用单个字符显示的2号DOS功能调用去显示一字符串“STRING”。试在下面空白处填上适当的指令

STR1 DB ‘STRING’,’$’ ?? ?? ??

MOV BX,OFFSET STR1 LOP:MOV DL,[BX] MOV AH,02H INT 21H INC BX

__ CMP [BX],‘$’ JNE LOP

(第一空 INC BX,第二空 CMP [BX],‘$’)

7、在以BLOCK为首地址的数据区存放了一组带符号数,下面程序的功能将该数据中所有的负数累加起来,然后再求其绝对值,并送入SUM单元。试在程序中填补上空缺的指令。

DATA DB 60,70,-28,-99,-100,-25,?,97 SUM DW ?

MOV CX,SUM-DATA XOR DX,DX

MOV BX,OFFSET DATA LOP: MOV AL,[BX] TEST AL,80H JZ NEXT CBW

ADD DX,AX NEXT:INC BX

LOOP LOP

NEG DX MOV SUM,DX

(第一空 JZ NEXT,第二空 NEG DX)

8、在以ARRAY为首地址的数据区存放了一组带符号数,下面程序的功能将该数据中所有的负数送入ARRAY1数据区,其余送入ARRAY2中。试在程序中填补上空缺的指令

ARRAY DB 25,63,-103,2,75,75,-1,-65,?,100 N EQU $-ARRAY ARRAY1 DB N DUP(?) ARRAY2 DB N DUP(?) ??

MOV CX,N MOV BX,0 MOV SI,0 MOV DI,0

LOP: MOV AL,ARRAY[BX] CMP AL,0 JAE NEXT1

MOV ARRAY1[SI],AL INC SI JMP NEXT2

NEXT1:MOV ARRAY2[DI],AL INC DI NEXT2:INC BX LOOP LOP

(第一空 MOV ARRAY1[SI],AL; 第二空 MOV ARRAY2[DI],AL)

9、下述程序段完成计算1+2+?+10的和,并将结果存于AX中,试把空白处填上适当的指令(每一空白只填一条指令) XOR AX,AX MOV BX,0 MOV CX,11 CONT:ADD AX,BX INC BX LOOP CONT

参考:MOV CX,11;LOOP CONT

10、下述程序段完成计算2~20之间的偶数的和,并将结果存于AX中,试把空白处填上适当的指令(每一空白只填一条指令)

XOR AX,AX MOV BX,0 MOV CX,11 CONT:ADD AX,BX

ADD BX,2 LOOP CONT

MOV CX,11;ADD BX,2

11、下列程序段的功能是把0~9的数据转换为相应的ASCII码。请在每个空白处填上一条指令。

DAT DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H ASC DB 10 DUP(?) CON=ASC-DAT LEA SI,DAT

LEA DI,ASC

MOV CX,CON LOP:MOV AL,[SI] ADD AL,30H

MOV [DI],AL INC SI INC DI LOOP LOP HLT

MOV CX,CON;ADD AL,30H或OR AL,30H

12、某程序段要用单个字符显示的2号DOS功能调用去显示一字符串“STRING”。试在下面空白处填上适当的指令

STR1 DB ‘STRING’,’$’ ?? ?? ??

MOV BX,OFFSET STR1 LOP:MOV DL,[BX] MOV AH,02H INT 21H (1)

(2)

JNE LOP (1)INC BX (2)CMP BX,?$? 13、设字符串的段地址、偏移地址和长度已分别存于DS、SI和CX中,要统计其中字符“P”的个数,并存于DL中。试把空白处填上适当的指令。

MOV AL,‘P’ MOV DL,0 NEXT:CMP AL,[SI] JNE CONT INC DL CONT:INC SI LOOP NEXT 1)JNE CONT或JNZ CONT;2)LOOP NEXT

14、下面程序段完成用串指令在DA1开始的26个字节单元中依次存放A-Z的ASCII码,在DA2开始的26个字节单元中依次存放Z-A的ASCII码,请在横线处各填一条指令。 DA1 DB 26 DUP(?)

DA2 DB 26 DUP(?) ?? LEA DI,DA1 (1) MOV AL,?A? MOV CX,26 CLD

LOP1:STOSB (2) INC AL LOOP LOP1 MOV CX,26 LOP2:(3) DEC AL STOSB LOOP LOP2

1)MOV AL,?A? ;2)INC AL; 3)DEC AL

15、从键盘逐一输入字符,并从显示器输出,当输入到字符‘$’时,则程序退出返回。请在下列程序中的空格处填入适当指令使其完整。 NEXT:MOV AH,1 INT 21H (1) CMP AL,‘$’ JZ EXIT (2)MOV DL,AL MOV AH,2 INT 21H (3) JMP NEXT EXIT: RET

1)CMP AL,‘$’;2)MOV DL,AL;3)JMP NEXT

16、在AL中有一个十六进制数的ASCII码,完成下面程序段在每一空白处填上一条适当指令,实现将AL中的ASCII码转换成二进制数。

CMP AL,3AH JB DONE SUB AL,7

DONE: SUB AL,30H

HLT

(参考答案JB DONE、SUB AL,30H)

17、下列程序完成的是在3个数中找出最小的数放于AL中,请在程序中的空格处填入一条适当的指令使其完整。(5分)

MOV AL,X MOV BL,Y MOV CL,Z CMP AL,BL (1)JLE NEXT1 (2)XCHG AL,BL

NEXT1:CMP AL,CL (3)LE NEXT2 (4)XCHG AL,CL NEXT2:RET

1)JLE NEXT1;2)XCHG AL,BL;3)JLE NEXT2;4)XCHG AL,CL

19、本程序实现将BX寄存器内的二进制数用十六进制的形式,在屏幕上显示出来,请将没写完的空格埴上。 CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE START:PUSH DS SUB AX,AX (1) PUSH AX MOV CH,(2) 4 ROTATE:MOV CL,4 ROL BX,CL MOV AL,BL

AND AL,(3) 0FH ADD AL,30H

CMP AL,(4) 3AH JL PRINTIT ADD AL,7H

PRINTIT:MOV DL,AL MOV AH,2

INT 21H

DEC (5) CH JNZ ROTATE RET MAIN ENDP CODE ENDS END START

1)PUSH ; 2)4; 3)0FH; 4)3AH; 5)CH

20、以下代码实现用10个1初始化内存单元BUF缓冲区,请在空白处填上适当指令。

MOV AX,SEG BUF MOV ES,AX

LEA DI

MOV CX,10 MOV AL,31H

BUF 、 CLD REP STOSB

参考答案:LEA DI,BUF、CLD

21、下述程序段完成计算1+2+…+10的和,并将结果存于AX中,试把空白处填上适当的指令(每一空白只填一条指令)

XOR AX,AX MOV BX,0 MOV CX,11 CONT:ADD AX,BX INC BX LOOP CONT (第一空MOV CX,11 ,第二空LOOP CONT)