jcxz指令
jcxz指令為有條件轉(zhuǎn)移指令,所有的有條件轉(zhuǎn)移指令都是短轉(zhuǎn)移(jmp為無條件轉(zhuǎn)移指令),在對(duì)應(yīng)的機(jī)器碼中包含轉(zhuǎn)移的位移,而不是目的地址。對(duì)ip的修改范圍都為-128~127
j=jmp
cx=cx寄存器
z=zero=0
======>含義:在cx寄存器中的值為0時(shí)跳轉(zhuǎn)
與loop指令相反(在cx中值不為零時(shí)跳轉(zhuǎn))
當(dāng)cx≠0時(shí)什么都不做
注意:所有的有條件有條件轉(zhuǎn)移都是短轉(zhuǎn)移,且經(jīng)過編譯之后,機(jī)器碼包含了位移范圍
如:EBXX(XX表示位移范圍)
XX是由編譯器編譯的時(shí)候執(zhí)行的
公式:標(biāo)號(hào)處的偏移地址-jmp指令之后的第一個(gè)字節(jié)的地址
指令格式:jcxz 標(biāo)號(hào)(如果cx=0,轉(zhuǎn)移到標(biāo)號(hào)處執(zhí)行)
操作:當(dāng)cx=0時(shí),IP=IP+8位位移
八位位移=標(biāo)號(hào)處的地址-jcxz指令后的第一個(gè)字節(jié)的地址
八位位移的范圍為-128~127,用補(bǔ)碼表示;
八位位移由編譯程序在編譯時(shí)算出。
當(dāng)cx≠0時(shí),什么都不做(程序向下執(zhí)行)
問題:
補(bǔ)全編程,利用jcxz指令,實(shí)現(xiàn)在內(nèi)存2000H段中查找第一個(gè)值為0的字節(jié),找到后,將它的偏移地址存貯在dx中。
調(diào)試時(shí),修改一下內(nèi)存單元的數(shù)據(jù)
總結(jié)