文档详情

汇编程序的设计方法.pptx

发布:2025-05-19约7.3千字共10页下载文档
文本预览下载声明

第三章汇编程序的设计方法§3-1顺序程序设计一、乘法指令1、无符号数乘法指令MUL格式:MUL源(mem、reg)功能:累加器(AL/AX)内容与源操作数相乘,结果存于AX/DX+AX。有符号数乘法无符号数乘法

字节乘法AL源×AX字乘法AX源×DXAX隐含寻址例:MULBX;AX×BX的积存于DX+AXMULBYTEPTR[SI];AL×SI间接寻址的mem单元中的数据,乘积存于AX说明:运算结果影响CF、OF,对AF、PF、SF、ZF未定义若乘积的AH/DX≠0,则CF=OF=1,说明AH/DX中有数据否则,CF=OF=0。

2、有符号数乘法指令IMUL说明:除了对象是有符号数,其余思路、格式等与MUL相同。例:计算AL=FEH,CL=11H的积。MULCLIMULCL注:运算结果影响CF、OF。CF=OF=0,说明积的高半部分是符号扩展;CF=OF=1,说明积的高半部分有有效数据;另:同样两个数,用MUL、IMUL指令后,运算结果不同。∴无符号数用MUL,有符号数用IMUL看书例P81结果:FEH×11H=10DEH,CF=OF=1结果:FEH×11H=FFDEH,CF=OF=0

二、除法指令看书图,对比乘法指令学习。三、扩展指令1、字节转换为字CBW功能:按AL的符号位扩展到整个AH中。字节除法之前,用该指令产生双字节被除数。例:MOVAL,24HCBW例:MOVAL,84HCBW规则:当AL<80H时,AH=00HAL≥80H时,AH=FFH结果:AX=0024H结果:AX=FF84H

功能:按AX的符号位扩展到整个DX中。字除法之前,用该指令产生双字被除数。规则:当AX<8000H时,DX=0000HAX≥8000H时,DX=FFFFH字转换为双字CWD01看书P84例综合程序举例02

§3-2分支程序设计分支程序:根据不同条件转向不同程序段执行的结构。转移指令一、无条件转移指令JMP1、直接转移指令(1)段内直接转移格式:JMP标号说明:标号——也称符号地址,它表示转移的目的地。例:JMP2500H无条件转移指令条件转移指令段内转移段间转移直接间接直接间接转去执行CS:2500H单元的指令

(2)段间直接转移格式:功能:将指令操作码后连续两个字作为立即数,用来修改CS:IP的内容,然后转向新的CS:IP指向的地址。例:JMP8000H:1200H操作PCS计算出物理地址=81200H,程序转向从该单元开始的指令继续执行

2、间接转移指令(1)段内间接转移说明:转移地址为指令指定的16位reg或mem,可采用各种寻址方式。格式:JMP目标例:JMPBXJMPWORDPTR[BX+DI](2)段间间接转移例:JMPDWORDPTR[BX]功能:转向[BX]指向的32位存储器地址,将连续4个单元的内容低字送IP,高字送CS。,程序转向新的CS:IP指向的单元存储的指令继续执行。

区分段内段间:看指令中给出的地址是几个一个地址(16位)——段内二个地址(32位)——段间区分直接间接:看指令中的地址是直接给出(立即数/标号),还是间接放在寄存器或存储器中。总结:

二、条件转移指令格式:JcondOPRD功能:当满足一定的条件时,转移到指定的地址,否则,将顺序执行下条指令。说明:当条件cond成立,(IP)+偏移地址→IP当条件cond不成立,(IP)+2→IP所有条件转移指令都是直接寻址方式的短转移。1、简单的条件转移指令仅根据一个可测试标志位实现转移的指令。注:G——大于L——小于E——等于N——不A——高于B——低于

表3—1简单的条件转移指令指令助记符功能标志设置JE/JZ相等/等于0转移ZF=1JNE/JNZ不相等/不等于0转移ZF=0JCJNCJSJNSJOJNOJP/JPEJNP/JPO

2、无符号数条件转移指令3、符号数条件转移指令三、分支程序举例看P96例3.7画出

显示全部
相似文档