-258- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
NEG 存储单元 执 行:寄存器或存储单元中原有数据被其相反数代替 |
|||||||||||||||||||||
很多参考书上都把这条指令称为"求补"指令,这个"求补"说得有些含糊,给人的感觉好象是源操作数不是补码形式,可能是原码或反码,执行此指令后源操作数将被其补码代替。其实汇编语言中出现的数都是补码形式,根本不需要再求。所以说这条指令的实际用途是求源操作数的相反数,NEG(-1) = +1,NEG 30 = -30。 | |||||||||||||||||||||
![]() |
助记符:JGE (Jump if Great or Equal) 用 途:比较两个数,根据比较结果进行转移 格 式:JGE 目的地址 执 行:两个数相比较,第一个数大于或等于第二个数时此指令完成转移。 |
||||||||||||||||||||
这是一个条件转移指令,它类似于指令JAE。如同指令JA与JAE的关系一样,与这个指令沾亲的一条指令就是"JG(Jump if Great)"。而和这一对指令相对立的指令对就是"JL(Jump if Less)"与"JLE"。这一组四条指令与前面见过的指令"JA/JAE"、"JB/JBE"好象如出一辙,大有重复的嫌疑,其实不然,这里面还有些小奥妙。 在讨论这组指令的区别之前,我们先编两小段程序: |
|||||||||||||||||||||
PROG1.ASM code main mess1 mess2 start: outmess: main code |
segment assume org proc jmp db db mov mov mov cmp ja mov mov int mov int endp ends end |
cs:code,ds:code 100h near start 'Great!',0dh,0ah,'$' 'Less!',0dh,0ah,'$' ah,1 al,255 dx,offset mess1 al,ah outmess dx,offset mess2 ah,09h 21h ah,4ch 21h main |
PROG2.ASM code main mess1 mess2 start: outmess: main code |
segment assume org proc jmp db db mov mov mov cmp jg mov mov int mov int endp ends end |
cs:code,ds:code 100h near start 'Great!',0dh,0ah,'$' 'Less!',0dh,0ah,'$' ah,1 al,255 dx,offset mess1 al,ah outmess dx,offset mess2 ah,09h 21h ah,4ch 21h main |
||||||||||||||||
这两小段程序比较好理解,它将AL寄存器中的数和AH寄存器相比较,如果AL>AH则输出字符串"Great!",否则输出"Less!"。我们特意在AL寄存器内装入了255,在AH寄存器内装入了1,所以这个程序会毫无疑问地输出"Great!"。 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |