汇编练习题一、单项选择题(在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。)1.为在一连续的存储单元中,依次存放数据41H,42H,43H,44H,45H,46H,可选用的数据定义语句是(D)A.DB41,42,43,44,45,46B.DW4142H,4344H,4546HC.DW‘AB’,‘CD’,‘EF’D.DW‘BA’,‘DC’,‘FE’2.DA2DB‘AB’,‘CD’┇MOVAX,WORDPTRDA2+1上述语句执行后AX中的值是(D)A.‘AD’B.‘BC’C.‘DA’D.‘CB’3.下列数据定义语句中可实现留空20H个字节存储单元的是(D)A.DB20DUP(?)B.DW20HDUP(?)C.DB10HDUP(4DUP(?))D.DD08HDUP(?)4.如某存储器分段时,表示偏移地址是17位二进制代码,那么一个段最多的存储单元数是(D)A.32K字节B.32K字C.64K字节D.64K字5.下列寄存器中用来指示堆栈中任意数据区的偏移地址的是(B)A.BXB.BPC.SID.DI6.下列指令中有语法错误的是(C)A.PUSHAXB.PUSH[20H+SI+BX]C.POPCSD.PUSHCS7.执行PUSHBP指令时,目的操作数的物理地址表达式是(D)A.16*SS+BPB.16*DS+BPC.16*CS+IPD.16*SS+SP8.把BL中的数据输出到端口8CH中正确指令是(C)A.OUT8CH,BLB.IN8CH,BLC.MOVAL,BLD.MOVAL,BLOUT8CH,ALIN8CH,AL9.结果为零的条件转移指令,其测试条件是(A)A.ZF=1B.ZF=0C.SF=lD.SF=010.下面程序段完成测试DA-BYTE字节单元中数是否为负数,若是则将全l送DH中,否则全0送DH中,那么程序段中方框里应填的语句是MOVCH,0TESTDA-BYTE,80HMOVCH,0FFHZERO:MOVDH,CH(C)A.JNZZEROB.JSZEROC.JZZEROD.JCZERO11.汇编源程序时,出现语法错误的语句是(C)A.MOV[BX+SI],BXB.MOVCL,[BP+DI]C.MOVCS,AXD.MOVDS,AX12.设SP初值为3050H,执行指令PUSHBX后,SP的值是(B)A.304FHB.304EHC.3048HD.3049H13.串操作指令中,每次操作后使SI/DI为减量应设置(C)A.DF=0B.TF=1C.DF=1D.TF=014.设AL=57H,BL=24H,执行指令SUBAL,BL后,寄存器内容为(B)A.AL=57H,BL=24HB.AL=33H,BL=24HC.AL=57H,BL=33HD.AL=33H,BL=015.当执行ADDAX,BX指令后,若AX的内容为4E52H时,设置的奇偶标志位PF=0,下面的叙述正确的是(A)A.表示结果中含1的个数是奇数B.表示结果中含1的个数是偶数C.表示该数是奇数D.表示结果中低8位中含1的个数是奇数16.设物理地址(21000H)=20H,(21001H)=30H,(21002H)=40H。如从地址21001H中取出一个字的内容是(D)A.2030HB.3040HC.3020HD.4030H17.转移指令JMPNEARPTRPROCA的转移范围是(A)A.8000H~7FFFHB.7FFFH~0FFFHC.80H~7FHD.0FH~7FH18.没有语法错误的输入指令是(A)A.INAL,30HB.IN30H,ALC.INDX,ALD.INAL,[BX]19.设SP的初值为1000H,执行指令PUSHAX后SP的值是(C)A.OFFFHB.1001HC.0FFEHD.1002H20.设SP的初值为1000H,执行指令POPAX后SP的值是(D)A.OFFFHB.1001HC.0FFEHD.1002H21.汇编语言源程序,可以是(D)A.可以直接由机器执行B.必须由编译程序生成目标程序才能执行C.必须由解释程序生成目标程序才能执行D.必须由汇编程序汇编成目标程序才能执行22.伪指令DA1DB04HDUP(3DUP(2),2DUP(3))在数据区中能构成0203H操作数共有(C)A.07个B.04个C.03个D.02个23.设AX=9ABCH,DX=8765HPUSHAXPUSHDXPOPAXPOPDX上述4条指令执行后,AX,DX中内容分别是(D)A.AX=9ABCHDX=8765HB.AX=9ABCHDX=9ABCHC.AX=8765HDX=8765HD.AX=8765HDX=9ABCH24.无条件转移指令JMP实现段间间接转移,转移的目标地址在(B)A.某个字存储单元中B.某个双字存储单元中C.某个16位通用寄存器中D.两个16位通用寄存器中25.已知某操作数的物理地址是2117AH,则它的段地址和偏移地址可能是(A)。A.2025∶0F2AB.2108∶00EAC.2000∶017AD.2100∶117A26.某程序装入内存后,DS=1200H,CS=1400H,则程序中数据段中的数据最多是(C)字节。A.2KB.4KC.8KD.16K27.以寄存器DI间接寻址的存储器字节单元内容加1的指令是(C)。A.INC[DI]B.INCDIC.INCBYTEPTR[DI]D.ADD[DI],128.有数据定义语句BUFDW0ABH,1,10DUP(3DUP(1,0),2)汇编后,为变量BUF分配的存储单元字节数是(B)。A.48HB.90HC.120D.6029.下列指令执行后,不改变AL寄存器内容的指令是(B)。A.ANDAL,1B.CMPAL,DLC.XORAL,ALD.SUBAL,DL30.将CX寄存器低4位清零的正确指令是(B)。A.ANDCX,0F0HB.ANDCX,0FFF0HC.ANDCX,1110HD.MOVCX,031.当堆栈为空时,如SS=0805H,SP=40H,栈底字单元的物理地址是(C)A.08090HB.08089HC.0808EHD.08450H32.执行POPBP指令时,源操作数的物理地址表达式是(A)A.16*SS+SPB.16*SS+BP33.执行SUBAX,[BP][DI]指令,取源操作数时,使用的物理地址表达式是(A)A.16*SS+BP+DIB.16*ES+BP+DIC.16*DS+BP+DID.16*CS+BP+DI34.要输入端口1234H中的8位数据,其指令应是(B)A.MOVDX,1234HB.MOVDX,1234HOUTDX,AL1NAL,DXC.1NAX,1234HD.OUTDX,1234H35.MOVAL,79ADDAL,0B1H上面指令执行后,设置的标志位CF和OF的值是(D)A.CF=0,OF=0B.CF=1,OF=1C.CF=0,OF=1D.CF=1,OF=036.下列指令执行后对源和目的操作数均无影响的是(D)A.MOV[BX+2],AXB.SUBAX,2467HC.SBB[SI],BXD.CMPAX,BX37.设(SS)=338AH,(SP)=450H,执行PUSHBX,和PUSHF两条指令后,堆栈顶部的物理地址是(A)A.33CECHB.33CF2HC.33CF4HD.33CE8H38.设(SP)=0028H,执行段内返回指令RET后,SP的内容是(D)A.0036HB.0022HC.0030HD.002AH39.下列寄存器组中在存储器操作数寻址时可用于提供偏移地址的是(D)A.AX,BX,CX,DXB.SP,BP,SI,DIC.CS,ES,DS,SSD.BX,BP,SI,DI40.执行INC指令除对SF,ZF有影响外,还要影响的标志位为(A)A.OF,AF,PFB.OF,AF,CFC.OF,PF,CFD.AF,PF,CF二、判断正误,若判断为错,请说明理由1、MOVDS,0错误,立即数不能直接传送给数据段寄存器2、MOVAX,[SI][DI]错误,SI和DI不能同时使用3、MOV[BX],10H错误,无法知道操作数的类型,即不知道是字节的还是字。4、MOVAH,BX错误,源操作数和目的操作数的类型不一样。5、MOV[BX],[SI]错误,源操作数不能同时为内存操作数6.MOVCS,AX错误,CS不能作目的操作数7.POPCS错误,CS不能作目的操作数8PUSHCS正确9.POP1234H错误,出栈的操作数不能为立即数。10.MOV[BX][SI],2错误,无法知道操作数的类型,即不知道是字节的还是字。11.MOVMYDATA[BX][SI],ES:AX错误,源操作数寻址错误12.MOVBYTEPTR[BX],1000错误,源操作太大超过一个字节能表示的数范围13.PUSHFAX错误,源操作数默认为flag14.POPFAX错误,源操作数默认为flag15.ADDVAR1,VAR2(VAR1和VAR2为定义好的字变量)错误,操作数必须有一个不是内存操作数16.DIV12错误,操作数不知道是字节还是字。17.POPBL错误,目的操作数应该是字操作数18.INAL,100H错误,端口号超出255的范围。三、填空题1.8086/8088存贮器地址分段时,每个段起始地址的特征是___后四位二进制数为0__。2.假设执行前AX=7862H,指令XORAX,AX(表示异或,各位相异为1)执行后AX中的值是___0________。3.ARRAYDB0,2DUP(1,2),0,3汇编时生成的数据依次是_0,1,2,1,2,0,3__。4.在存取一个存储器操作数时,段地址必须由__段寄存器之一(_cs或者ds或者es或者ss)________提供。5.在8086/8088系统中,存储器物理地址是分段组织的。堆栈段的段地址存放在__ss___寄存器中,栈顶数据的偏移地址放在_sp____寄存器中。代码段的段地址存放在__cs___寄存器中。偏移地址在__ip___寄存器中。6.有指令MOVCL,N,要使该指令合法,则N的最大值是__127___,最小值是___-128_。(用十进制数表示)7.已知DS=29A0H,某数据的物理地址是2A400H,则当DS=6700H时,该数据的物理地址是__2A400H___。8.已知DS=4000H,BX=0100H,SI=0004,(40100H)=28H,(40101H)=69H,(40104H)=10H,(40105H)=9AH,先执行MOVAX,[0100H],AX=_6928H____再执行ADDAX,[BX+SI],AX=_0338H____,CF=__1___9.逻辑地址由___段地址和偏移地址________组成。10、DB指令以_____字节___为单位分配存贮;DD指令以___双字___为单位分配存贮。故如下数据定义:V1DB4DUP(2),2COUNTEQU10V2DDCOUNTDUP(?)为变量V1分配___5_个字节存贮;为变量V2分配_40___个字节存贮。11、设(CS)=25FFH,(DS)=2140H,(SS)=2510H,(BP)=02D0H,(SI)=0010H,(DI)=0206H,则(1)指令MOVAX,[BP+SI+2]的源操作数有效地址为_02E2H__,物理地址为__253E2H__(2)指令MOVAX,[DI+100H]的源操作数有效地址为_0306H__,物理地址为_21706H___.12.8086/8088CPU允许最大的存储空间为1MB,因此CPU的地址总线是___20_根,13.一个语句的名字项可以是标号或变量,在程序中它们两个在书写形式上的主要区别是___标号后面有冒号_____。14.内存0005CH处4个字节为D2,EF,00,F0,它是中断__类型号为23_的入口地址存放处,它表示该中断处理程序的起始地址为__F000______:__EFD2___。15.若CS为3000H,则当前代码段可寻址存储空间是_30000~3FFFF___。四、简答题1