目录 上一页 下一页 下一章

-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

目录 上一页 下一页 下一章