X86組合語言/基本指令集
维基教科书,自由的教学读本
< X86組合語言
首頁 > 電腦科學與技術書架 > X86組合語言 > 基本指令集
目录 |
[编辑] 資料搬移指令 (Data transfer instructions)
[编辑] 整數運算指令
[编辑] 加法
[编辑] 減法
[编辑] 乘法
[编辑] 除法
[编辑] 邏輯運算指令
[编辑] 位元位移指令
[编辑] 程式流程控制
[编辑] 跳越指令
[编辑] 無條件跳越
[编辑] 無號數運算(比較)後使用的條件跳越指令
| 指令 | 意義 | 條件 | |
| je | 若等於則跳越 | x = y | ZF=1 |
| jne | 若不等於則跳越 | x≠y | ZF=0 |
| ja jnbe |
若高於則跳越 若不低於則跳越 |
x > y | CF=0且ZF=0 |
| jae jnb |
若高於於或等於則跳越 若不低於或等於於則跳越 |
x≧y | CF=0 |
| jb jnae |
若低於則跳越 若不高於或等於則跳越 |
x < y | CF=1 |
| jbe jna |
若低於或等於則跳越 若不高於則跳越 |
x≦y | CF=1或ZF=1 |
[编辑] 有號數運算(比較)後使用的條件跳越指令
| 指令 | 意義 | 條件 | |
| je | 若等於則跳越 | x = y | ZF=1 |
| jne | 若不等於則跳越 | x≠y | ZF=0 |
| jg jnle |
若大於則跳越 若不低於或等於則跳越 |
x > y | CF=0且SF=OF |
| jge jnl |
若高於於或等於則跳越 若不低於則跳越 |
x≧y | CF=OF |
| jl jngl |
若低於則跳越 若不大於或等於則跳越 |
x < y | CF≠OF |
| jle jng |
若低於或等於則跳越 若不大於則跳越 |
x≦y | CF=1或SF≠OF |
[编辑] 依旗號狀態判斷的條件跳越指令
| 指令 | 意義 | 條件 |
| jc | 若進位則跳越 | CF=1 |
| jnc | 若無進位則跳越 | CF=0 |
| js | 若為負數則跳越 | SF=1 |
| jns | 若為正數則跳越 | SF=0 |
| jz | 若等於0則跳越 | ZF=1 |
| jnz | 若不等於0則跳越 | ZF=0 |
| jp | 若同位則跳越 | PF=1 |
| jnp | 若沒有同位則跳越 | PF=0 |
| jpe | 若偶同位則跳越 | PF=1 |
| jpo | 若奇同位則跳越 | PF=0 |
| jo | 若溢位則跳越 | OF=1 |
| jno | 若沒有溢位則跳越 | OF=0 |
[编辑] 迴圈控制指令
[编辑] 副程式指令
[编辑] 插斷指令(Interrupt Instruction)
[编辑] 旗標控制相關指令
[编辑] 中断标志位
[编辑] 进位标志位
[编辑] 字串處理相關指令
[编辑] 無運算指令
- 以下暫存
mov:這是組語裡面最常見的指令,將數值記入暫存器或是將A暫存器的內涵值移入B暫存器等等.
範例語法: mov 目的,來源 <==將來源值移入目的暫存器
mov DX,[zzz] <==將zzz變數內涵移入DX暫存器
mov EAX,14h <==移14h值移入EAX
int:呼叫中斷來處理之前暫存器內涵值所對應的工作.例如Linux是int 0x80.
add:加
sub:減
mul:乘
div:除