汇编语言2-2(精品).ppt
《汇编语言2-2(精品).ppt》由会员分享,可在线阅读,更多相关《汇编语言2-2(精品).ppt(91页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、教学提示在在正正确确理理解解每每条条指指令令的的功功能能基基础础上上,可可以以阅阅读读和和编编写写有有实际意义的程序段实际意义的程序段第 2 章2.3 位操作类指令位位操操作作类类指指令令以以二二进进制制位位为为基基本本单单位位进进行行数数据据的的操操作作;这这是是一一类类常常用用的的指指令,都应该特别掌握令,都应该特别掌握注意这些指令对标志位的影响注意这些指令对标志位的影响1、逻辑运算指令、逻辑运算指令AND OR XOR NOT TEST2、移位指令移位指令SHL SHR SAR3、循环移位指令循环移位指令ROL ROR RCL RCR第 2 章逻辑与指令AND对对两两个个操操作作数数执执
2、行行逻逻辑辑与与运运算算,结结果果送到目的操作数送到目的操作数AND指指令令设设置置CF=OF=0,根根据据结结果果设置设置SF、ZF和和PF状态,而对状态,而对AF未定义未定义AND AND reg,imm/reg/memreg,imm/reg/mem ;regregregregimm/reg/memimm/reg/memAND AND mem,imm/regmem,imm/reg ;memmemmemmemimm/regimm/reg 只只有有相相“与与”的的两两位位都都是是1,结结果果才才是是1;否否则则,“与与”的的结结果果为为0ANDAND第 2 章逻辑或指令OR对对两两个个操操作作
3、数数执执行行逻逻辑辑或或运运算算,结结果果送到目的操作数送到目的操作数OR指指令令设设置置CF=OF=0,根根据据结结果果设设置置SF、ZF和和PF状态,而对状态,而对AF未定义未定义OR OR reg,imm/reg/memreg,imm/reg/mem ;regregregregimm/reg/memimm/reg/memOR OR mem,imm/regmem,imm/reg ;memmemmemmemimm/regimm/reg 只只要要相相“或或”的的两两位位有有一一位位是是1,结果就是,结果就是1;否则,结果为;否则,结果为0OROR第 2 章逻辑异或指令XOR对对两两个个操操作作
4、数数执执行行逻逻辑辑异异或或运运算算,结结果送到目的操作数果送到目的操作数XOR指指令令设设置置CF=OF=0,根根据据结结果果设置设置SF、ZF和和PF状态,而对状态,而对AF未定义未定义XOR XOR reg,imm/reg/memreg,imm/reg/mem ;regregregregimm/reg/memimm/reg/memXOR XOR mem,imm/regmem,imm/reg ;memmemmemmemimm/regimm/reg 只只有有相相“异异或或”的的两两位位不不相相同同,结果才是结果才是1;否则,结果为;否则,结果为0XORXOR第 2 章逻辑非指令NOT对一个操
5、作数执行逻辑非运算对一个操作数执行逻辑非运算NOT指令是一个单操作数指令指令是一个单操作数指令NOT指令不影响标志位指令不影响标志位NOT NOT reg/memreg/mem ;reg/memreg/memreg/memreg/mem 按按位位取取反反,原原来来是是“0”的的位位变变为为“1”;原原来来是是“1”的的位位变变为为“0”NOTNOT例题:逻辑运算例题:逻辑运算movmov al,45h al,45h;逻辑与逻辑与 al=01hal=01handand al,31h al,31h;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0movmov al
6、,45h al,45h;逻辑或逻辑或 al=75hal=75horor al,31h al,31h;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0movmov al,45h al,45h;逻辑异或逻辑异或 al=74hal=74hxorxor al,31h al,31h;CF=OF=0CF=OF=0,SF=0SF=0、ZF=0ZF=0、PF=1PF=1movmov al,45h al,45h;逻辑非逻辑非 al=0bahal=0bahnotnot al al;标志不变标志不变例题:逻辑指令应用例题:逻辑指令应用;ANDAND指指令令可可用用于于复复位位某某些
7、些位位(同同0 0相相与与),不不影响其他位:将影响其他位:将BLBL中中D D3 3和和D D0 0位清位清0 0,其他位不变,其他位不变andand bl,11110110B bl,11110110B;OROR指指令令可可用用于于置置位位某某些些位位(同同1 1相相或或),不不影影响其他位:将响其他位:将BLBL中中D D3 3和和D D0 0位置位置1 1,其他位不变,其他位不变oror blbl,00001001B,00001001B;XORXOR指指令令可可用用于于求求反反某某些些位位(同同1 1相相异异或或),不影响其他位:将不影响其他位:将BLBL中中D D3 3和和D D0 0
8、位求反,其他不变位求反,其他不变xorxor blbl,00001001B,00001001B第 2 章测试指令TEST对对两两个个操操作作数数执执行行逻逻辑辑与与运运算算,结结果果不回送到目的操作数不回送到目的操作数AND指指令令设设置置CF=OF=0,根根据据结结果果设置设置SF、ZF和和PF状态,而对状态,而对AF未定义未定义TEST TEST reg,imm/reg/memreg,imm/reg/mem;regregimm/reg/memimm/reg/memTEST TEST mem,imm/regmem,imm/reg;memmemimm/regimm/reg只只有有相相“与与”的
9、的两两位位都都是是1,结结果果才才是是1;否否则则,“与与”的的结结果果为为0TESTTEST例例2.32:测试为:测试为0或或1test al,01htest al,01h;测试测试ALAL的最低位的最低位D D0 0jnzjnz there there;标志标志ZF=0ZF=0,即,即D D0 0=1=1;则程序转移到则程序转移到therethere.;否则否则ZF=1ZF=1,即,即D D0 0=0=0,顺序执行顺序执行there:.there:.TEST指指令令通通常常用用于于检检测测一一些些条条件件是是否否满足,但又不希望改变原操作数的情况满足,但又不希望改变原操作数的情况TESTT
10、EST第 2 章移位指令(shift)将将操操作作数数移移动动一一位位或或多多位位,分分成成逻逻辑辑移移位位和和算术移位,分别具有左移或右移操作算术移位,分别具有左移或右移操作SHL reg/mem,1/CLSHL reg/mem,1/CL;逻辑左移,最高位进入逻辑左移,最高位进入CFCF,最低位补最低位补0 0SHR reg/mem,1/CLSHR reg/mem,1/CL;逻辑右移,最低位进入逻辑右移,最低位进入CFCF,最高位补最高位补0 0SAL reg/mem,1/CLSAL reg/mem,1/CL;算术左移,最高位进入算术左移,最高位进入CFCF,最低位补最低位补0 0SAR r
11、eg/mem,1/CLSAR reg/mem,1/CL;算术右移,最低位进入算术右移,最低位进入CFCF,最高位不变最高位不变SALSAL与与SHLSHL相同相同演示演示演示演示演示演示演示演示演示演示演示演示第 2 章移位指令的操作数移移位位指指令令的的第第一一个个操操作作数数是是指指定定的的被被移移位位的的操操作作数数,可可以以是是寄寄存存器器或或存储单元存储单元后后一一个个操操作作数数表表示示移移位位位位数数,该该操操作作数数为为1,表表示示移移动动一一位位;当当移移位位位位数数大大于于1时时,则则用用CL寄寄存存器器值值表表示,该操作数表达为示,该操作数表达为CL第 2 章移位指令对标
12、志的影响按照移入的位设置进位标志按照移入的位设置进位标志CF根据移位后的结果影响根据移位后的结果影响SF、ZF、PF对对AF没有定义没有定义如如果果进进行行一一位位移移动动,则则按按照照操操作作数数的的最最高高符符号号位位是是否否改改变变,相相应应设设置置溢溢出出标标志志OF:如如果果移移位位前前的的操操作作数数最最高高位位与与移移位位后后操操作作数数的的最最高高位位不不同同(有有变变化化),则则OF=1;否否则则OF=0。当当移移位次数大于位次数大于1时,时,OF不确定不确定例例2.33:移位指令:移位指令movmov cl,4 cl,4movmov al,0f0h al,0f0h;al=f
13、0hal=f0hshlshl al,1 al,1;al=e0hal=e0h;CF=1CF=1,SF=1SF=1、ZF=0ZF=0、PF=0PF=0,OF=0OF=0shrshr al,1 al,1;al=70hal=70h;CF=0CF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0、OF=1OF=1sarsar al,1 al,1;al=38hal=38h;CF=0CF=0,SF=0SF=0、ZF=0ZF=0、PF=0PF=0、OF=0OF=0sarsar al,clal,cl;al=03hal=03h;CF=1CF=1,SF=0SF=0、ZF=0ZF=0、PF=1PF=1第 2
14、章循环移位指令(rotate)将将操操作作数数从从一一端端移移出出的的位位返返回回到到另另一一端端形形成成循循环环,分分成成不不带带进进位位和和带带进进位位,分别具有左移或右移操作分别具有左移或右移操作ROL reg/mem,1/CL ROL reg/mem,1/CL ;不带进位循环左移不带进位循环左移ROR reg/mem,1/CL ROR reg/mem,1/CL ;不带进位循环右移不带进位循环右移RCL reg/mem,1/CL RCL reg/mem,1/CL ;带进位循环左移带进位循环左移RCR reg/mem,1/CL RCR reg/mem,1/CL ;带进位循环右移带进位循环右
15、移演示演示演示演示演示演示演示演示演示演示演示演示演示演示演示演示第 2 章循环移位指令对标志的影响按照指令功能设置进位标志按照指令功能设置进位标志CF不影响不影响SF、ZF、PF、AF如如果果进进行行一一位位移移动动,则则按按照照操操作作数数的的最最高高符符号号位位是是否否改改变变,相相应应设设置置溢溢出出标标志志OF:如如果果移移位位前前的的操操作作数数最最高高位位与与移移位位后后操操作作数数的的最最高高位位不不同同(有有变变化化),则则OF=1;否否则则OF=0。当当移移位次数大于位次数大于1时,时,OF不确定不确定例例2.35:32位数移位位数移位;将;将DX.AXDX.AX中中323
16、2位数值左移一位位数值左移一位shlshl ax,1 ax,1rclrcl dx,1 dx,1DXAXCF0例例2.36:位传送:位传送;把;把ALAL最低位送最低位送BLBL最低位,保持最低位,保持ALAL不变不变rorror bl,1 bl,1rorror al,1 al,1rclrcl bl,1 bl,1rolrol al,1 al,1AL、BLCFBLCFALCFAL之之D0例例2.37:BCD码合并码合并;AH.ALAH.AL分别存放着非压缩分别存放着非压缩BCDBCD码的两位码的两位;将它们合并成为一个压缩;将它们合并成为一个压缩BCDBCD码存码存ALALand ax,0f0fh
17、and ax,0f0fh;保证高保证高4 4位为位为0 0movmov cl,4 cl,4rolrol ah,clah,cl;也可以用也可以用shlshl ah,clah,cladd al,ahadd al,ah;也可以用也可以用or al,ahor al,ah第 2 章2.4 控制转移类指令控控制制转转移移类类指指令令用用于于实实现现分分支支、循循环环、过过程程等等程程序序结结构构,是是仅仅次次于于传传送送指指令令的最常用指令的最常用指令重点掌握:重点掌握:JMP/Jcc/LOOP CALL/RETINT n/IRET 常用系统功能调用常用系统功能调用一般了解:一般了解:LOOPZ/LOOP
18、NZ INTO 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变2.4.1 无条件转移指令只只要要执执行行无无条条件件转转移移指指令令JMP,就就使使程程序序转转到到指指定定的的目目标标地地址址处处,从从目目标标地地址址处处开开始始执执行那里的指令行那里的指令操操作作数数label是是要要转转移移到到的的目目标标地地址址(目目的的地地址址、转移地址转移地址)JMP指令分成指令分成4种类型:种类型:段内转移、直接寻址段内转移、直接寻址 段内转移、间接寻址段内转移、间接寻址 段间转移、直接寻址段间转移、直接寻址 段间转移、间接寻址段间转
19、移、间接寻址JMP labelJMP label;程序转向程序转向labellabel标号指定的地址标号指定的地址JMPJMP第 2 章目标地址的寻址方式直接寻址方式直接寻址方式n转转移移地地址址象象立立即即数数一一样样,直直接接在在指指令令的的机机器器代代码码中中,就就是是直直接接寻寻址方式址方式间接寻址方式间接寻址方式n转转移移地地址址在在寄寄存存器器或或主主存存单单元元中中,就就是是通通过过寄寄存存器器或或存存储储器器的的间间接接寻址方式寻址方式第 2 章用标号表达用标号表达用寄存器或存储器用寄存器或存储器操作数表达操作数表达JMPJMP目标地址的范围:段内段内转移段内转移近转移(近转移
20、(near)n在在当当前前代代码码段段64KB范范围围内内转转移移(32KB范围)范围)n不不需需要要更更改改CS段段地地址址,只只要要改改变变IP偏移地址偏移地址段内转移段内转移短转移(短转移(short)n转转移移范范围围可可以以用用一一个个字字节节表表达达,在段内在段内128127范围的转移范围的转移代代码码段段代代码码段段第 2 章JMPJMP目标地址的范围:段间段间转移段间转移远转移(远转移(far)n从从当当前前代代码码段段跳跳转转到到另另一一个个代码段,可以在代码段,可以在1MB范围范围n需需要要更更改改CS段段地地址址和和IP偏偏移移地址地址n目目标标地地址址必必须须用用一一个
21、个32位位数数表表达达,叫叫做做32位位远远指指针针,它它就是逻辑地址就是逻辑地址第 2 章代代码码段段代代码码段段 实实际际编编程程时时,汇汇编编程程序序会会根根据据目目标标地地址址的的距距离离,自动处理自动处理成短转移、近转移或远转移成短转移、近转移或远转移 程序员可用操作符程序员可用操作符short、near ptr 或或far ptr 强制强制JMPJMPJMPJMP段内转移、直接寻址JMP labelJMP label;IPIP+IPIP+位移量位移量位位移移量量是是紧紧接接着着JMP指指令令后后的的那那条条指指令令的的偏偏移移地地址址,到目标指令的偏移地址的地址位移到目标指令的偏移
22、地址的地址位移当当向向地地址址增增大大方方向向转转移移时时,位位移移量量为为正正;向向地地址址减减小方向转移时,位移量为负小方向转移时,位移量为负jmpjmp againagain;转移到转移到againagain处继续执行处继续执行again:again:decdec cxcx;标号标号againagain的指令的指令jmpjmp outputoutput;转向转向outputoutputoutput:output:movmov result,al result,al;标号标号outputoutput的指令的指令第 2 章实际为相对寻址实际为相对寻址段内转移、间接寻址JMP r16/m16
23、JMP r16/m16;IPr16/m16IPr16/m16将将一一个个1616位位寄寄存存器器或或主主存存字字单单元元内内容容送送入入IPIP寄寄存存器器,作作为为新新的的指指令令指指针针,但但不不修修改改CSCS寄寄存存器的内容器的内容jmpjmp ax ax;IPAXIPAXjmpjmp word word ptrptr 2000h 2000h;IP2000hIP2000h第 2 章JMPJMPJMPJMP段间转移、直接寻址JMP far JMP far ptrptr label label;IPlabelIPlabel的偏移地址的偏移地址;CSlabelCSlabel的段地址的段地址将
24、将标标号号所所在在段段的的段段地地址址作作为为新新的的CS值值,标标号号在在该该段段内内的的偏偏移移地地址址作作为为新新的的IP值值;这这样,程序跳转到新的代码段执行样,程序跳转到新的代码段执行jmpjmp far far ptrptr othersegotherseg;远转移到代码段远转移到代码段2 2的的othersegotherseg第 2 章JMPJMP段间转移、间接寻址JMP far JMP far ptrptr memmem;IPmemIPmem,CSmem+2CSmem+2用用一一个个双双字字存存储储单单元元表表示示要要跳跳转转的的目目标标地地址址。这这个个目目标标地地址址存存放
25、放在在主主存存中中连连续续的的两两个个字字单单元元中中的的,低低位位字字送送IPIP寄寄存存器器,高高位位字字送送CSCS寄存器寄存器movmov word word ptrptr bx,0 bx,0movmov word word ptrptr bx+2,1500h bx+2,1500hJMP far JMP far ptrptr bxbx ;转移到转移到1500h:01500h:0第 2 章JMPJMP2.4.2 条件转移指令指指定定的的条条件件cc如如果果成成立立,程程序序转转移移到到由由标标号号label指指定定的的目目标标地地址址去去执执行行指指令令;条条件件不不成成立立,则则程程序
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 精品
限制150内