. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  在debug中jcxz的一些问题  [待解决] 回复[ 3次 ]   点击[ 302次 ]  
lu675804358
[帖 主]   [ 发表时间:2012-02-23 19:58 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:2
注册日期:2012-02-10 02:48
我在debug中输入了两条指令
mov cx,0000
jcxz 0005   转到mov cx,0000处执行
结果发现了点问题
-a
153C:0005 mov cx,0000
153C:0008 jcxz 0005
153C:000A
-r ip
IP 0000
:0005
-t

AX=0500  BX=0003  CX=0000  DX=08A0  SP=FFF6  BP=0000  SI=0018  DI=0532
DS=153A  ES=B800  SS=153A  CS=153C  IP=0008   NV UP EI PL NZ NA PO NC
153C:0008 E3FB          JCXZ    0005
-t

AX=0500  BX=0003  CX=0000  DX=08A0  SP=FFF6  BP=0000  SI=0018  DI=0532
DS=153A  ES=B800  SS=153A  CS=153C  IP=0005   NV UP EI PL NZ NA PO NC
153C:0005 B90000        MOV     CX,0000
-t

AX=0500  BX=0003  CX=0000  DX=08A0  SP=FFF6  BP=0000  SI=0018  DI=0532
DS=153A  ES=B800  SS=153A  CS=153C  IP=0008   NV UP EI PL NZ NA PO NC
153C:0008 E3FB          JCXZ    0005
按理说设置cx=0,执行jcxz的后会陷入死循环,cx=ffffH,但执行完jcxz后cx还是等于0,这是怎么回事?
tomato
[第1楼]   [ 回复时间:2012-02-24 16:17 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
楼主将指令理解错了,jcxz 0005这条指令的意思是如果cx的值为0就跳到0005处去执行,所以,实验的结果是正确的。
227873
[第2楼]   [ 回复时间:2012-11-17 20:15 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-11-16 13:28
怎么变写成了一个死循环,这样不好看结果啊
aspade
[第3楼]   [ 回复时间:2012-11-19 15:50 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2012-11-15 09:42
jcxz 不会把 cx 减 1. 所以cx不会变成0FFFFH,事实上,你上面的整个过程cx一直没变。
至于:cx=ffffH,但执行完jcxz后cx还是等于0,这是怎么回事?
我看不懂你在说什么?
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved