jcxz
来源:互联网 发布:sqlserver errorlog 编辑:程序博客网 时间:2024/06/03 22:39
转移指令就是控制CPU执行内存中某处代码的指令。
简单的讲就是本来范伟崴的是左脚,通过赵本山的一句话( 转移了! ),就给转移到了右脚上。这里赵本山所说的话就相当于是转移指令,而且范伟还是无条件的转移,根本不问原因直接问(大哥,我得用点什么药呢? )
但是!jcxz是有条件转移指令.如赵本山想要范伟的自行车,向范伟发出指令。范伟接到指令后通过判断自身以后可能就告别自行车了(你说像我这腿脚呢,基本就告别自行车啦,是不?),所以才把自行车送给赵本山(我就把自行车给你啦)。而不是当赵本山张口要的时候直接给。
格式:jcxz 标号
用高级语言描述:if (cx == 0)
jmp short 标号 ;------> 当cx= 0 转移到标号处
else
next ;------>当cx != 0 程序什么也不做,继续向下执行
(短转移,通过位移进行转移,IP修改范围-128~127)具体详细内容暂不一一列举。
>>>jcxz同jmp一样,都是通过位移来进行转移的并且都是短转移。蓝色的地方我能看懂,紫色的我也能看懂,但是紫色和红色加起来我就看不懂了,悲剧啊!
0C85:0000 B80020 MOV AX,2000
0C85:0003 8ED8 MOV DS,AX
0C85:0005 BB0000 MOV BX,0000
0C85:0008 B400 MOV AH,00
0C85:000A 8A07 MOV AL,[BX]
0C85:000C 8BC8 MOV CX,AX
0C85:000E E303 JCXZ 0013
0C85:0010 43 INC BX
0C85:0011 EBF7 JMP 000A
0C85:0013 8BD3 MOV DX,BX
>>>IP修改范围为8位位移 -128~127(补码表示)
8位位移=标号处地址 - jmp指令后的第一个字节的地址
标号处的地址为:
0C85:000A 8A07 MOV AL,[BX] ;------> 此为标号处地址 000AH
jmp指令后的第一个字节的地址 :
0C85:0011 EBF7 JMP 000A
0C85:0013 8BD3 MOV DX,BX ;------>此为jmp指令后的第一个字节的地址0013H
;>>>>>>8位位移计算方法得:000AH - 0013H = F7<<<<<<
;F7是补码的表示方式 ,表示的数据为-9
;同时也得出了JMP 000A 中000A符合IP=当前IP+F7
;当CPU执行JMP时,CPU将当前IP向前移动9个字节,它的机器码为EBF7 转移的目的地址为CS:000A
; <至此解决了上面那个紫色红色悲剧!但是补码不会表示啊!唉!人生就是从一个悲剧结束在到一个悲剧开始>
>>>补码?
- jcxz
- jcxz
- 《汇编语言》读书笔记(3)----jcxz指令的巧妙运用
- `jcxz' is not supported in 64-bit mode
- 8086汇编语言 cx=0则跳转。指令jcxz实例
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
- 汇编指令: JO、JNO、JB、JNB、JE、JNE、JBE、JA、JS、JNS、JP、JNP、JL、JNL、JNG、JG、JCXZ、JECXZ、JMP、JMPE
- select、poll、epoll的比较
- c++:输出小于1000的所有孪生素数
- 讲音频硬件解码器的
- 【redhat5.5】配置Apache的别名的pam认证
- XP下的VS2008 + WDK +ddkwizard的开发环境配置
- jcxz
- 黑马程序员_新的起点
- ExtJs4学习笔记一--基础知识
- 将网页上的MathJax复制到word中
- SQL Server数据库移植到Oracle的二种方法
- 数组须知
- QQDLL加载漏洞可能导致用户密码被窃取
- java初学者必读
- 值得深思的一个c程序