习题一1.在计算机内部,计算机能够直接执行的程序语言是。A.汇编语言B.C++语言C.机器语言D.高级语言2.在堆栈段中,存放栈顶地址的寄存器是。A.IPB.SPC.BXD.BP3.指令指针寄存器IP用来存放代码段中的偏移地址。在程序运行的过程中,它始终指向。A.下一条指令的首地址B.下一条指令的地址C.当前指令的首地址D.当前指令的地址4.编译程序的功能是。A.检查源程序中的语法错误和逻辑错误B.将源程序编译成目标程序C.改正源程序中的语法错误D.将高级语言源程序翻译成汇编语言源程序5.用户为了解决自己的问题,用汇编语言所编写的程序,称为。A.目标程序B.源程序C.可执行程序D.汇编程序6.计算机中用来存储程序、数据等信息的记忆装置是。A.控制器B.运算器C.CPUD.存储器7.在宏汇编中,源程序必须通过____编译_______生成目标代码,然后用连接程序将其转化为可执行文件,该文件可在系统中运行。习题二1当SS=3000H,SP=0100H时,执行PUSHAX指令后,堆栈顶部的物理地址是()A.30100HB.30098HC.30102HD.300FEH2设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是()A.-82、-126、-2B.-2、-125、126C.-2、-126、-125D.-82、-125、1253标志寄存器中属于控制标志位的是()A.DF,OF,SFB.DF,IF,TFC.OF,CF,PFD.AF,OF,SF4设(AX)=4544H,在执行指令”SUBAH,AL”之后,()A.CF=0,OF=0B.CF=0,OF=1C.CF=1,OF=0D.CF=1,OF=15若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSHAX,PUSHBX,POPCX,POPDX后,寄存器CX的内容为______19____________。6若物理地址为2D8C0H,偏移量为B6A0H,则段地址为_2222H________。7设(AL)=70H,分析在SUBAL,9AH后,标志寄存器中CF、OF、ZF、PF、SF的状态。CF=1,OF=1,,ZF=0,PF=0,SF=1习题三1、下列指令中,正确的一条是。A)MOVBYTEPTR[BX],1000B)MOVAX,[SI][DI]C)LEABX,4[BX]D)MOVAX,ARRAY1+ARRAY22、指令SUBAX,5[BX+DI]的源操作数的寻址方式是。A)寄存器寻址B)基址+变址寻址C)变址寻址D)直接寻址3、假设V1和V2是用DW定义的变量,下列指令中正确的是。A)MOVV1,V2B)MOVV1,20HC)MOV2000H,V2D)MOVAL,V14、设在内存单元(0010H)=12H,(0011H)=34H,对于从0010H处取一个字的叙述正确的是________。A)读出的字的值为1234H,需要访问两次存储器B)读出的字的值为3412H,需要访问两次存储器C)读出的字的值为3412H,需要访问一次存储器D)读出的字的值为1234H,需要访问一次存储器5、有指令“MOVSI,OFFSETDATA”,和它等效的指令是___LEASI,DATA_________。6、对于下面的数据定义,各条MOV指令单独执行后,请填充有关寄存器的内容:TABLE1DB?TABLE2DW20DUP(?)TABLE3DB‘ABCD’MOVAX,TYPETABLE1;AX=①MOVBX,TYPETABLE2;BX=②MOVCX,LENGTHTABLE2;CX=③MOVDX,SIZETABLE2;DX=④MOVSI,LENGTHTABLE3;SI=⑤AX=1,BX=2,CX=20,DX=40,SI=1.习题四1.MOVAL,20HMOVBL,ALADDAL,BLSBBAL,10HCBWDIVBL上述程序段执行后,(AH)=___10H________,(AL)=___01H_______2.语句”BUFDB25”的含义是()A.用BUF表示25B.定义BUF为字节变量,初始值为25C.从标号BUF对应的地址起分配25个单元D.定义BUF为变量,其地址为253.除法指令DIV的格式中,只有一个源操作数。若其类型属性为字节,则目的操作数在_______AX__________中。4.执行一列三条指令后,AX寄存器中的内容是()。MOVAX,‘8’ADDAL,‘9’AAAA.0071HB.0107HC.0017HD.0077H5.逻辑移位指令SHL用于()A.带符号数乘2B.带符号数除2C.无符号数乘2D.无符号数除26.CWD指令的功能是()A.把源操作数的符号位扩展到目的操作数中B.把AL中的符号位扩展到AH中C.把AH中的符号位扩展到AL中D.把AX中的符号位扩展到DX中7.已知AX,BX中均为带符号数,当进行字相除时,下面指令或指令序列正确的是()A.DIVBXB.CWDIDIVBXC.XORDX,DXD.CBWDIVBXIDIVBX8.使AL中的操作数0,1位变反,其它位不变的指令是_____XOR_03H_______________。9.写出将寄存器BX,AX的内容互换的正确指令是____XCHG_AX,BX___________________。10.设(AX)=2012H,执行CMPAX,2012H后(AX)=__2012H_________。习题五(1)设(SS)=338AH,(SP)=0450H,执行PUSHBX和PUSHF两条指令后,堆栈顶部的物理地址是()。A.33CECHB.33CF2HC.33CF4HD.33CE8H(2)若(AX)=-15,要得到(AX)=15应执行的指令是()。A.NEGAXB.NOTAXC.INCAXD.DECAX(3)将累加器AX内容清零的错误指令是()。A.ANDAX,0B.XORAX,AXC.SUBAX,AXD.CMPAX,AX(4)填写执行下列程序段后的结果。MOVDX,8F70HMOVAX,54EAHORAX,DXANDAX,DXNOTAXXORAX,DXTESTAX,DX(AX)=__________、(DX)=__________、SF=__________OF=________、CF=_________、PF=_________、ZF=__________(AX)=0FFFFH,(DX)=8F70H,SF=1,OF=0,CF=0,PF=0,ZF=0(5)DAT1DW12H,23H,34H,46H,57HDAT2DW03HLEABX,DAT1ADDBX,DAT2MOVDX,[BX]MOVAX,4[BX]SUBAX,DX执行上列程序段后,AX的内容为。(AX)=2300H(6)执行下列程序段后,AX和CF中的值是多少?STCMOVCX,0403HMOVAX,0A433HSARAX,CLXCHGCH,CLSHLAX,CL(AX)=4860H,CF=1习题六1.已知AX=0FFFFH,DX=0001HMOVCX,2LOP:SHLAX,1RCLDX,1LOOPLOP上述程序段执行后,(DX)=0007H,(AX)=0FFFCH2.已知AX=78H,BX=0804HSHRBX,1ANDBX,0F0FHMOVCX,4LOP:XCHGBH,BLDIVBLSALAX,1LOOPLOP上述程序段执行后,(AX)=001EH,(BX)=0402H3.CODESEGMENTASSUMECS:CODE,DS:CODE,SS:CODEORG100HBEGIN:MOVAX,01HMOVBX,02HMOVDX,03HMOVCX,04HL20:INCAXADDBX,AXSHRDX,1LOOPNEL20RETCODEENDSENDBEGIN当执行以上程序后,AX、BX、CX、DX中的值分别是多少?:AX=①BX=②CX=③DX=④(AX)=03H,(BX)=07H,(CX)=02H,(DX)=04.已定义了两个字变量A和B,补充下列程序段使之完成下列功能:A.若两个数中有一个是奇数,则将奇数存入A中,偶数存入B中。B.若两个数均为奇数,则将两数均加1后存回原变量。C.若两个数均为偶数,则两个变量均不改变。MOVAX,ATESTAX,_0001H_____JZA_EVENMOVBX,BTESTBX,0001HJZB_EVEN_INC_AX_____________MOVA,AX_INC_BX__________MOVB,BXB_EVEN:_JMP_EXIT___________A_EVEN:MOVBX,BTESTBX,0001HJZEXITXCHG_AX,BX___________MOVA,AXMOVB,BXEXIT:习题七1.如果用调试程序DEBUG的R命令在终端上显示当前各寄存器的内容如下,请说明当前堆栈段段基址是多少?栈顶的物理地址是多少?段基址21F0H,物理地址31EEEHCDEBUG-RAX=0000BX=0000CX=0079DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=10E4ES=10F4SS=21F0CS=31FFIP=0100NVUPDIPLNZNAPONC2.分析下列程序段执行后,AX寄存器的内容是什么?......TABLEDW10H,20H,30H,40H,50H,60H,70H,80HENTRYDW6......MOVBX,OFFSETTABLEADDBX,ENTRYMOVAX,[BX](AX)=0040H3.试分析下列程序段执行后,AX和DX寄存器的内容分别是什么?......VAR1DB86HVAR2DW2005H,0021H,849AH,4000H......MOVAL,VAR1CBWLEABX,VAR2MOVDX,2[BX]SUBAX,DX(AX)=0FF65H,(DX)=0021H4.试分析下列程序段,回答所提问题。ORG3000HDB11H,12H,13H,14H,15H......MOVBX,3000HSTCADCBX,1SALBL,1INCBYTEPTR[BX](1)程序段执行后,3004H单元中的内容是什么?16H(2)程序段执行后,BX中的内容是什么?CF的值是1还是0?(BX)=3004H,CF=0习题八1.分析下面的程序段,执行后AX的内容为多少?ARRAYDW10DUP(2)XORAX,AXMOVCX,0AHMOVSI,12HNEXT:ADDAX,ARRAY[SI]SUBSI,02HLOOPNEXT(AX)=20//或14H2.执行下列程序段后,给出指定寄存器的内容。MOVAX,0MOVBX,1MOVCX,5A:ADDAX,BXINCBXLOOPAHLT执行后的结果为AX=__15____;BX=__6____。该程序段的功能是____计算0+1+2+3+4+5____________________。3.设(AX)=1122H,(BX)=3344H,(SP)=5566H,执行如下程序段后,IP和SP的值分别是什么?SUNPROCPUSHAXADDBX,AXPUSHBXPOPBXRETSUNENDPIP=1122H,SP=5566H4、执行下列程序段后,AX和CF中的值是多少?STCMOVCX,0403HMOVAX,0A433HSARAX,CLXCHGCH,CLSHLAX,CL(AX)=4860H,CF=15、下列程序段运行后,HCOD和HCOD+1两字节单元内容是什么?HEXDB‘0123456789ABCDEF’HCODDB?,?┇MOVBX,OFFSETHEXMOVAL,1AHMOVAH,ALANDAL,0FHXLATMOVHCOD[1],ALMOVCL,12SHRAX,CLXLATMOVHCOD,AL‘1’,’A’习题九1、CALLDWORDPTR[BX]指令是段间调用还是段内调用。它一共向堆栈中压入几个字?两个字2、在子程序设计时,为什么要保护和恢复现场?由于汇编语言所操作处理的对象主要是CPU寄存器,