1
大学课程《汇编语言程序设计》模拟试题
一、单项选择题
1、指令JMPFARPTRDONE属于(C)。
A.段内转移直接寻址B.段内转移间接寻址
C.段间转移直接寻址D.段间转移间接寻址
2、执行下面指令序列后,结果是(A)。
MOVAL,82H
CBW
A.AX=0FF82HB.AX=8082HC.AX=0082HD.AX=0F82H
3、8088/8086存储器分段,每个段不超过(D)。
A.64K个字B.32K个字节C.1兆个字节D.64K个字节
4、CPU发出的访问存储器的地址是(A)。
A.物理地址B.偏移地址C.逻辑地址D.段地址
5、BUFDW10HDUP(3DUP(2,10H),3,5)
上述语句汇编后,为变量BUF分配的存储单元字节数是(B)。
A.80HB.100HC.124D.192
6、若AX=-15要得到AX=15应执行的指令是(A)。
A.NEGAXB.NOTAX
C.INCAXD.DECAX
7、8086/8088系统执行传送指令MOV时(A)。
A.不影响标志位B.影响DF方向标志C.影响SF符号标志D.影响CF进位标志
8、MOVAL,79
ADDAL,0B1H
上面指令执行后,设置的标志位CF和OF的值是(D)。
A.CF=0,OF=1B.CF=1,OF=1C.CF=0,OF=1D.CF=1,OF=0
9、检查BUF的内容是否为正偶数,如是正偶数,则AL=0。下面程序段正确的是(C)。
A.MOVAL,BUFB.MOVAL,BUF
JSK1ANDAL,11
SHRAL,1JNZK2
JNCK1MOVAL,0
MOVAL,0K2:……
K1:
C.MOVAL,BUFD.MOVAL,BUF
TESTAL,81HJNPK4
JNZK3TESTAL,80H
MOVAL,0JNZK4
K3:MOVAL,0
K4:
10、下列指令中操作数在代码段中的是(A)。
A.MOVAL,42HB.ADDAL,BLC.SUB[BX],DID.INC[DI]
11、与MOVBX,OFFSETVAR指令完全等效的指令是(D)。
A.MOVBX,VARB.LDSBX,VAR
2
C.LESBX,VARD.LEABX,VAR
12、下列指令执行后对源和目的操作数均无影响的是(D)。
A.MOV[BX+2],AXB.SUBAX,2467H
C.SBB[SI],BXD.CMPAX,BX
13、表示过程定义结束的伪指令是(A)。
A.ENDPB.ENDSC.ENDD.ENDM
14、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有
(D)。
A.CMPB.SUBC.ANDD.MOV
15、上面指令执行后,AX的内容是(A)。
A.0302HB.0203HC.0202HD.0303H
16、BUF1DB3DUP(0,2DUP(1,2),3)
COUNTEQU$-BUF1
符号COUNT等价的值是(B)。
A.6B.18C.16D.8
17、DA1DW2A05H
DA2DB0FAH
…
MOVAL,BYTEPTRDA1
SUBDA2,AL
上述指令执行后,DA2中的内容是(C)。
A.0DAHB.0FAHC.0F5HD.0D0H
18、为在一连续的存储单元中依次存放数据41H,42H,…,48H,下面的数据定义语句中
有语法错误的是(B)。
A.DB41H,42H,43H,44H,45H,46H,47H,48H
B.DW4142H,4344H,4546H,4748H
C.DB‘ABCDEFGH''
D.DW‘BA'',‘DC'',‘FE'',‘HG''
19、设(SP)=0028H,执行段内返回指令RET6后,SP的内容是(C)。
A.0036HB.0022HC.0030HD.0020H
20、条件转移指令JNBE产生转移的条件是(A)。
A.CF=0ANDZF=0B.CF=0ANDZF=1
C.CF=1ANDZF=0D.CF=1ANDZF=1
21、下列寄存器中,作为16位寄存器的是(D)。
A.ALB.BLC.CHD.DX
22、在程序运行过程中,确定下一条指令的物理地址的计算表达式是(C)。
A.DS16+SIB.ES16+DIC.CS16+IPD.SS16+SP
23、物理地址(10FF0H)=10H,(10FF1H)=20H,(10FF2H)=30H,从地址10FF1H
中取一个字的内容是(B)。
A.1020HB.3020HC.2030HD.2010H
24、将AX清零,下列指令错误的是(C)。
A.SUBAX,AXB.XORAX,AXC.ORAX,00HD.ANDAX,00H
25、下列指令中,影响或修改标志位的是(D)。
A.LOOPZB.JNLEC.PUSHFD.POPF
3
26、设DS=8225H,DI=3942H,指令NEGBYTEPTR[DI]操作数的物理地址是(A)。
A.85B92HB.86192HC.BB690HD.12169H
27、通用数据传送指令中,错误的是(D)。
A.累加器到存储器B.立即数到存储器C.寄存器到存储器D.存储器到存储器
28、移位指令中,应先将移位次数放在(D)。
A.AXB.ALC.CXD.CL
29、MOVAL,79
ADDAL,0B1H
上述指令执行后,CF和OF的值是(D)。
A.CF=0OF=1B.CF=1OF=1C.CF=0OF=0D.CF=1OF=0
30下列语句中能实现留空8个字节单元的语句是(D)。
A.DA1DT?B.DA2DW?,?
C.DA3DD?D.DA4DQ?
31、循环指令LOOPNZ终止循环的条件是(B)。
A.CX=0,且ZF=0B.CX=0,或ZF=1C.CX10,且ZF=0D.CX10,或ZF=1
32、设DL=55H,执行指令后能使DL中的数据为0AAH的指令是(D)。
A.TESTDL,0AAHB.ORDL,0AAH
C.NEGDLD.XORDL,0FFH
33、完成同指令XCHGAX,BX相同功能的指令或指令序列是(D)。
A.MOVAX,BXB.MOVBX,AX
C.PUSHAXD.MOVCX,AX
POPBXMOVAX,BX
MOVBX,CX
34、JMPBX的目标地址的偏移量为(A)。
A.BX的内容B.BX所指向的内存单元的内容
C.IP+BX的内容D.IP+[BX]
35、在程序执行过程中,IP寄存器中始终保存的是(B)。
A.上一条指令的首地址B.下一条指令的首地址
C.正在执行指令的首地址D.需计算有效地址后才能确定地址
36、用户为了解决自己的问题,用汇编语言所编写的程序,称为(B)。
A.目标程序B.源程序C.可执行程序D.汇编程序
37、某系列微机对存储器的分段,如果每一个段最多的字存储单元(16位二进制)是32K,
那么表示段内字节单元偏移地址的二进制位数应是(B)。
A.20位B.16位C.15位D.12位
38、可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是(D)。
A.AX,BX,CX,DXB.DS,ES,CS,SS
C.SP,BP,IP,BXD.SI,DI,BP,BX
39、用一条指令仅实现将BX+SI=>AX的方法是(D)。
A.XCHGAX,[BX][SI]B.MOVAX,[BX+SI]
C.LEAAX,BX[SI]D.LEAAX,[BX][SI]
40、设SP初值为2000H,执行指令“PUSHAX”后,SP的值是(D)。
A.1FFFHB.1998HC.2002HD.1FFEH
41、条件转移指令JB产生程序转移的条件是(A)。
A.CF=1B.CF=0C.CF=1和ZF=1D.CF=1和ZF=0
4
42、选用串操作指令时,错误的操作是(D)。
A.置方向标志位B.根据串操作指令设置重复次数并送入CX
C.设置源操作数及目的操作数指针D.源操作数和目的操作数都可以加段超越
43、设AL=20H,SI=0500H,DS=3000H,(30500H)=0C0H,CF=1。执行SBBAL,[SI]
后,正确的结果是(C)。
A.AL=5FHSF=1CF=1B.AL=60HSF=1CF=0
C.AL=5FHSF=0CF=1D.AL=60HSF=0CF=0
44、设AX=1000H
NEGAX
NOTAX
执行上述指令后,正确的结果是(B)。
A.AX=1001HB.AX=0FFFHC.AX=1000HD.AX=0111H
45、CBW指令的功能是(B)。
A.把源操作数的符号位扩展到目的操作数中B.把AL中的符号位扩展到AH中
C.把AH中的符号位扩展到AL中D.把AX中的符号位扩展到DX中
46、汇编语言源程序中,每个语句可由四项组成,其中名字项是一个符号,下面列出的有效
名字是(A)。
A.VariableB.First&ldC.0FFFFHD.‘Memphis’
47、ORG0030H
DA1DB0,‘0’,30H
DWDA1
数据为3000H字存储单元的偏移地址是(A)。
A.0030HB.0031HC.0032HD.0033H
48、NUM1DB(12OR6AND2)GE0EH
NUM2DB(12XOR6AND2)LE0EH
上述数据定义语句中,NUM1和NUM2字节单元的内容分别是(D)。
A.NUM1=0,NUM2=0B.NUM1=0,NUM2=0FFH
C.NUM1=0FFH,NUM2=0D.NUM1=0FFH,NUM2=0FFH
49、要求将A,B两个字符的ASCⅡ码41H,42H顺序存放在连续两个字存储单元中,可选
用的语句是(A)。
A.DA1DB‘AB’B.DA1DW‘AB’C.DA1DB0ABHD.DA1DW0ABH
50、DA1EQUBYTEPTRDA2
DA2DW0ABCDH
┇
SHLDA1,1
SHRDA2,1
上述指令序列执行后,DA2字存储单元的内容是(C)。
A.0ABCDHB.0AB9AHC.55CDHD.559AH
51、下面语句中有语法错误的语句是(C)。
A.DB45HB.DWOABCDHC.DW‘ABCD’D.DD‘AB’
52、MOVCL,8
ROLAX,CL
ORAX,BX
假设AX=0012H,BX=0034H,那么上述程序段执行后,AX中的结果是(A)。
5
A.1234HB.3412HC.0046HD.0034H
53、执行下列指令序列后,正确的结果是(A)。
MOVAL,81H
ADDAL,AL
ADCAL,AL
A.AL=05HB.AL=204HC.AL=04HD.AL=205H
54、DA2DB12H,34H,56H,0ABH
DB$-DA2
BUF1DB10H,20H,30H
┇
LEASI,DA2
MOVCL,4[SI]
MOVCH,LENGTHBUF1
上述指令序列运行后,CX的内容是(D)。
A.03ABHB.01ABHC.0304HD.0104H
55、在汇编语言程序中,对END语句的叙述正确的是(C)。
A.END语句是一可执行语句B.END语句表示程序执行到此结束
C.END语句表示源程序到此结束D.END语句在汇编后要产生机器码
56、十六进制数88H,可表示成下面几种形式,请找出错误的表示(D)。
A.无符号十进制数136B.带符号十进制数-120
C.压缩型BCD码十进制数88D.8位二进制数-8的补码表示
57、指令指针寄存器是(A)。
A.IPB.SPC.BPD.PSW
58、当执行指令ADDAX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下
面的叙述正确的是(D)。
A.表示结果中含1的个数为偶数B.表示结果中含1的个数为奇数
C.表示该数为偶数D.表示结果中低八位含1的个数为偶数
59、完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是(A)。
A.MOVAL,00HB.ANDAL,00HC.XORAL,ALD.SUBAL,AL
60、下列指令执行后总是使CF=0,OF=0的是(A)。
A.ANDB.NEGC.NOTD.INC
61、完成同指令XCHGAX,BX相同功能的指令或指令序列是()。
A.MOVAX,BXB.MOVBX,AX
C.PUSHAXD.MOVCX,AX
POPBXMOVAX,BX
MOVBX,CX
62、设AH=0,AL=06H,BL=09H,执行指令
ADDAL,BL
AAA
之后,其结果应是()。
A.AH=01,AL=05B.AH=1,AL=15
C.AH=0,AL=0FHD.AH=0,AL=05
63、设AL=0B4H,BL=11H,指令“MULBL”和指令“IMULBL”分别执行后OF,CF
的值为()。
6
A.OF=1,CF=0B.OF=1,CF=1
C.OF=0,CF=0D.OF=0,CF=1
64、在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是()。
A.CX=0且ZF=0B.CX=0且ZF=1
C.CX=0或ZF=0D.CX=0或ZF=1
65、下面指令中,合理而有意义的指令是()。
A.REPLODSBB.REPSCASBC.REPCMPSBD.REPMOVSB
66、在汇编语言程序中,对END语句的叙述正确的是()。
A.END语句是一可执行语句B.END语句表示程序执行到此结束
C.END语句表示源程序到此结束D.END语句在汇编后要产生机器码
67、下面的数据传送指令中,错误的操作是()。
A.MOVSS:[BX+DI],1000HB.MOVDX,1000H
C.MOVWORDPTR[BX],1000HD.MOVDS,2000H
68、下面指令执行后,变量DAB中的内容是()。
DAWDW2A05H
DABDB0FAH
:
MOVAL,BYTEPRTDAW
SUBDAB,AL
A.0DAHB.0FAHC.0F5HD.0D0H
69、执行下列指令后,正确的结果是()。
MOVAL,100
MOVBL,-2
A.AL=100HB.AL=64HC.AL=64HD.AL=100H
BL=02HBL=0FEHBL=82HBL=0FEH
70、设数据段中已有:
DA1DB12H,34H
DA2DW56H,78H
下面有语法错误的语句是()。
A.ADR1DWDA1B.MOVDA1+1,AX
C.MOVBYTEPTRDA2+1,ALD.MOVWORDPTRDA1+1,AX
71、实现将DX:AX中存放的32位数扩大四倍,正确的程序段是()。
A.SHLAX,2B.RCLAX,2C.MOVCX,2D.SHLAX,1
ROLDX,2SHLDX,2LOP:SHLAX,1SHLAX,1
RCLDX,1RCLDX,1
LOOPLOPRCLDX,1
72、TA1DW0102H,0304H,0506H
TA2DB02H,03H,04H
:
MOVBX,DS:[0006H]
ANDBX,0FFH
ANDBH,[BX]
上述指令序列运行后,BX的内容是()。
A.0605HB.0402HC.0606HD.0204H
7
73、当一个带符号数大于0FBH时程序转移,需选用的条件转移指令是()。
A.JLEB.JNLC.JNLED.JL
74、下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应
为()。
TESTBH,01H
K1
A.JNEB.JZC.JSD.JC
75、测试BL寄存器内容是否与数据4FH相等,若相等则转NEXT处执行,可实现的方法
是()。
A.TESTBL,4FHB.XORBL,4FHC.ANDBL,4FHD.ORBL,4FH
JZNEXTJZNEXTJZNEXTJZNEXT
76、用DEBUG调试汇编语言程序时,显示某指令的地址是2F80:F400,此时段寄存器CS
的值是()。
A.F400HB.2F80HC.F4000HD.2F800H
77、设DS=1100H,(12000H)=80H,(12001H)=20H,(12002H)=30H,执行MOVAX,
[1000H]则AX=()。
A.8000HB.0080HC.2080HD.8020H
78、下列四条指令中错误的是()。
A.MOVAX,[SI]B.MOVAX,[DI]
C.MOVAX,[SI+DI]D.MOVAX,[SI-DI]
79、下列四条指令执行后不影响标志位的是()。
A.JNCNEXTB.CMPAX,BXC.SHLAX,1D.ORAL,AL
80、已知AX=0001H,下列四条指令执行后,不能使ZF=1的语句是()。
A.DECAXB.SUBAX,1C.ANDAX,1D.CMPAX,1
81、在8086/8088系统中,约定用于形成堆栈段数据物理地址的寄存器有()。
A.SS,SP,BPB.SS,SP,BX
C.DS,BX,BPD.DS,SP,BP
82、有指令MOVAX,1234H,指令中的立即数1234H是存储在()。
A.数据段B.代码段C.附加段D.堆栈段
83、要在程序中定义缓冲区BUF,保留9个字节存储空间的语句是()。
A.BUFDW9B.BUFDB9
C.BUFDB9DUP(?)D.BUFDW9DUP(?)
84、已知AL=56H,BL=34H,都是压缩BCD码,要执行二数相加,正确的指令是()。
A.ADDAL,BLB.ADCAL,BLC.ADDBL,ALD.ADCBL,AL
DAADAADAADAA
85、在执行子程序段内调用CALLSUBR指令后,SP的值()。
A.加1B.减1C.加2D.减2
86、完成将AX清零,并且使CF清零,下面错误的指令是()。
A.SUBAX,AXB.ANDAX,0C.XORAX,AXD.MOVAX,0
87、定义宏指令的伪指令是()。
A.PROC和ENDPB.CODE和ENDSC.EQU和ENDD.MACRO和ENDM
88、在汇编语言源程序中,表达式的计算是由()完成的。
A.编程者B.汇编程序C.程序执行时D.连接程序
89、为了使执行串操作指令时,地址按减量方式处理应使用指令()。
8
A.CLIB.STIC.CLDD.STD
90、有数据定义NUMDB''12345'',经汇编后,NUM占有()字节存储单元。
A.1B.5C.6D.7
91、汇编语言源程序每个语句可以由四项组成,如语句要完成一定功能,那么该语句中
不可省略的项是()。
A.名字项B.操作项C.操作数项D.注释项
92、在堆栈段中,存放栈顶地址的寄存器是()。
A.IPB.SPC.BXD.BP
93、汇编语言程序中,反映指令操作结果的标志是()。
A.状态标志B.控制标志C.ZFD.DF
94、书写汇编语言程序时规定,对字母开头的十六进制数,其前面必须加()。
A.0B.DC.BD.H
95、计算机中用来存储程序、数据等信息的记忆装置是()。
A.控制器B.运算器C.CPUD.存储器
96、MOV[SI][BX],AL,该指令中目的操作数采用的寻址方式是()。
A.基址加变址B.寄存器C.寄存器间接D.寄存器相对
97、MULWORDPTR[SI]指令中的乘积是存放在()、AX中。
A.CXB.BXC.DXD.SI
98、汇编语言中,存放下一条将要执行的指令地址寄存器是()。
A.SPB.AXC.DID.IP
99、在计算机中,以先进后出方式工作的存储空间是()。
A.存储器B.RAMC.ROMD.堆栈
100、TESTAH,30H指令的功能与()指令功能相类似。
A.ANDB.CMPC.SUBD.OR
101、在存储器中留60个字的空单元的伪指令是()。
A.ARRAYEQU60B.ARRAYDW60
C.ARRAYDB60DUP(?)D.ARRAYDW60DUP(?)
102、指令JMPFARPTRDONE属于()。
A.段内转移直接寻址B.段内转移间接寻址
C.段间转移直接寻址D.段间转移间接寻址
103、下列叙述正确的是()。
A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令
B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令
C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令
D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令
104、一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末
一个字单元的物理地址是()。
A.12CSBHB.12B6BHC.12C59HD.12BFEH
105、在下列指令的表示中,不正确的是()。
A.MOVAL,[BX+SI]B.JMPSHORTDONI
C.DEC[BX]D.MULCL
106、在进行二重循环程序设计时,下列描述正确的是()。
A.外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内
B.外循环初值应置外循环之内;内循环初值应置内循环之内
9
C.内、外循环初值都应置外循环之外
D.内、外循环初值都应置内循环之外,外循环之内
107、条件转移指令JNE的测试条件为()。
A.ZF=0B.CF=0C.ZF=1D.CF=1
108、8086CPU在基址加变址的寻址方式中,变址寄存器可以为()。
A.BX或CXB.CX或SIC.DX或SID.SI或DI
109、已知BX=2000H,SI=1234H,则指令MOVAX,[BX+SI+2]的源操作在()中。
A.数据段中偏移量为3236H的字节B.附加段中偏移量为3234H的字节
C.数据段中偏移量为3234H的字节D.附加段中偏移量为3236H的字节
110、执行如下程序:
MOVAX,0
MOVBX,1
MOVCX,100
A:ADDAX,BX
INCBX
LOOPA
HLT
执行后(BX)=()。
A.99B.100C.101D.102
111、上题的程序执行后(AX)=()。
A.5000B.5050C.5100D.5150
112、对于下列程序段:
AGAIN:MOVAL,[SI]
MOVES:[DI],AL
INCSI
INCDI
LOOPAGAIN
也可用()指令完成同样的功能。
A.REPMOVSBB.REPLODSBC.REPSTOSBD.REPESCASB
113、下面指令序列执行后完成的运算,正确的算术表达式应是()。
MOVAL,BYTEPTRX
SHLAL,1
DECAL
MOVBYTEPTRY,AL
A.Y=X2+1B.X=Y2+1C.X=Y2-1D.Y=X2-1
114、在一段汇编程序中多次调用另一段程序,用宏指令比用子程序实现起来()。
A.占内存空间小,但速度慢B.占内存空间大,但速度快
C.占内存空间相同,速度快D.占内存空间相同,速度慢
115、在程序执行过程中,IP寄存器中始终保存的是()。
A.上一条指令的首地址B.下一条指令的首地址
C.正在执行指令的首地址D.需计算有效地址后才能确定地址
116、PSW寄存器中共有()位条件状态位,有()位控制状态位。
A.6、3B.3、6C.8、4D.4、8
117、下列指令执行时出错的是()。
10
A.ADDBUF1,BUF2B.JMPDWORDPTRDAT[BX]
C.MOVAX,[BX+DI]NUMD.TESTAL,08H
118、已知(AX)=1234H,执行下述三条指令后,(AX)=()。
MOVBX,AX
NEGBX
ADDAX,BX
A.1234HB.0EDCCHC.6DCCHD.0000H
119、在下列指令中,()指令的执行会影响条件码中的CF位。
A.JMPNEXTB.JCNEXTC.INCBXD.SHLAX,1
120、.串指令中的目的操作数地址是由()提供。
A.SS:[BP]B.DS:[SI]C.ES:[DI]D.CS:[IP]
121、将DX的内容除以2,正确的指令是()。
A.DIV2B.DIVDX,2C.SARDX,1D.SHLDX,1
122、设DS=8225H,DI=3942H,指令NEGBYTEPTR[DI]操作数的物理地址是()。
A、85B92HB、86192HC、BB690HD、12169H
123、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是()。
A、AX,BX,CX,DXB、BX,BP,SI,DI
C、SP,IP,BP,DXD、CS,DS,ES,SS
124、循环指令LOOPNZ终止循环的条件是()。
A、CX=0,且ZF=0B、CX=0,或ZF=1
C、CX≠0,且ZF=0D、CX≠0,或ZF=1
125、对寄存器AX的内容乘以4的正确指令序列是()。
A、SHRAX,1SHRAX,1B、SHLAX,1SHL,AX,1
C、ROLAX,1ROLAX,1D、RCRAX,1RCRAX,1
126、保存字除法商的寄存器是()。
A、AXB、AHC、ALD、通用寄存器
127、设DH=10H,执行NEGDH指令后,正确的结果是()。
A、DH=10HCF=1B、DH=0F0HCF=0
C、DH=10HCF=0D、DH=0F0HCF=1
128、下列传送指令中有语法错误的是()。
A、MOVCS,AXB、MOVDS,AX
C、MOVSS,AXD、MOVES,AX
129、下面指令执行后,改变AL寄存器内容的指令是()。
A、TESTAL,02HB、ORAL,AL
C、CMPAL,BLD、ANDAL,BL
130、一条指令中目的操作数不允许使用的寻址方式是()
A.寄存器寻址B.立即数寻址C.变址寻址D.寄存器间接寻址
131、执行下面指令序列后,结果是()。
MOVAL,82H
CBW
A、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82H
132、与MOVBX,OFFSETVAR指令完全等效的指令是()。
A、MOVBX,VARB、LDSBX,VAR
C、LESBX,VARD、LEABX,VAR
11
133、.STACK伪指令定义的默认堆栈段大小是()。
A、1KBB、2KBC、3KBD、4KB
134、MOVSP,3210H
PUSHAX
执行上述指令序列后,SP寄存器的值是()。
A、3211HB、320EHC、320FHD、3212H
135、BUFDW10HDUP(3DUP(2,10H),3,5)
上述语句汇编后,为变量BUF分配的存储单元字节数是()。
A、80HB、100HC、124D、192
136、在汇编语言程序的开发过程中使用宏功能的顺序是()。
A、宏定义,宏调用B、宏定义,宏展开
C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用
137、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不
可省略的项是()。
A、名字项B、操作码项C、操作数项D、注释项
138、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有
()。
A、CMPB、SUBC、ANDD、MOV
139、为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是()。
A、INCCXB、SUBCX,0FFFFH
JZMINUSJZMINUS
C、ANDCX,0FFFFHD、XORCX,0FFFFH
JZMINUSJZMINUS
140、设ES=3000H,DI=00FFH,CX=0005H,AL=41H,DF=0,从300FFH开始的连续5
个字节单元内容分别是44H,43H,42H,41H,41H。执行REPNZSCASB指令后,正确
的结果是()
A、DI=0104H,CX=0000HB、DI=0103H,CX=0001H
C、DI=0102H,CX=0002HD、DI=0101H,CX=0003H
141、与LEABX,ARRAY功能相同的指令是()
A、MOVBX,ARRAYB、MOVBX,SEGARRAY
C、MOVBX,OFFSETARRAYD、LDSBX,ARRAY
142、汇编程序的错误提示:EXAM.ASM(10):Error(9),SymbolnotdefinedBUFF中第
一个圆括号内的“10”的含义是()
A、出错行的行号B、错误类型号
C、警告性错误的个数D、严重错误的个数
143、在汇编语言程序的开发过程中使用宏功能的顺序是()。
A、宏定义,宏调用B、宏定义,宏展开
C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用
144、设A=186,B=273Q,C=0BBH,它们之间的关系是()。
A.A>B>CB.A 145、8086的存储器组织是将存储器划分为段,可作为段的起始地址是()。
A.185A2HB.00020HC.01004HD.0AB568H
146、堆栈中当前出栈的存储单元地址是()。
A.SS10H+SPB.SS10H+BPC.SS10+SPD.SS10+BP
12
147、设DL=55H,执行指令后能使DL中的数据为0AAH的指令是()。
A.TESTDL,0AAHB.ORDL,0AAH
C.NEGDLD.XORDL,0FFH
148、当SS=9876H,SP=4328H,执行POPF指令后,堆栈顶部的物理地址是()。
A.9CA8AHB.9CA90HC.9CA86HD.0DB00H
149、DW10HDUP(2DUP(3),300H)
上述定义的数据单元中,能构成0303H字存储单元的个数是()。
A.10HB.20HC.1EHD.0FH
150、用一条指令实现将寄存器BX和SI的内容相加,结果并送入AX中,这条指令是()。
A.ADDAX,[BX][SI]B.MOVAX,[BX][ST]
C.ANDAX,[BX][SI]D.LEAAX,[BX][SI]
151、设AX中有一带符号数8520H,执行SARAX,1指令后,AX中的值是()。
A.4290HB.0A40HC.0C290HD.0C260H
152、下列中指令执行后,能影响标志位的指令是()。
A.PUSHFB.POPFC.JNLEOPRD.LOOPZLOP
153、循环控制指令LOOPNZ继续执行循环的条件是()。
A.CX≠0且ZF=1B.CX≠0且ZF=0
C.CX≠0或ZF=1D.CX≠0或ZF=0
154、下面两个传送指令语句中源操作数寻址方式是()。
VAR1DW32H
VAR2EQU32H
┇
MOVAX,VAR1
MOVBX,VAR2
A.都是立即数寻址B.前一条指令是立即数寻址,后一条指令是直接寻址
C.前一条指令是直接寻址,后一条指令是立即数寻址D.都是直接寻址
155、ARRAYDW6,9,$+4,10H,1,$+4
┇
MOVAX,ARRAY+4
设变量ARRAY的偏移量是0084H,上述指令执行后AX中的内容是()。
A.0009B.008CHC.0090HD.0010H
156、设AX=0CCBBH,CF=1
ANDAX,7FFEH
RCRAX,1
上述两条指令执行后,AX和CF中的内容分别是()。
A.AX=265DH,CF=0B.AX=265DH,CF=1
C.AX=A65DH,CF=0D.AX=A65DH,CF=1
157、DA_BEQUBYTEPTRDA_W
DA_WDW‘AB'',‘CD'',‘EF’,‘GH''
┇
MOVBX,DA_W+3
MOVBH,DA_B+3
执行上述两条指令后,BX中的内容是()。
A.‘EF''B.‘FC''C.‘CC''D.‘FF''
13
158、指令语句中标号的错误定义是()
A.在代码段中的名字项定义,后面紧跟冒号B.用EQU伪指令定义
C.用LABEL伪指令定义D.由“JMP标号”指令定义
159、设VAR1和VAR2是已定义的变量名,非法的表达式是()。
A.VAR1-VAR2B.VAR2-VAR1[BX]
C.VAR1+VAR2D.VAR1[BX]
160、为在一连续的存储单元中依次存放数据41H,42H,…,48H,下面的数据定义语句中
有语法错误的是()。
A.DB41H,42H,43H,44H,45H,46H,47H,48H
B.DW4142H,4344H,4546H,4748H
C.DB‘ABCDEFGH''
D.DW‘BA'',‘DC'',‘FE'',‘HG''
161、设NUM=11011011B,指令“MOVAH,NUMSHL3”执行后AX中的值是()。
A.11011011000BB.11011000BC.00011011BD.00011011011B
162、XORAX,AX
MOVCX,5
NEXT:ADDAL,6
AAA
LOOPNEXT
上述程序段执行的结果是()。
A.AX=0030HB.AX=0300HC.AX=30D.AX=001EH
163、如某循环程序是对两个数组进行某种运算处理,当数组处理完毕或运算处理的结果不
为某一指定值时(每次循环时,对运算结果已进行了测试),就结束循环。如要求一定使用
循环控制指令,这时应选用的指令是()。
A.LOOPB.JMPC.LOOPNE/LOOPNZD.JCXZ
164、在DEBUG上机调试程序时,存储器地址表示为12FA:015F,它的物理地址是()。
A.12FAHB.1305FHC.130FFHD.015FH
165、IP指令指针寄存器是属于()。
A.通用寄存器B.段寄存器C.变址寄存器D.控制寄存器
166、下面有语法错误的指令是()。
A.ADDAL,AHB.ADD[BX+3],AL
C.ADDAH,[DI]D.ADD[BP+2],DA1;(DA1是变量名)
167、完成对DX的有符号数除以2的指令是()。
A.IDIV2B.SARDX,1C.RORDX,1D.RCRDX,1
168、使进位位置1的指令是()。
A.CLCB.CMCC.STCD.NOP
169、设AL=-15,要使AL=15应执行的指令是()。
A.NEGALB.NOTALC.INCALD.DECAL
170、在条件转移指令中,结果为负数则转移的指令是()。
A.JNSB.JXC.JSD.JP
171、下面的XCHG指令中,语法正确的是()。
A.XCHGAL,DSB.XCHGBL,[BX]
C.XCHGAL,0FHD.XCHGBUF1,BUF2
172、一条指令中目的操作数不允许使用的寻址方式是()。
14
A.寄存器寻址B.立即数寻址C.变址寻址D.寄存器间接寻址
173、设SP=1FFEH,执行下列指令后,SP寄存器的值是()。
POPF
PUSHAX
A..2000HB.2002HC.1FFCHD.1FFEH
174、LDSSI,ES:[2000H]指令的全部功能是()。
A.把地址2000H送SI
B.把地址2000H字单元的内容送SI
C.把地址2000H字单元内容送SI,把2002H字单元内容送DS
D.把地址2000H字单元内容送DS,把2002H字单元内容送SI
175、设AL=04H,BL=0F8H,执行MULBL指令后,结果是()。
A.AX=0032HB.AX=00E0HC.AX=03E0HD.AX=0FFE0H
176、设ES=3000H,DI=00FFH,CX=0005H,AL=41H,DF=0,从300FFH开始的连续5
个字节单元内容分别是44H,43H,42H,41H,41H。执行REPNZSCASB指令后,正确
的结果是()。
A.DI=0104H,CX=0000HB.DI=0103H,CX=0001H
C.DI=0102H,CX=0002HD.DI=0101H,CX=0003H
176、某数据段如下:
DATASEGMENT
ORG20H
XDB12H
YDW789AH
DATAENDS
Y单元的偏移地址是()。
A.0B.20HC.21HD.12H
177、下面指令语句中,语法正确的是()。
A.INC[BX]B.CMP[BX],60
C.JMPFAROPRD.MOVWORDPTR[BX],5
178、DATASEGMENT
DA1DB32DUP(?)
DA2DW1456H,789AH
DA3DWDA2
DATAENDS
…
MOVBX,DA3
上述指令执行后,BX中的内容是()。
A.20HB.31C.32HD.21H
179、已定义数据段
DATASEGMENT
ORG0213H
DA1DB15H,34H,55H
ADRDWDA1
DATAENDS
能使AX中数据为偶数的语句是()。
15
A.MOVAX,WORDPTRDA1B.MOVAL,DA1+2
C.MOVAL,BYTEPTRADR+1D.MOVAX,WORDPTRDA1+2
180、如代数据段名为DATA_SEG,它的起始地址为20A00H,对数据段寄存器DS赋值段
地址值的方法是()。
A.MOVDS,20A0HB.ASSUMEDS:DATA_SEG
C.DATA_SEGSEGMENTD.MOVAX,DATA_SEG
MOVDS,AX
181、OVAL,-1
NEGAL
XORAL,65
上述程序段执行后,AL中的内容是()。
A.40HB.64HC.01HD.61H
182、用CMP指令对两个无符号数进行A-B的比较后,如A=B或A>B,则分别产生转移,
这种情况应选择的条件转移指令是()。
A.先用JE指令,再用JNC指令
B.先用JNC指令,再用JE指令
C.上述两条条件转移指令(JE和JNC)无先后次序
D.用上述两个条件转移指令不能完成上述功能要求
二、填空题
1.假设某个字的值是1234H,其低位字节地址是20H,高位字节地址是21H,那么该字的字
地址是________。
2.“SHLOPR,CNT”指令中OPR可以是除______以外的任何寻址方式。
3.“VARDB5DUP(8,2DUP(5))”语句汇编应分配______个字节单元。
4.指令“MOVAX,20H[SI]”中源操作数的物理地址表达式是______。
5.乘法指令语句“MULCL”,16位的乘积存放在______中。
1.在8086/8088系统中,存储器是分段的,每段最大长度是_______字节,段内偏移地址从
_______到_______。
2.在程序调试时,显示某指令存放地址是2340H:0056H,则物理地址是_______。
3.汇编语言源程序中的语句有三种类型,它们是_______语句,_______语句和_______语句。
4.指令MOVAX,[BX+SI+10H]源操作数寻址方式是_______。
5.执行段间返回指令RET时,将栈顶的一个字弹出到_______后,又弹出一个字到_______
寄存器中。
6.已知DS=3000H,DI=1200H,(31200H)=64H,(31201H)=93H,执行NEGWORDPTR
[DI]后,(31200H)=_______,(31201H)=_______。
7.执行下列指令序列
MOVAL,80H
MOVBL,08H
CBW
IDIVBL
则AH=_______AL=_______。
8.已知数据定义语句
ORG120H
VECT1DW200H
16
VECT2DWVECT1
执行MOVAX,VECT1AX=_______
MOVBX,VECT2BX=_______。
三、简答题
1、在指令系统中,段内、段间返回均为RET指令。试回答:
(1)执行段内返回RET指令时,执行的操作是:
(2)执行段间返回RET指令时,执行的操作是:
2、用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。
DA1DB20HDUP(?)
DA2DW10H,45H,7856H
3、已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,
试分别指出下列各指令中存储器操作数的物理地址。
MOVAL,[BP+20H]的物理地址是:
MOV[BX+DI-80H],AL的物理地址是:
MOVBL,ES:[SI+40H]的物理地址是:
4、请指出下列指令错误原因:
A.ORAX,[CX]
B.ADD[SI],[BX][DI]
C.JMPBYTEPTRLOOPS
D.SARAX,4
E.RCLDX
5、DS=2000H,AX=2000H,BX=5030H,(25030H)=03H,(25031H)=05H,那么执
行下列语句,A.MOVAX,BXAX=;B.MOVAX,[BX]AX=
6、数据定义如下
X1DB10H,100,-1
X2DW10H,100,-1
X3DD?
COUNTEQUX3-X1
变量COUNT的值是,其表示的意义是。
7、ADW1234H
BDW5678H
┇
PUSHA
PUSHB
POPA
POPB
试回答:上述程序段执行后(A)=;(B)=。
8、设某数据段:
DATASEGMENT
ORG20H
NUM1=8
NUM2=NUM1+10H
17
DA1DB''COMPUTER''
DB0AH,0DH
COUNTEQU$-DA1
DA2DW''CO'',''MP'',''UT'',''ER''
DATAENDS
试回答:
(1)DA1的偏移地址是:()
(2)COUNT的值是:()
(3)DA2+5字节单元的内容是:()
9、下列程序段完成什么工作?
DAT1DB30DUP(?)
DAT2DB10DUP(?)
┇
MOVCX,10
MOVBX,20
MOVSI,0
MOVDI,0
NEXT:MOVAL,DAT1[BX][SI]
MOVDAT2[DI],AL
INCSI
INCDI
LOOPNEXT
10、下列语句在存储器中分别为变量数据区分配多少个字节单元?
(1)VAR3DD10
(2)VAR4DW4DUP(?),2
11、设DS=2000H,BX=1256H,变量TABLE的偏移地址为20A1H,(232F7H)=3280H.下
列指令分别执行后,IP的值各是多少?
(1)JMPBXIP=___________________
(2)JMPTABLE[BX]IP=___________________
12、选用NOT,AND,ORXOR逻辑指令编写一指令序列,实现将AL第0位,第2位同
时置1,其他位变反。
13、在某子程序的开始处要保护AX,BX,CX,DX四个寄存器信息,在子程序结束时要
恢复这四个寄存器信息。例如:
PUSHAX
PUSHBX
PUSHCX
PUSHDX
:
恢复现场
试写出恢复现场时的指令序列。
14、完成下列操作,选用什么指令:
(1)将AX的内容,减去0520H,和上次运算的借位;
(2)将变量名TABL的段地址送AX;
15、D1DB20HDUP(?)
18
D2DWD1
请写出用一条指令实现取D1的偏移地址送给SI中的三种方法。
16、在8086/8088系统中,存储器是分段组织的,按各段实际长度定位。已知(DS)=2150H,
(CS)=2640H,(SS)=2250H,SP=100H,问题:
(1)数据段起始地址是多少?
(2)计算数据段中最多可以存放多少个字节数据?(要有具体计算式)
(3)代码段最多可以存放多少个字节程序代码?说明理由。
17、已知数据段定义如下:
DATASEGMENT
ORG100H
BUFDW''CD'',1,3DUP(4,2DUP(8,6))
VRADB4AH
DATAENDS
单独执行下列语句
LEABX,BUFBX=_______
MOVCX,VRA-BUFCX=_______(用十六进制数表示)。
18、分别说明下列两组指令中两条指令操作的相同点和不同点
(1)SUBAX,BXCMPAX,BX
(2)ANDCX,DXTESTCX,DX
19、下列每组指令中的两条指令有否区别?若有,请说出它们的不同点。
A.MOVAX,OFFSETTABLELEAAX,TABLE
B.JMPSHORTL1JMPNEARPTRL1
C.MOVAX,[BX]MOVAX,BX
D.SUBDX,CXCMPDX,CX
E.MOV[BP][DI],ALMOVDS:[BP][DI],AL
20、系统功能调用的方法如何?举例说明。
21、编程序,使:
A.CL寄存器内容取反
B.BX寄存器的低四位置1
C.AX寄存器的低四位清0
D.CX寄存器的低四位变反
E.用TEST指令测试DL寄存器的第3位和第6位是否为零。
22、指令ANDAX,OPR1ANDOPR2中,OPR1和OPR2是两个已赋值的变量,问两个AND
操作有什么区别?
23、假定(DX)=10111001B,(CL)=0.3,(CF)=1,试确定下列各条指令单独执行后,
DX中的值。
(1)SHRDX,1
(2)RCRDL,1
(3)RCLDX,CL
24、写出完成下述功能的程序段:
(1)传送25H到AL寄存器
(2)将AL的内容乘以2
(3)传送15H到BL寄存器
(4)AL的内容乘以BL的内容
19
并请写出最后(AX)=?
25、写一程序段,求双字长数DX∶BX的相反数。
26、在指令系统中,段内、段间返回均为RET指令。试回答:
(1)执行段内返回RET指令时,执行的操作是:
(2)执行段间返回RET指令时,执行的操作是:
27、ARYDW10DUP(?)
┇
MOVAL,TYPEARY
MOVBL,LENGTHARY
MOVCL,SIZEARY
上述MOV指令序列执行后的结果是什么?
28、设某数据段:
DATASEGMENT
ORG20H
NUM1=8
NUM2=NUM1+10H
DA1DB''COMPUTER''
DB0AH,0DH
COUNTEQU$-DA1
DA2DW''CO'',''MP'',''UT'',''ER''
DATAENDS
试回答:(1)DA1的偏移地址是:___________________。
(2)COUNT的值是:___________________。
(3)DA2+5字节单元的内容是:___________________。
29、设DS=3A00H,ES=4A00H,在段地址:偏移地址=4A00H:9000H字单元中有数据3C50H。
请用一条指令将数据3C50H装入AX寄存器。(不得使用立即数)
30、设BX=0FFFFH,DI=20H,DS=2000H,CL=8,(20020H)=4567H,下列各条指令分
别执行后BX中的内容各为多少?
A.ROLBX,CL;BX=______
B.MOVBX,[DI];BX=______
31、DAT1DB1,2,3,4
DAT2DW3412H,5678H
┇
MOVAX,DAT1+1;将DAT1+1字单元内容送入AX中
MOVBL,DAT2+1;将DAT2+1字节单元内容送入BL中
已知上述两条MOV语句有语法错误,请根据注释字段的要求将其改正(分别用一条语句改
正)。
32、DA1DB20HDUP(?)
DA2DW10H,45H,7856H
请用两种办法,分别只用一条指令实现将DA1数据区中数据个数送入CX。
33、用三种不同方法实现在字存储单元DB1中存储2000H。
34、已知:BX=1357H,BP=2468H,SI=1000H,DI=2000H,SS=1000H,DS=2000H,ES=3000H,
试分别指出下列各指令中存储器操作数的物理地址。
MOVAL,[BP+20H]的物理地址是。
20
MOV[BX+DI-80H],AL的物理地址是。
MOVBL,ES:[SI+40H]的物理地址是。
四、程序分析题
1、XORAL,AL
MOVAH,AL
ADDAH,9
JZNEXT
XCHGAH,AL
JMPK1
NEXT:MOVAH,0FFH
K1:……
上述程序运行后,AH=,AL=。
2、XORAL,AL
INCAL
NEGAL
INCAL
MOVBL,7FH
ADCAL,BL
上述程序段运行后,AL=,CF=。
3、已知AX=1234H
MOVBX,AX
NEGBX
ADDAX,BX
执行上述三条指令后,AX=,BX=。
4、BUF1DB41H,42H,43H,44H,45H,46H
BUF2DB6DUP(?)
…
MOVSI,OFFSETBUF1
MOVDI,OFFSETBUF2
MOVCX,6
LOP:MOVAL,[SI]
SUBAL,7
ANDAL,0FH
MOV[DI],AL
INCSI
INCDI
LOOPLOP
试回答(1)上述程序段执行后,BUF2开始的6个字节存储单元的内容是什么?
(2)在程序功能不变的情况下,ANDAL,0FH指令可否用SUBAL,30H指令替代。
5、BUFFDB‘ABD$QC%$A……CYZ’
CONTEQU$-BUFF
…
CLD
21
LEADI,BUFF
MOVCX,CONT
MOVAL,’$’
XORDX,DX
NEXT:REPNZSCASB
CMPCX,0
JZK1
INCDX
JMPNEXT
K1:…
上述程序段运行后,DX中的值表示的意义是什么?
6、DA1DW1F28H
DA2DB?
┇
XORBL,BL
MOVAX,DA1
LOP:ANDAX,AX
JZKK
SHLAX,1
JNCLOP
ADDBL,1
JMPLOP
KK:MOVDA2,BL
试问:A.程序段执行后,DA2字节单元内容是什么?
B.在程序段功能不变情况下,是否可用SHR指令代替SHL指令?
7、DA1DB87H
DA2DB
┇
MOVAH,0
MOVAL,DA1
MOVCL,4
SHRAL,CL
MOVDL,10
MULDL
MOVBL,DA1
ANDBL,0FH
ADDAL,BL
MOVDA2,AL
试回答:A.程序段执行后,(DA2)=______;
B.在程序段功能不变的情况下,是否可以用指令SAR替代指令SHR?
8、MOVAL,BL
NOTAL
XORAL,BL
ORBL,AL
22
程序段执行后,AL=______,BL=______。
9、STC
MOVCX,0403H
MOVAX,0A433H
SARAX,CL
XCHGCH,CL
SHLAX,CL
程序段执行后,AX=______,CF=______。
10、BYTE1DBXX;任意数
BYATE2EQU0FEH
┇
MOVDL,BYTE1
ORDL,BYTE2
程序段执行后,DL=______或______。
11、DA_BDB0CH,9,8,0FH,0EH,0AH,2,3,7,4
┇
XORAX,AX
XORCL,CL
XORBX,BX
LOP:TESTDA_B[BX],01H
JENEXT
ADDAL,DA_B[BX]
INCAH
NEXT:INCBX
INCCL
CMPCL,10
JNELOP
上述程序段运行结束后,AH=______,AL=______。如果把“JENEXT指令改为“JNENEXT“指
令,那么AH=______,AL=______。
12、VAR_BDB10DUP(3,5,7,9)
┇
LEABX,VAR_B
MOVCX,10
XORAX,AX
LOP:ADDAL,[BX]
CMPAL,10
JBNEXT
INCAH
SUBAL,10
NEXT:INCBX
LOOPLOP
上述程序段运行结束后,AH=______,AL=______。
13、已知AX=0FF60H,CF=1
MOVDX,96
23
XORDH,0FFH
SBBAX,DX
执行上述指令序列后,AX=___________________,CF=___________________。
14、设寄存器AL,BL,CL中内容均为76H,
XORAL,0FH
ANDBL,0FH
ORCL,0FH
执行上述指令序列后,AL=___________________。
BL=___________________,CL=___________________。
15、已知AX=0A33AH,DX=0F0F0H
ANDAH,DL
XORAL,DH
NEGAH
NOTAL
执行上述指令序列后,AH=___________________,AL=___________________。
16、DATASEGMENT
S9DB0,1,2,3,4,5,6,7,8,9
DATAENDS
┇
LEASI,S9
LEA,DI,S9+1
MOVCX,5
LOP:MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
ADDSI,2
ADDDI,2
LOOPLOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
17、.MODESMALL
.DATA
DATA1DW2000H
DATA2DW3000H
.CODE
.STARTUP
LEASI,DATA1
MOVDI,OFFSETDATA2
MOVBX,[SI]
MOVCX,[DI]
MOV[SI],CX
MOV[DI],BX
.EXIT
END
上述程序段运行后,(DATA1)=_________________,(DATA2)=_________________。
24
18、DA3EQUWORDPTRDA4
DA4DB0ABH,89H
┇
SHRDA3,1
MOVDX,DA3
SHLDA4,1
MOVCX,DA4
上述程序段运行后,CX=___________________,DX=___________________。
19、现有如下程序段:
DATASEGMENT
ORG0020H
DA1DW12H,23H
DA2DB11H,21H
DA3EQU1234H
DA4EQU$-DA2
DA5DB31H,32H
DATAENDS
请回答:(1)该程序段已占有的存储字节数是多少?
(2)符号名DA4的值是多少?符号名DA5的值是多少?
20、执行下列程序段后,回答问题。
ORG1221H
NUMDW12H
…
MOVAX,NUM
MOVBX,OFFSETNUM
MOVCL,BYTEPTRNUM+1
MOVCH,TYPENUM
HLT
请问:(AX)=______,(BX)=______,(CX)=______。
21、阅读如下程序:
ADRRDBXXH,XXH,……,XXH
NUMEQU$-ADRR
RETTDB?
…
MOVCX,NUM
MOVBX,-1
DON:INCBX
CMPADRR[BX],0
LOOPZDON
JNZNEXT
MOVBL,0FFH
NEXT:MOVRETT,BL
HLT
请问:(1)该程序完成的功能是什么?
25
(2)程序执行后指出RETT字节单元中的内容是什么?
22、现有一子程序:
SUB1PROC
TESTBL,80H
JEPLUS
TESTAL,80H
JNEEXITO
JMPXCHANGE
PLUS:TESTBL,80H
JEEXITO
XCHANGE:XCHGAL,BL
EXITO:RET
SUB1ENDP
试回答:(1)子程序的功能是什么?
(2)若调用子程序前AL=9AH,BL=77H,返回主程序时,AL=______,BL=______。
23、阅读程序段:
BLOCKDB20H,1FH,08H,81H,0FFH,…
RESULTDB?
…
START:LEASI,BLOCK
MOVCX,[SI]
INCSI
MOVAL,[SI]
LOP1:CMPAL,[SI+1]
JNGNEXT
MOVAL,[SI+1]
NEXT:INCSI
LOOPLOP1
MOVRESULT,AL
HLT
请问:(1)该程序完成的功能是什么?
(2)该程序循环的次数是多少?
24、阅读如下程序段,回答所提出的问题,假定X1,X2,XN为无符号数。
ORG100H
BLOKDWX1,X2,…,XN
COUNTEQU($-BLOLOK)/2
RESULTDWCOUNT,?
LEABX,BLOK-2
MOVCX,RESULT
XORAX,AX
GOON:ADDBX,2
CMPAX,[BX]
JAENEXT
MOVAX,[BX]
26
NEXT:LOOPGOON
MOVRESULT+2,AX
程序段执行完,回答下述问题
RESULT+2字存储单元的内容=______;BX=______;程序循环次数=______
25、对于下面的数据定义,各条MOV的指令单独执行后,有关寄存器的内容是什么?
FLDBDB?
TAB1DW20DUP(?)
TAB2DB’ABCD’
A.MOVAX,TYPEFLDB
B.MOVAX,TYPETAB1
C.MOVCX,LENGTHTAB1
D.MOVDX,SIZETAB1
E.MOVCX,LENGTHTAB2
26、下面程序段执行完后,AL的内容是什么?
MOVAL,10
ADDAL,AL
SHLAL,1
MOVBL,AL
SHLAL,1
ADDAL,BL
27、试问下面的程序段完成的功能是什么?
SALAX,1
RCLDX,1
28、假设X和X+2单元的内容为双精度数P,Y和Y+2单元的内容为双精度数Q(X和Y
为低位字),试说明下列程序段做什么工作?
MOVDX,X+2
MOVAX,X
ADDAX,X
ADCDX,X+2
CMPDX,Y+2
JLL2
JGL1
CMPAX,Y
JBEL2
L1:MOVAX,1
JMPSHORTEXIT
L2:MOVAX,2
EXIT:INT20H
29、MOVAX,9090H
SUBAX,4AE0H
JCL1
JOL2
JMPL3
上述程序执行后AX=_______,程序转向_______
27
30、假设寄存器AX=1234H,DX=0A000H
MOVBX,0
MOVCX,BX
SUBCX,AX
SBBBX,DX
MOVAX,CX
MOVDX,BX
上述程序段执行后AX=_______,DX=_______
程序功能是_______
31、BUFDB45H,68H,7AH,35H,39H
…
MOVDI,OFFSETBUF
MOVCX,5
MOVAL,‘a''
CLD
REPSTOSB
该程序段执行后,BUF中的内容是_______,方向标志DF=_______
32、假设寄存器AX=5AH,CX=23H
…
MOVDL,0
LOP:SUBAX,CX
JCNEXT
INCDL
JMPSHORTLOP
NEXT:ADDAX,CX
HLT
上述程序段执行后,AX=_______,DL=_______
用数学表达式指明程序功能:_______
33、ADW1234H
BDW5678H
:
PUSHA
PUSHB
POPA
POPB
试回答:A.上述程序段执行后(A)=,(B)=。
B.设执行前SP=2000H,执行后SP=。
34、现有下列程序段:
MOVAX,6540H
MOVDX,3210H
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
28
SHRBL,CL
ORDL,BL
试问上述程序段运行后,
(AX)=,(BL)=,(DX)=。
35、分析下面程序段,
MOVAL,200
SARAL,1
MOVBL,AL
MOVCL,2
SARAL,CL
ADDAL,BL
试问程序段执行后(BL)=,(AL)=。
36、程序段如下:
BLK1DB46,84,34,-5,20,122,73
:
MOVCX,7
LEAS1,BLK1
NEXT:MOVAL,[SI]
INCSI
TESTAL,81H
LOOPZNEXT
MOVBL,[SI]
:
请回答程序段运行后:(AL)=,(BL)=。
37、STRINGDB‘ABCDEFGHI’
:
MOVAH,01;从键盘输入字符1~9
INT21H
ANDAL,0FH
DECAL
XORAH,AH
MOVBX,OFFSETSTRING
ADDBX,AX
MOVBL,[BX]
MOVAH,02H;显示输出
INT21H
:
试回答:(1)上述程序段的功能是什么?
(2)如从键盘输入字符‘4’,程序段有什么结果?
38、ANDAL,AL
JZBRCH1
RCRAL,1
JZBRCH2
RCLAL,1
29
INCAL
JZBRCH3
:
上述程序运行后,试回答:
(1)当(AL)=时,程序转向BRCH1
(2)当(AL)=时,程序转向BRCH2
(3)当(AL)=时,程序转向BRCH3
39、MOVAX,0BC5FH
MOVBX,0C0FBH
XORAX,BX
XORAX,BX
上述程序段运行后,AX=___________,CF=_____________
40、HEXDB‘0123456789ABCDEF’
HCODDB?,?
┇
MOVBX,OFFSETHEX
MOVAL,1AH
MOVAH,AL
ANDAL,0FH
XLATHEX
MOVHCOD[1],AL
MOVCL,12
SHRAX,CL
XLATHEXMOVHCOD,AL
上述程序段运行后,HCOD和HCOD+1两字节单元内容是什么?
41、DATASEGMENT
ORG3040H
YY1DB30H,40H
YY2DW3040H
DATAENDS
┇
MOVBX,OFFSETYY1
MOVAX,[BX]
MOVCL,BYTEPTRYY2+1
MOVCH,TYPEYY2
上述程序段运行后,AX=___________,BX=____________,CX=___________
42、ADB0F8H
BDB3DUP(?)
┇
LEADI,B
MOVCX,3
MOVAL,ALOP:SARAL,1
MOV[DI],AL
INCDI
30
LOOPLOP
上述程序段运行后,从B单元开始依次存放的数据的多少?
43、已知BUF开始的数据区中存放有10个大、小写字母,下面程序段完成的功能是什么?
MOVCX,10
LEABX,BUF
K2:MOVAL,[BX]
CMPAL,‘Z’
JBEK1
SUBAL,20H
MOV[BX],AL
K1:INCBX
LOOPK2
┇
44、MOVCL,8
MOVAL,0
NOTAL
ROLAL,CL
CMPAL,0FFH
JZNEXT
MOVAL,0
NEXT:……
上述程序段运行后,(AL)=___________,CF=___________
45、已知AX=1234H
MOVBX,AX
NEGBX
ADDAX,BX
执行上述三条指令后,AX=BX=。
46、程序段完成什么功能?
MOVCL,04
SHLDX,CL
MOVBL,AH
SHLAX,CL
SHRBL,CL
ORDL,BL
47、BUF1DB41H,42H,43H,44H,45H,46H
BUF2DB6DUP(?)
…
MOVSI,OFFSETBUF1
MOVDI,OFFSETBUF2
MOVCX,6
LOP:MOVAL,[SI]
SUBAL,7
ANDAL,0FH
MOV[DI],AL
31
INCSI
INCDI
LOOPLOP
试回答(1)上述程序段执行后,BUF2开始的6个字节存储单元的内容是什么?
48、DATASEGMENT
S9DB0,1,2,3,4,5,6,7,8,9
DATAENDS
……
LEASI,S9
LEA,DI,S9+1
MOVCX,5
LOP:MOVAL,[SI]
XCHGAL,[DI]
MOV[SI],AL
ADDSI,2
ADDDI,2
LOOPLOP
上述程序段运行后,S9开始的10个字节存储单元内容是什么?
五、程序填空题
1、下面程序段的功能是把DA1数据区的数0-9转换为对应的ASCII码,并存入ASCI数据
区。试完善本程序段。
DA1DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
ASCIDB10DUP(?)
CUNT=ASCI-DA1
……
LEASI,DA1
LEADI,ASCI
LOP1:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLOP1
2、设A,B是长度为10的字节数组,用串操作指令编写程序实现A,B两数组内容的相互
交换。试完善本程序。
DATASEGMENT
ADB1,2,3,4,5,6,7,8,9,0AH
ORG0010H
BDB0AH,9,8,7,6,5,4,3,2,1
DATAENDS
LEASI,A
LEADI,B
32
MOVCX,10
LOP:LODSB
XCHGAL,[DI]
DECDI
STOSB
INCDI
LOOPLOP
3、某程序段欲用单个字符显示的2号DOS功能调用去显示一字符串“STRING”。试在下面
空白处填上适当的指令(每一空白处仅填一条指令)。
STR1DB‘STRING’
┇
MOVCX,6
MOVBX,OFFSETSTR1
LOP:MOVDL,[BX]
MOVAH,02H
INT21H
A.______
B.______
JNELOP
4、程序段的功能是依次产生0~9的10个ASCII码,并存入BUF1数据区,请在空白处填
上指令(每一空白处仅填一条指令)。
BUF1DB10DUP(?)
┇
LEABX,BUF1
MOVCX,10
XORAL,AL
LOP:MOVAH,AL
ADDAL,30H
A.______
INCBX
B.______
INCAL
LOOPLOP
5、下面程序段是判断寄存器AH和AL中第3位是相同,如果相同,AH置0,否则AH置
全1。试把空白处填上适当指令。
_____________________
ANDAH,08H
_____________________
MOVAH,OFFH
JMPNEXT
ZERO:MOVAH,0
NEXT:……
33
6、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大
数并送入MAX单元中。
BUFDB5,6,7,58H,62,45H,127,……
COUNTEQU$-BUF;COUNT等于变量BUF的字节数
MAXDB?
┇
MOVBX,OFFSETBUF
MOVCX,COUNT-1
MOVAL,[BX]
LOP1:INCBX
_____________________
JAENEXT
MOVAL,[BX]
NEXT:DECCX
_____________________
MOVMAX,AL
7、在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并保存在AX寄
存器中。如果总和值超过AX寄存器的容量,则置AX寄存器内容不变。请在程序中的空格
处填入适当指令使其完整。
LEABX,TABLE
MOVCX,10
MOVSUM,AX
NEXT:(1)
ADCAH,0
JNCDON
JCENDO
(2)
DON:INCBX
(3)
ENDO:HLT
8、BEG为起始地址的存储区域中存放有100个字节数据,现将其首、尾颠倒过来,重新排
放这100个字节数据。请在程序中的空格处填入适当的指令使其完整。
MOVCX,32H
LEASI,BEG
MOVDI,SI
(1)
DON:MOVAL,[SI]
(2)
MOV[SI],AL
(3)
DECDI
LOOPDON
HLT
34
9、下列程序段求数组FLD的平均值,结果在AL中。请将程序填写完整(不考虑溢出)
FLDDW10,-20,30,-60,-71,80,79,56
_______
MOVCX,8
XORAX,AX
R1:_______
ADDSI,2
LOOPR1
MOVCL,8
IDIVCL
HLT
10、已知数据段DAT单元存放某一数N(-6≦N≦6)下面的程序段用查表法求数N的平方
值,结果送SQR单元,请将程序填写完整。
TABLEDB0,1,4,9,16,25
DATDBN
SQRDB?
LEABX,TABLE
MOVAL,DAT
_______
JGENEXT
_______
NEXT:XLAT
HLT
11、设AX,BX中的数一个为正数,一个为负数,下面程序段完成将正数送到PLW单元中
存放,请将程序中所缺指令语句补上。
TESTAX,8000H
MOVPLW,BX
JMPDONE
K1:
DONE:
12、现有下列数据段:
DATASEGMENT
STR1DB‘ABCDEFGHIJKL’
COUNTEQU$-STR1
BUFDBCOUNTDUP(0)
DATAENDS
下面程序段是实现把STR1中所有字符逆向传送到BUF缓冲区(即STR1中第一个字符送
到BUF的最后一个单元,STR1中最后一字符送到BUF的第一个单元)。试把程序中所空
缺的指令填上。
MOVSI,OFFSETBUF-1
MOVDI,OFFSETBUF
MOVCX,COUNT
35
LOOP:MOVSB
LOOPLOP
13、DA1数据区中有50个字节数据,下面程序段将每个数据的低四位变反,高四位不变,
并依次存入DA2数据区中。请将程序补充完整。
MOVCX,50
LEASI,DA1
LEADI,DA2
K1:MOVAL,[SI]
___________
MOV[DI],AL
INCSI
INCDI
DECCX
___________
14、下面程序段完成将存储单元A1中一个压缩型BCD码拆成二个非压缩型BCD码,高位
BCD码存放在A3单元,低位BCD码存放在A2单元,再分别转换为对应的ASCⅡ码。请
将程序补充完整。
MOVAL,A1
MOVCL,4
___________
ORAL,30H
MOVA3,AL
MOVAL,A1
___________
ORAL,30H
MOVA2,AL
15、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置
全1。试把空白处填上适当指令。
_____________________
ANDAH,08H
_____________________
MOVAH,OFFH
JMPNEXT
ZERO:MOVAH,0
NEXT:……
16、程序段的功能是依次产生0~9的10个ASCII码,并存入BUF1数据区,请在空白处
填上指令(每一空白处仅填一条指令)。
BUF1DB10DUP(?)
……
LEABX,BUF1
MOVCX,10
XORAL,AL
LOP:MOVAH,AL
36
ADDAL,30H
____________
INCBX
____________
INCAL
LOOPLOP
17、下面程序执行后,AL的内容为ARRAY数组中的最小数,请在空白处各填上一条指令。
ARRAYDB3,5,-3,-2,4,5,-8,6
……
MOVCX,7
MOVDI,0
MOVAL,ARRAY
A1:INCDI
JLEA2
MOVAL,ARRAY[DI]
18、下面程序段的功能是把DA1数据区的数0-9转换为对应的ASCII码,并存入ASCI数据
区。试完善本程序段。
DA1DB00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
ASCIDB10DUP(?)
CUNT=ASCI-DA1
……
LEASI,DA1
LEADI,ASCI
LOP1:MOVAL,[SI]
MOV[DI],AL
INCSI
INCDI
LOOPLOP1
六、编制程序题
1、设在数据段中有X,Y两变量(字节单元),试编写程序段计算(只写有关程序功能的
指令):
Y=X当X>=0
Y=0当X<0
2、A1单元开始定义了一长度为N的字符串,找出其中所有的小写字母并存放到以A2单元
开始的存储区中。统计出小写字母的个数,存放到SL单元中。请编一完整的源程序。
3、已知DAT1字节单元有一个数据,试编制一程序段将该数据的低4位变为1010B,最高
位(第7位)置1,其余3位不变,结果送DAT2字节单元。
4、在N1和N2两数据区中,分别有10H个带符号数。试编制一源程序,找出对应项中较
小的数据,并将这些较小的数据存入N3数据区中(要求:对应项比较时必须用CMPS指令)。
37
DATASEGMENT
N1DB××,××,××,……
N2DB××,××,××,……
N3DB10HDUP(0)
DATAENDS
5、加密移动字符串,设缓冲区SBUFF中有20个小写字母a,将每个a加上它相对于缓冲
区的位移量后传送到缓冲区DBUFF。
6、在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,
求它们对应项的和,并将和数存入以SUM为首址的数据区中。
DATASEGMENT
BUF1DW-56,24,54,-1,89,-8,……
BUF2DW45,-23,124,345,-265,……
SUMDW10DUP(0)
DATAENDS
7、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
8、设在内存单元SQTAB首址开始存放了0~15的平方数表。要求用直接查表法编一程序,
求出A单元中给定数(<=15=的平方值送B单元保存。
9、已知存储器中有一个首地址为ARRAY的100个字数组,现要求把数组中的每个数加1
(不考虑溢出的可能性),试编制完成此功能的程序段。
10、.编写一段程序,如果字节变量TESTONE和TESTTWO相等,则调用子程序,显示‘#’;
否则调用NOTSAME子程序,显示‘!’。
11、已定义了两个整数变量A和B,试编写程序完成下列功能:
A.若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中。
B.若两个数均为奇数,则将两数均加1后存回原变量。
C.若两个数均为偶数,则两个变量均不改变。
(要求各段定义完整,并画出程序流程图)
12、假设DATAX和DATAX+2单元存放双字P,DATAY和DATAY+2单元中存放双字Q,
编程计算2P-Q,差在DX,AX中。若OF=1,程序转OVERFLOW,否则转NOOVER。(只
写与试题要求有关的指令语句)
13、已知在数据区BUF1和BUF2分别存放20个字节数据。编程检查两数据区中的数据是
否相同。若完全一致,则将标志单元FLAG置FFH,否则置0,并将第一次出现的不同数据
的地址分别存放在ADDR1和ADDR2单元中。
要求:源程序格式完整。
14、设X、Y、Z、W为十六位有符号数编程计算:
W←(X+YZ)/8-Y除法余数丢弃
若ZF=1,程序转EQ;否则转NOT_EQ。
15、已知在以ARRAY为首地址的数据区中存放10个带符号字数据:
ARRAYDW1,2,-1,3,4,-2,-3,4,5,-6
编程将ARRAY分成两个数组:正数数组P_ARY和负数数组N_ARY,并分别显示正数项
个数和负数项个数。
要求:源程序格式完整。
16、X,Y,Z三个字节存储单元中各有一个无符号数,其中有两个数据相等,找出不相等
的哪个数,并存入W单元中,试编写完成上述功能的程序段(只编写有关代码部分,勿需
书写源程序格式)。
38
17、在数据段偏移量为100H开始的存储空间内连续存放着10个字节型无符号二进制数,
编写一段程序,求出该10个数之和,并将结果存放在寄存器AX中。
18、试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
2.已知有256个字节整数A1、A2、A3、……、A256存放在以NUMBER为首址的数据区
中,编写一完整源程序将其中的负数去除后剩下的正数重新排序存放在以PLUS开始的数据
区中。
19、在数据段中有一个首地址为array的未排序的50D字节的正整数数组,请编写一程序,
找出其中的最大数和最小数及最大数和最小数的个数。
20、A1单元开始定义了一长度为N的字符串,找出其中所有的小写字母并存放到以A2单
元开始的存储区中。统计出小写字母的个数,存放到SL单元中。请编一完整的源程序。数
据段如下:
DATASEGMENT
A1DB‘……’
NEQU$-A1
A2DBNDUP(?)
SLDB?
DATAENDS
参考教程:
南开大学汇编语言15讲
中山大学汇编语言教程51讲
哈工大汇编语言程序设计视频教程51讲
石油大学汇编语言51讲李村合主讲
吉林大学汇编语言程序设计51讲王鉴泉主讲
东南大学汇编语言34讲
|
|