JNZ到底是ZF=1时转,还是ZF=0时转,看书胡涂了?

lizhuohua 2003-07-30 01:20:10
如:
TEST AL,80H
JNZ UIP

若AL中第6位为1,则ZF应该置0吧,那JNZ就不该转了吧?可为什么书上说要转呢?
...全文
769 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckp 2003-08-01
  • 打赏
  • 举报
回复
如果al的第七位为1,运算结果不为零,则zf标志位为0,
zf标志位为零,则jnz跳转.
实际上,我们编程的时候,可以不考虑zf,直接考虑如下:
进行test运算,
如果运算结果不为零,则jnz跳转.
如果运算结果为零,则继续往下运行.
crazyboy2003 2003-08-01
  • 打赏
  • 举报
回复
JNZ的意思是: Jumper if Not Zero (简称JNZ) --(这是我的记法,这样记很管用的)
即: 如果你所测试的内容不为0 就跳转
如果你所测试的内容为0 就不跳转。

当然了
如果你所测试的内容为0 ,ZF = 1 ;
开心颗粒 2003-08-01
  • 打赏
  • 举报
回复
就你的例子说吧
测试al中的第七位是否位0,如果为0,则zf标志位为1,zf=1,并且继续jnz后面的一条指令,不执行jnz指定的行
lizhuohua 2003-08-01
  • 打赏
  • 举报
回复
越说我越糊涂,就我的例子说吧
如果AL的第七位是1,那么ZF位怎么变?jnz转吗?
tianyi5514 2003-07-31
  • 打赏
  • 举报
回复
JNZ 指结果不为0时跳转
结果为0时ZF位=1
结果不为0时ZF=0
所以,当ZF位=0时跳转
zhaobird 2003-07-31
  • 打赏
  • 举报
回复
TEST AL,80H
这条指令只改变标志位寄存器,如果(AL) AND 80H为0,ZF=1,否则,ZF=0,
JNZ则根据ZF的值,来是否跳转。
zhyinfo 2003-07-31
  • 打赏
  • 举报
回复
ZF=1 代表寄存器为零或相等。

而JNZ是不相等或不为零跳转,否则顺序执行。

所以ZF=0时跳转。
ckp 2003-07-30
  • 打赏
  • 举报
回复
用DEBUG跟踪看看,test ax,80h应该是第七位是否为零。
jnz是不为零时转。jnz----Jump when Not Zero
lizhuohua 2003-07-30
  • 打赏
  • 举报
回复
up
lizhuohua 2003-07-30
  • 打赏
  • 举报
回复
错了,是第7位

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧