ICS汇编学习笔记——操作数寻址方式
指令由操作碼和操作數(shù)組成
操作數(shù)尋址方式有三大種:
立即數(shù)尋址:MOV EAX,12345678H
寄存器尋址:MOV EAX,EBX
存儲(chǔ)器尋址:MOV EAX,DS:[20000H]
主要來看存儲(chǔ)器尋址:
SREG:D(Rb,Ri,S) 段寄存器可用默認(rèn),省略
段址:[基地址Rb+變址Ri*比例因子S+偏移D],這三部分可以任意組合。32位以上CPU才有比例因子(1/2/4/8)。
直接尋址:MOV AX,[1000H]
寄存器間接尋址:MOV AX,[BX]
寄存器相對(duì)尋址:MOV AX,[BX+1]
基址變址尋址:MOV AX,[BX+SI]
相對(duì)基址變址尋址:MOV AX,[BX+SI+100]
比例尋址:32/64位CPU,變址不用ESP/RSP
[變址*比例因子]:MOV EAX,[EDI*4]
[變址*比例因子+偏移]:MOV EAX,[EDI*4+100]
[基址+變址*比例因子]:MOV EAX,[EBX+EDI*4]
[基址+變址*比例因子+偏移]:MOV EAX.[EBX+EDI*4+8]
Linux格式匯編:
最一般形式:D(Rb,Ri,S)
含義:Mem[Reg[Rb]+S*Reg[Ri]+ D]
索引化的尋址方式
D——常量,表示位移量(displacement): 1, 2, or 4 字節(jié)
Rb——基址寄存器(Base register): 所有16位整數(shù)寄存器
Ri——變址寄存器(Index register): 不可用%rsp
S ——比例因子(Scale): 1, 2, 4, or 8 (why these numbers?)
特殊情況
(Rb,Ri) Mem[Reg[Rb]+Reg[Ri]]
D(Rb,Ri) Mem[Reg[Rb]+Reg[Ri]+D]
(Rb,Ri,S) Mem[Reg[Rb]+S*Reg[Ri]]
總結(jié)
以上是生活随笔為你收集整理的ICS汇编学习笔记——操作数寻址方式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ICS汇编学习笔记——8086的指令系统
- 下一篇: 如何在C语言中巧妙地避免使用if语句?