cmp 命令如下所示:
cmp operand1, operand2
cmp指令比較第二個操作和第乙個操作。cmp 執行operand2-operand1的減法操作。
在這個點上,gnu 彙編和intel彙編的operator的操作是相反的。intel彙編是執行operand1-operand2的減法操作。
看下面這個例子:
.code32
.section .text
.globl _start
_start:
nopmovl $15,%eax
movl $10,%ebx
cmp %eax,%ebx
jge greater
movl $1,%eax
int $0x80
greater:
movl $20,%ebx
movl $1,%eax
int $0x80
上述程式首先將立即數15賦值給eax暫存器,然後將立即數10賦值給ebx暫存器。
然後使用cmp指令對兩個暫存器進行比較。使用jge指令實現條件跳轉。
cmp %eax,%ebx
jge greater
因為ebx暫存器的值小於eax暫存器的值,jge是如果大於等於就跳轉,因此跳轉的條件並不成立,因此往下執行,將立即數1賦值給eax暫存器,然後執行linux退出的系統呼叫。
執行程式並列印程式返回碼如下:
$ ./cmptest
$ echo $?
10
彙編 JCXZ條件轉移指令
jcxz j jmp cx cx暫存器 z zero 當cx暫存器中的值為0時,進行跳轉 jcxz指令與loop指令正好相反.loop指令 當cx暫存器的值不等於0時,才進行跳轉.所有的條件轉移指令都是短轉移,位移範圍是 128 127 經過編譯後,機器碼中包含了位移的範圍。ebxx,xx就是轉移的...
170420 彙編 其他條件轉移指令
1625 5 王子昂 總結 2017年4月20日 連續第201天總結 a.彙編第十一章90 b.檢測比較結果的條件轉移指令 轉移指的是它能夠修改ip 條件指的是它可以根據某種條件決定是否修改ip 比如jcxz就是乙個條件轉移指令,檢測cx中的值是否為0,決定是否轉移至標號處 除此以外,大多數條件轉移...
8086條件轉移指令JNE,JNZ
jnz jne 指令格式 轉移條件 說明 jnz jne 標號 zf 0 不等於0或不相等轉移 code segment assume cs code mov ax,5 mov bx,2 cmp ax,bx 兩數比較 不相等則轉移 jne ok iout mov ax,4c00h int 21h o...