(0413)《汇编语言》复习思考题一、单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干的括号内。每小题1分,共20分)1、设DS=8225H,DI=3942H,指令NEGBYTEPTR[DI]操作数的物理地址是()A、85B92HB、86192HC、BB690HD、12169H2、下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是()A、AX,BX,CX,DXB、BX,BP,SI,DIC、SP,IP,BP,DXD、CS,DS,ES,SS3、循环指令LOOPNZ终止循环的条件是()。A、CX=0,且ZF=0B、CX=0,或ZF=1C、CX=1,且ZF=0D、CX=1,或ZF=14、对寄存器AX的内容乘以4的正确指令序列是()。A、SHRAX,1SHRAX,1B、SHLAX,1SHLAX,1C、ROLAX,1ROLAX,1D、RCRAX,1RCRAX,15、执行INC指令除对SF、ZF有影响外,还要影响的标志位是()。A、OF,AF,PFB、OF,AF,CFC、OF,PF,CFD、AF,PF,CF6、设DH=10H,执行NEGDH指令后,正确的结果是()。A、DH=10HCF=1B、DH=0F0HCF=0C、DH=10HCF=0D、DH=0F0HCF=17、下列传送指令中有语法错误的是()。A、MOVCS,AXB、MOVDS,AXC、MOVSS,AXD、MOVES,AX8、下面指令执行后,改变AL寄存器内容的指令是()。A、TESTAL,02HB、ORAL,ALC、CMPAL,BLD、ANDAL,BL9、执行除法指令后,影响的标志位是()。A、CF,OFB、SF,ZFC、CF,OF,SFD、AF,CF,OF,PF,SF,ZF都不确定10、执行下面指令序列后,结果是()。MOVAL,82HCBWA、AX=0FF82HB、AX=8082HC、AX=0082HD、AX=0F82H11、与MOVBX,OFFSETVAR指令完全等效的指令是()。A、MOVBX,VARB、LDSBX,VARC、LESBX,VARD、LEABX,VAR12、在段定义时,如果定位类型用户未选择,就表示是隐含类型,其隐含类型是()。A、WORDB、PAGEC、BYTED、PARA13、MOVSP,3210HPUSHAX执行上述指令序列后,SP寄存器的值是()。A、3211HB、320EHC、320FHD、3212H14、BUFDW10HDUP(3DUP(2,10H),3,5)上述语句汇编后,为变量BUF分配的存储单元字节数是()。A、80HB、100HC、124D、19215、在汇编语言程序的开发过程中使用宏功能的顺序是()。A、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用16、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是()。A、名字项B、操作项C、操作数项D、注释项17、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有()。A、CMPB、SUBC、ANDD、MOV18、为使CX=-1时,转至MINUS而编制了一指令序列,其中错误的序列是()。A、INCCXJZMINUSB、SUBCX,OFFFFHJZMINUSC、ANDCX,OFFFFHJZMINUSD、XORCX,OFFFFHJZMINUS19、AL和VAR字节单元中分别存放一个带符号数,执行CMPAL,VAR时,如AL》VAR,那么溢出位和符号位的关系是()。A、OF=SFB、OF1SFC、OF=SF=1D、OF=SF=020、检查BUF的内容是否为正偶数,如是正偶数,则0TAL。下面程序段正确的是()。A、MOVAL,BUFJSK1SHRAL,1JNCK1MOVAL,0K1:……B、MOVAL,BUFANDAL,11JNZK2MOVAL,0K2:……C、MOVAL,BUFTESTAL,81HJNZK3MOVAL,0K3:……D、MOVAL,BUFJNPK4TESTAL,80HJNZK4MOVAL,0K4:……二、简答题(每小题4分,共12分)1、在指令系统中,段内、段间返回均为RET指令。试回答:(1)执行段内返回RET指令时,执行的操作是:(2)执行段间返回RET指令时,执行的操作是:2、ARYDW10DUP(?)┇MOVAL,TYPEARYMOVBL,LENGTHARYMOVCL,SIZEARY上述MOV指令序列执行后的结果是什么?3、设某数据段:DATASEGMENTORG20HNUM1=8NUM2=NUM1+10HDA1DB'COMPUTER'DB0AH,0DHCOUNTEQU$-DA1DA2DW'CO','MP','UT','ER'DATAENDS试回答:(1)DA1的偏移地址是:___________________(2)COUNT的值是___________________________________(3)DA2+5字节单元的内容是_________________________________4.8位无符号整数的表示范围为0~255,写成16进制形式为00H~__________;8位有符号整数的表示范围为-128~+127,写成16进制形式为__________~__________。5.8086/8088分段管理存储空间,但每段容量最大不超过__________。6.逻辑地址为F000:100的存储单元,其物理地址是__________。7.用来指示堆栈栈顶的偏移地址的是__________寄存器。8.若要测试AL寄存器D4、D2、D0位是否都为0,则可使用__________指令语句(含操作数),以产生转移条件。这条指令执行后将利用标志位__________实现转移。9.若定义:bdatadb2dup(1,2,2dup(3),4),则dbata变量前5个单元从低地址到高地址的数据依次是__________。10.假设varw是一个16位变量,则指令“movvarw,ax”的目的操作数的寻址方式是__________。11.请指出下列指令错误原因:A.ORAX,[CX]B.ADD[SI],[BX][DI]C.JMPBYTEPTRLOOPSD.SARAX,4E.RCLDX12.A.下面两个语句有何区别?X1EQU1000HX2=1000HB.下面的程序段有错吗?若有,请指出错误。CRAYPROCPUSHAXADDAX,BXRETENDPCRAY13.假设程序中的数据定义如下:ARRAY1DW?ARRAY2DB16DUP(?)ARRAY3DD?PLENTHEQU$-ARRAY1问PLENTH的值为多少?它表示什么意义?14.试根据以下要求,分别写出相应的汇编语言指令。A.把AX寄存器和BX寄存器的内容相加,结果存入AX中。B.用BX和SI的基址变址寻址方式,把存储器中的一个字节与DL的内容相加,并把结果送回DL中。C.把数OBEH与AH内容相加,结果送回AH中。D.用SI和位移量0200H的寄存器相对寻址方式把存储器中的一个字与AX相加,并把结果送回存储单元中。E.用位移量0860H的直接寻址方式把存储器中一个字与数2EA0H相加,结果回送存储器中。三、程序分析题(每小题6分,共36分)1、已知AX=0FF60H,CF=1MOVDX,96XORDH,0FFHSBBAX,DX执行上述指令序列后,AX=_____________________,CF=_____________________2、设寄存器AL,BL,CL中内容均为76H,XORAL,0FHANDBL,0FHORCL,0FH执行上述指令序列后,AL=____________________________________BL=_________________________________,CL=________________________________3、已知AX=0A33AH,DX=0F0F0HANDAH,DLXORAL,DHNEGAHNOTAL执行上述指令序列后,AH=_____________________,AL=_____________________4、DATASEGMENTS9DB0,1,2,3,4,5,6,7,8,9DATAENDS┇LEASI,S9LEA,DI,S9+1MOVCX,5LOP:MOVAL,[SI]XCHGAL,[DI]MOV[SI],ALADDSI,2ADDDI,2LOOPLOP上述程序段运行后,S9开始的10个字节存储单元内容是什么?5、MOVAL,38HMOVBL,49HCALLSUBOINCALDECCL┇SUBOPROCADDAL,BLMOVCL,ALDAARETSUBOENDP上述程序段运行后,AL=_____________________,CL=_____________________6、DA3EQUWORDPTRDA4DA4DB0ABH,89H┇SHRDA3,1MOVDX,DA3SHLDA4,1MOVCX,DA3上述程序段运行后,CX=_____________________,DX=_____________________四、程序填空题(注意:下列各小题中,每空只能填一条指令!每小题6分,共12分)1、下面程序段是判断寄存器AH和AL中第3位是相同,如相同,AH置0,否则AH置全1。试把空白处填上适当指令。_____________________ANDAH,08H_____________________MOVAH,OFFHJMPNEXTZERO:MOVAH,0NEXT:……2、以BUF为首址的字节单元中,存放了COUNT个无符号数,下面程序段是找出其中最大数并送入MAX单元中。BUFDB5,6,7,58H,62,45H,127,……COUNTEQU$-BUFMAXDB?┇MONBX,OFFSETBUFMOVCX,COUNT-1MOVAL,[BX]LOP1:INCBX_____________________JAENEXTMOVAL,[BX]NEXT:DECCX_____________________MOVMAX,AL五、编制程序题(第1小题6分,第2小题14分,共20分)1、编定程序段,用DOS的1号功能调用通过键盘输入一字符,并判断输入的字符。如字符是Y,则转向YES程序段;如字符是N,则转向NO程序段;如是其他字符,则转向DOS功能调用,重新输入字符。(考生勿需写出源程序格式,只需写出与试题要求有关的指令序列)(YES和NO分别是两程序段入口处的标号)2、在BUF1和BUF2两个数据区中,各定义有10个带符号字数据,试编制一完整的源程序,求它们对应项的绝对值之和,并将和数存入以SUM为首址的数据区中。DATASEGMENTBUF1DW-56,24,54,-1,89,-8……BUF2DW45,-23,124,345,-265,……SUMDW10DUP(0)DATAENDS3.按照如下要求各编写一段语句序列:①定义字节变量unpak,其中以非压缩BCD码形式存放十进制数1234;②写出指令,将一个字节数据58H输出到端口43H;③将DX、BX、AX中的48位数右移1位。4.已知数据段变量datax、datay、dataz定义如下:dataxdw5678h,89abhdataydw9ef0h,1234hdatazdw2dup(?)编写一个程序段,实现将datax和datay中双字数据相加,并存入dataz单元。5.用一个程序段完成“REPMOVSW”指令的功能。6.编写一个程序段,用空格符将字符区char-field填满,该字符区的字符数在count字节变量中保存。7.写一个子程序,将AX的内容以二进制的形式显示到屏幕上。8.请编写一个完整的汇编语言源程序。要求如下:①数据段定义一个月份变量,存放数据1~12之间的月份;它对应12个月份的英文缩写,JAN、FEB、MAR、APR、MAY、JUN、J