10.1 X86指令集簡介電子課件_第1頁
10.1 X86指令集簡介電子課件_第2頁
10.1 X86指令集簡介電子課件_第3頁
10.1 X86指令集簡介電子課件_第4頁
10.1 X86指令集簡介電子課件_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

X86指令集簡介X86指令系統(tǒng)PC機(臺式機,筆記本),CPU使用的都是X86指令系統(tǒng)X86指令集,1978年由美國Intel公司為其CPU(8086)專門開發(fā)的指令集命名:早期以80X86這樣的數字格式來命名處理器Intel8086、80386以及80486等奔騰系列、賽揚系列、酷睿系列CPUCISCX86指令集屬于CISC(ComplexInstructionSetComputer,復雜指令集計算機)指令集與RISC-V指令集相比,其操作碼、數據類型、尋址模式、指令格式等,都更加復雜數千條指令寄存器32位的通用寄存器僅有8個EAX(Accumulator,累加寄存器,用于算術運算)ECX(Counter,計數寄存器)EDX(Data,數據寄存器)EBX(Base,基址寄存器)ESP(StackPointer,棧指針寄存器)EBP(BasePointer,基址指針寄存器)ESI(SourceIndex,源索引寄存器)EDI(DestinationIndex,目標索引寄存器)“E”代表擴展(Extended)相對于16位的寄存器擴展為32位每個通用寄存器有其獨特的用途,從命名即可獲知特殊寄存器EIP(InstructionPointer,指令指針寄存器,即PC)EFLAGS(標志寄存器)指令格式前綴(Prefix):1個字節(jié)操作碼(Opcode):1,2或3個字節(jié)寄存器/內存尋址模式(ModR/M):1個字節(jié)縮放索引基址(SIB,ScaleIndexBase):1個字節(jié)偏移量(Displacement):1,2或4個字節(jié)立即數(Immediate):1,2或4個字節(jié)PrefixOpcodeModR/MSIBDisplacementImmediate前綴操作碼寄存器/內存尋址模式縮放索引基址偏移量立即數可變長指令格式只有操作碼是必需的,其他字段均為可選字段指令編碼從1個字節(jié),到十幾個字節(jié)不等常用指令數據傳送指令MOV,PUSH,POP,LEAVE地址傳送指令LEA算術/邏輯運算指令ADD,CMP流程控制指令JMP,JLE,CALL,RETMOV指令使用最頻繁的指令寄存器和寄存器之間數據傳送寄存器和內存之間數據傳送還允許將立即數傳送至寄存器或內存中匯編格式

mov Reg/Mem,Reg/Mem/Imm2操作數指令,目標操作數在前,源操作數在后,而且兩個操作數之一可以是內存中的數示例

mov eax,[esp+60] 源操作數是內存中的數尋址模式:“寄存器相對”棧指針寄存器ESP中的值+偏移量60,計算出內存地址將此內存地址中的數據加載到EAX寄存器中“[]”,表示操作數是內存中的數在中括號“[]”前加WORD/DWORD/BYTEPTR為了標識內存中的數的位數,16位/32位/8位PUSH指令將一個寄存器中的值壓棧例如:

push ebp ;將EBP寄存器中的值壓棧該指令可分解為:

sub esp,4 ;ESP

ESP-4mov [esp],ebp ;M[ESP]

EBPPOP指令將棧頂的數據彈出,加載到一個寄存器中例如:

pop eax ;將棧頂的值彈出,加載到EAX寄存器中該指令可分解為:

mov eax,[esp] ;EAX

M[ESP]add esp,4 ;ESP

ESP+4LEAVE指令從函數返回前的棧幀彈出作用相當于:

mov esp,ebp ;ESP

EBPpop ebp ;EBP

M[ESP],ESP

ESP+4LEA指令LoadEffectiveAddress,加載有效地址指令把一個內存地址加載到寄存器中匯編格式

LEA Reg,Mem例如:

lea eax,[esp+20] ;EAX

ESP+20注意,該指令與MOV指令的區(qū)別該指令中的中括號“[]”,代表內存地址,而不是該內存地址中的數據算術/邏輯運算指令2操作數指令第一個操作數既是目標操作數,又是源操作數第二個操作數是源操作數兩個操作數之一可以是內存中的數ADD指令匯編格式如下:

add Reg/Mem,Reg/Mem/Imm可以做寄存器與寄存器,寄存器與立即數的運算,還可以與內存中的數做運算CMP指令比較目標操作數和源操作數的值,根據比較結果,對標志寄存器EFLAGS的相應位進行設置例如:

cmp edx,eax ;比較EDX和EAX中的值的大小計算“EDX-EAX”的減法結果;在不溢出的情況下,設置EFLAGS的OF(溢出標志)位為0如果結果小于零,則設置SF(符號標志)位為1如果大于零,設置SF位為0如果等于零,設置ZF(零標志)位為1注意:算術/邏輯運算指令均根據運算結果,設置EFLAGS的相應位JMP指令無條件跳轉指令匯編格式:

jmpLabel將EIP的值設置為Label所標識的指令地址,即跳轉至Label所標識的指令去執(zhí)行條件分支指令帶條件的跳轉指令(JG,JGE,JL,JLE,JE,JNE等)根據EFLAGS中的標志位,設置EIP的值,完成相應的跳轉匯編格式如下:

jX LabelJLE指令

例如:

jle L3JLE指令表示小于等于跳轉如果EFLAGS中SF位與OF位的值不同,或者ZF位為1,就跳轉至標記L3所標識的指令去執(zhí)行CALL調用子例程匯編格式

c

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論