巧记汇编语言中的转移指令 北京 刘铁英 1994-12-09 8086汇编语言中的转移指令条数虽多,但都是以J字符打头,这是转移指令的特征,J即是英语JUMP的缩写。 后面的字符大致可分为两类: 一、标志寄存器的标志位符号: C(进位标志位)、Z(零标志位) P(奇偶标志位)。 S(符号标志位)、O(溢出标志位)。 二、逻辑判断条件的英文缩写: N.非(NOT) E.等于(EQUAL) A.高于(ABOVE)用于无符号数的比较结果 B.低于(BELOW)用于无符号数的比较结果 G.大于(GREAT)用于带符号数的比较结果 L.小于(LESS)用于带符号数的比较结果 这些字符的组合即综述了相应的比较或运算结果。 例如:NC即为C标志位的否定,即标志位C=0 JNC即表示标志位C=0时转移。 NBE表示不低于等(即相当于“大于”) 利用这个规律,就可以非常简单地理解大多数条件转移指令的含义了。从另一个角度,这些指令还可以作如下分类: 一、以标志位的内容作为转移条件,有肯定的表示(标志位=1)和否定的表示(标志位=0): 1.肯定的表示: JC C=1 转移 进位转移 JP P=1 转移 偶转移 JS S=1 转移 负转移 JZ Z=1 转移 零转移 2.否定的表示: JNC C=0 转移 非进位转移 JNP P=0 转移 奇转移 JNS S=0 转称 非负转移 JNZ Z=0 转移 非零转移 要注意,对P(奇偶)标志位还加上奇(000)、偶(EVEN)字符缩写的表示方法(这是两个特例): JPO P=0 转移 奇转移,相当于 JNP JPE P=1 转移 偶转移,相当于 JP 二、以比较或运算结果作为转移条件,也分肯定的表示和否定的表示,不过还要区分是否是对带符号数进行操作: 1.肯定的表示: 用于无符号数: JA 高于 JAE 高于等于 JB 低于 JBE 低于等于 JE 等于 用于带符号数: JG 大于 JGE 大于等于 JL 小于 JLE 小于等于 JE 等于 2.否定的表示: 用于无符号数: JNA 不高于 JNAE 不高于等于 JNB 不低于 JNBE 不低于等于 JNE 不等于 用于带符号数: JNG 不大于 JNGE 不大于等于 JNL 不小于 JNLE 不小于等于 JNE 不等于 肯定的表示往往和相应的否定表示两两一对,表示相同的转移条件。 如:JB (低于转移)和JNBE(不高于等于转移)表达的是相同的转移条件。了解以上的规律,就可以轻松地记住绝大多数转移指令了,还剩下JMP(无条件转移)和JCXZ(寄存器CX为0时转移)两条指令,也可以从它们的字符含义中找到记忆和理解的规律。 现在,虽然可能对于每一条转移指令所涉及的标志寄存器的状态变化还不十分了解,但至少可以顺利地使用这些指令来读、写简单的汇编程序了。