苏州大学汇编复习2_第1页
苏州大学汇编复习2_第2页
苏州大学汇编复习2_第3页
苏州大学汇编复习2_第4页
苏州大学汇编复习2_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

汇编一、QuestionsandProblems.(5道×2')在以下题中选五道。1.TheextendedBXregisterisaddressedasEBX。2.Whichmicroprocessors(微处理器)containanFSsegmentregister(段处理器)?答:80386及以上版本。3.Determinethememorylocationaddressedbythefollowingrealmode80286registercombinations:(通过以下的寄存器组合确定内存寻址)(a)DS=1000HandDI=2000H答:(a):12000H(b)DS=2000HandSI=1002H(b):21002H(c)SS=2300HandBP=3200H(c):26200H4.WhataretheIA-32processor’s(处理器)threebasicmodeofoperation(基本操作模式)?答:保护虚地址模式、实地址模式、虚拟8086模式5.Namealleight32-bitgeneral-purposeregisters.(8个31位通用寄存器名称)P315答:EAX、EBX、ECX、EDX、ESP、EBP、ESI、EDI1GB=KB、1TB=KB、1PB=TB6.AcomputerGB(GigaBytes)isequaltoK(Kilo)bytes.1GB=KB、1TB=KB、1PB=TB

7.IftheDSregistercontains0030Hinaprotectmodesystem,whichtable,entryandprivilegelevelareselected?P370答:Index=6TI=0RpL=08.The80386DXaddressesbytesofmemory.P3709.The8086addressesbytesofmemory.10、Whatarethethreebasictypesofoperand?答:立即数操作数、寄存器操作数、存储器操作数11、(True/False):ThedestinationoperandofaMOVinstructioncannotbeasegmentregister.(mov指令的目的操作数不能是段寄存器)答:F.12、(True/False):TheEIPregistercannotbethedestinationoperandofaMOVinstruction.(EIP寄存器不能作为mov指令的目的操作数)答:T.13、Intheoperationnotation(systemofsignsorsymbols)usedbyIntel,whatdoesr/mem32indicate?(r/mem32指什么)答:32位内存操作数。14、WriteoneormoreinstructionsthatsubtractVAL4fromVAL2.(写出从VAL2中减去VAL4)答:MOVAXVAL4SUBVAL2AX15、(Yes/No):IsitpossibleforboththeSignandZeroflagstobesetatthesametime?(符号位和零标志位可以同时被设置吗?)答:NO

16、(Yes/N):WilltheOverflowflagbesetifyouaddanegativeintegertoanegativeintegerandproduceapositiveresult?答:YES17、(True/False):Any16-bitgeneral-purposeregistercanbeusedasanindirectoperand.(任何16位通用寄存器都可以作为间接操作数。)答:F只能用SI、DI、BX或BP寄存器,应尽量避免BP。BP常用来做寻址堆栈而不是数据段。18、(True/False):TheBXregisterisusuallyreservedforaddressingthestack.(BX寄存器通常作为堆栈寻址。)答:F应该是BP。19、WhyisthestackcalledaLIFOstructure?答:堆栈遵循先进后出的原则。20、Whichinstructionpushesallofthe32-bitgeneralpurposeregistersonthestack?(哪个指令可以在堆栈中输出所有32位通用目的寄存器。)答:PUSHAD*若是16位应该是PUSHD21、WhichinstructionpopsthestackintotheEFLAGSregister?答:POPFD*若是FLAGS就应该是POPF。22、WriteasingleinstructionthatreversesallthebitsinEAX(donotusetheNOTinstruction).(写一个指令使EAX置反,不要使用不指令)答:XOREAX,0FFFFFFFFH23、WriteinstructionsthatsettheZeroflagifthe32-bitvalueinEAXiseven,andcleartheZeroflagifEAXisodd.答:TESTEAX,1或ANDEAX,124、Implementthefollowingpseudocodeinassemblylanguage:if(dx<=cx)X=1;elseX=2;答:CMPDX,CXJNBEB答:CMPDX,CXJNBEBMOVX,1JMPEXITB:MOVX,2JMPEXIT

25、(True/False):Acodelabelisfollowedbyacolon(:),butadatalabeldoesnothaveacolon.答:T26、Whywoulditnotbeagoodideatousenumericaddresseswhenwritinginstructionsthataccessvariables?(为什么写编写访问变量指令时使用数字变量不好?)答:数字地址可读性不好,容易混淆。27、(true/False):Whenaprogram’ssourcecodeismodified,itmustbeassembledandlinkedagainbeforeitcanbeexecutedwiththechanges.(当一个程序源代码被修改时,在他执行前必须再次编译。)答:F目标代码改变时,必须重新编译;而源代码修改不影响目标代码。28、Declareastringvariablecontainingtheword“TEST”repeated500times.答:STRDB,500DUP(“TEST”)29、Createanuninitializeddatadeclarationfora16-bitinteger.(为一个16位的整数创建一个未初始化的数据声明。)答:STRDW,?三、简答题(4道×5’)1、判断错误:(1)MOV[SP],AX错:栈指针不能作为存储器指针引用的寄存器;作为存储器指针和间接寻址的寄存器,80X86只有4个:[BX]、[BP]、[SI]、[DI]。(2)PUSHCS对(3)POPCS错:POP目的操作数可以是通用寄存器和段寄存器,但CS例外。(4)MOV[BP],BX对(5)ADDECX,[ESP]对(6)JMPBX+100错:不能有+100(7)JMPCX对(8)ADD[BX],BX对(9)ANDAX,DS错:段寄存器不能参与AND运算(10)MOVAX,DS对,DS只能作为源操作数(11)MUL16错:操作源不能是立即数(12)ADDAL,[SI+DI]错:SI、DI不能组合(13)SUB[BP+DI-1000],AL对(14)ADDBH,[BL-3]错(15)XCHG[BP],ES错:ES不能作为源操作数(16)XCHGAL,ES:[BP]对(17)LEADI,[BX+DI]对(18)ROLCX,CL对(19)ADDCX,CL错:CL不能作为源操作数(20)MOVAL,300错:AL是8位,最多255(21)SUBDL,CF错:CF为进位标志,不能作为操作数(22)SUB[SI],[DI]错:不能同时为段寄存器(23)MOVIP,AX错:指针IP既不能作为源操作数,也不能作为目的操作数2、执行结果:熟悉MOV指令、算术指令、loop指令、逻辑、移位3、~~~~~四、阅读程序10分实验题目:①求和、②堆栈平衡方法、③计算字符串长度五、写程序45分四个程序其中有:两个试验中的完整程序、从C语言翻译为汇编语言

其余习题:1、请给出使标志CF清0的三种方法(用一条汇编语言实现)XORBX,BXANDBX,0ORDX,DX2、请给出使寄存器AX清0的三种方法(用一条汇编语言实现)MOVAL,0XORBX,BXSUBAX,AX3、写出执行计算如下表达式的值:(W*X-3)/Y的指令段,假设X、Y、W均为16位无符号数,分别存放在名为AAA、BBB和CCC的变量存储单元中,表达式的结果将存放在名为DDD(商)和RRR(余数)的变量存储单元中。MOVAX,AAAMULCCCSUBAX,3SBBDX,0MOVCX,BBBDIVCXMOVDDD,AXMOVRRR,DX4、求出以下各十六进制数与十六进制数62A0的和,并根据结果设置标志位SF、CF、ZF和OF。(1)9D60(2)4321(3)CFA0答:(1)、10000SF=0、CF=1、CF=1、OF=0(2)、A5C1SF=1、CF=0、CF=0、OF=1(3)、13240SF=0、CF=1、CF=0、OF=05、试用80X86汇编语言编制程序段完成如下所示的C++语言编写的函数_fastcalltest(intx,inty){Return(5*X+9*Y+300);}MOVEBX,ECXLEAECX,[ECX*4]ADDECX,EBXMOVEBX,EDXLEAEDX,[9*EDX]ADDEDX,EBXLEAEAX,[ECX+EDX]6、以下是C++语言和80X86汇编语言混合编写的程序,是写出程序运行后的结果。intesp1,esp2,esp3,esp4,esp5,ebx1,eax1;_asm}MOVESP,00000000HMOVEAX,12345678HMOVesp1,ESPP

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论