jcxz指令
jcxz指令為有條件轉移指令,所有的有條件轉移指令都是短轉移(jmp為無條件轉移指令),在對應的機器碼中包含轉移的位移,而不是目的地址。對ip的修改範圍都為-128~127
j=jmp
cx=cx暫存器
z=zero=0
======>含義:在cx暫存器中的值為0時跳轉
與loop指令相反(在cx中值不為零時跳轉)
當cx≠0時什麼都不做
注意:所有的有條件有條件轉移都是短轉移,且經過編譯之後,機器碼包含了位移範圍
如:EBXX(XX表示位移範圍)
XX是由編譯器編譯的時候執行的
公式:標號處的偏移地址-jmp指令之後的第一個位元組的地址
指令格式:jcxz 標號(如果cx=0,轉移到標號處執行)
操作:當cx=0時,IP=IP+8位位移
八位位移=標號處的地址-jcxz指令後的第一個位元組的地址
八位位移的範圍為-128~127,用補碼錶示;
八位位移由編譯程式在編譯時算出。
當cx≠0時,什麼都不做(程式向下執行)
問題:
補全程式設計,利用jcxz指令,實現在記憶體2000H段中查詢第一個值為0的位元組,找到後,將它的偏移地址存貯在dx中。
assume cs:code
code segment
start: mov ax,2000h
mov ds,ax
mov bx,0
s: mov cl, [bx]
mov ch,0
jcxz ok
inc bx
jmp short s
ok: mov dx,bx
mov ax,4c00h
int 21h
code ends
end start
除錯時,修改一下記憶體單元的資料
相關文章
- 指令
- 【Linux】find指令和grep指令!!!Linux
- 庫物件指令碼抽取指令碼物件指令碼
- 巧用shell指令碼生成快捷指令碼指令碼
- DOCKERFILE的CMD指令和ENTRYPOINT指令Docker
- 生成insert指令碼的指令碼指令碼
- SCSS @if() 指令CSS
- SCSS @for 指令CSS
- MOV指令
- invokespecial指令
- doc指令
- 常用指令
- [指令碼例項]——統計系統資訊指令碼指令碼
- 前端js指令碼與防止js指令碼前端JS指令碼
- iOS逆向 Shell指令碼+指令碼重簽名iOS指令碼
- 常用指令碼學習手冊——Bat指令碼指令碼BAT
- Shell指令碼匯入外部指令碼內容指令碼
- 指令碼新選擇——用C做指令碼指令碼
- 史丹佛新作:無指令調優的指令遵循
- ORG 偽指令
- perl指令碼指令碼
- npm常用指令NPM
- nginx location指令Nginx
- Dockerfile常用指令Docker
- git 指令速查Git
- calico 指令速查
- Git 常用指令Git
- SCSS @while指令CSSWhile
- Git指令大全Git
- ubuntu常用指令Ubuntu
- Bash指令碼指令碼
- Nmap指令整理
- git常用指令Git
- Sybase 常用指令
- java 指令碼Java指令碼
- JMeter指令碼JMeter指令碼
- vue基本指令Vue
- 常用 Git 指令Git