大全指令二進制代碼手冊_第1頁
大全指令二進制代碼手冊_第2頁
大全指令二進制代碼手冊_第3頁
大全指令二進制代碼手冊_第4頁
大全指令二進制代碼手冊_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、匯編指令與二進制代碼對應(yīng)手冊匯編指令與二進制代碼具有一一對應(yīng)關(guān)系,也就是說,一條匯編指令必將唯一對應(yīng)一條二進制代碼指令,而一條二進制代碼指令也唯一對應(yīng)一條匯編指令,這就為寫一個匯編語言與二進制指令相互對應(yīng)的參考表成為可能.手冊的使用范圍本手冊的讀者需要據(jù)有一定的計算機專業(yè)知識,了解CPU的工作原理及內(nèi)部的體系結(jié)構(gòu),熟悉IBM匯編、NASM或其它匯編語言,并且對匯編語言指令的二進制代碼有足夠的興趣.本手冊列出了絕大局部的中文匯編指令與二進制指令的對應(yīng)關(guān)系,及相應(yīng)的英文匯編指令名稱.由于作者水平有限,而且本手冊主要是對照NASM匯編語言指令集、?Intel微處理器結(jié)構(gòu)、編程與接口?中文第六版及其I

2、ntel公司公布的?IA-32IntelArchitectureSoftwareDevelopersManual?2001年版的PDF格式文檔指令集而生成的,或許有一些比擬新的指令或者其他CPU特有的指令,并未收集在本手冊中.匯編指令解析一、操作碼匯編指令按其功能可分為:一般指令、浮點指令、多媒體指令和SIMD流式擴展SSE指令.匯編指令因其繁多且對應(yīng)的二進制代碼有多種變化而變得異常復(fù)雜,二進制代碼的指令都是由操作碼與操作數(shù)構(gòu)成,就指令與操作數(shù)的關(guān)系而言,指令無非是無操作數(shù)、單操作數(shù)、雙操作數(shù)和三操作數(shù).所謂的操作碼就是唯一代表著指令的意義的一段二進制碼,操作碼可以是單字節(jié)或者是雙字節(jié).有一種

3、特殊的操作碼,它與操作數(shù)合起來共用一個字節(jié)或者兩個字節(jié),這種操作碼的操作數(shù)都是存放器,而且存放器的二進制代碼都為這操作碼字節(jié)的最后三位,在參照表中用“操作數(shù)指令字段表示,如果這個段中的數(shù)據(jù)為“是就表示這個操作碼是與存放器操作數(shù)共用一個字節(jié)或兩個字節(jié),否那么就不是.從對照表中,我們可以看出,實事上二進制操作碼與匯編指令名稱并非一一對應(yīng),一條匯編指令的名稱如:轉(zhuǎn)移指令,它可以對應(yīng)多個操作碼,只有當(dāng)指令名稱與指令操作數(shù)合在一起,才與操作碼和操作數(shù)有一一對應(yīng)的關(guān)系.也就是說同一個指令名稱,指令操作數(shù)類型不同,對應(yīng)的二進制操作碼也可能不同.操作碼在對照表是用“操作碼字段表示.在操作碼字節(jié)中通常又有方向位

4、、符號位、操作數(shù)大小修飾位值得注意,它們都用一個二進制位來表示,方向位與符號位通常都在操作碼的倒數(shù)第二位,而操作數(shù)修飾位通常在操作碼的最后一位.舉例說明:如果倒數(shù)第二位是方向位,那么如果這一位值為0,那么表示操作數(shù)是從左到右,如果是1表示操作數(shù)從右到左;如果倒數(shù)第二位是表示符號位,那么如果這一位值為0表示操作數(shù)是無符號操作數(shù),如果值為1表示操作數(shù)為有符號操作數(shù);如果最后一位是修飾操作數(shù)位,那么最后一位為0表示操作數(shù)是八位操作數(shù),就是字節(jié)操作數(shù),最后一位為1表示操作數(shù)大小由匯編模式?jīng)Q定,如果是16位匯編就表示是16位操作數(shù),即字操作數(shù),如果是32位匯編就表示是32位操作數(shù),即雙字操作數(shù).匯編模式

5、是16位還是32位,由匯編代碼決定,在NASM匚編中默認為32位模式,如果代碼顯示地給出BIT16就表示匯編成16位模式,如果代碼顯示地給出BIT32就表示匯編成32位模式.匯編模式不同,操作數(shù)也不相同,具體請看操作數(shù)節(jié)中介紹.二、操作數(shù)計算機指令之所以復(fù)雜的一個主要原因就是操作數(shù)有多種變化,最為簡單的指令就是無操作數(shù)指令.其中操作數(shù)可以是立即數(shù)、存放器和內(nèi)存地址.通常情況下,操作數(shù)含有立即數(shù)的指令與不含立即數(shù)的指令,指令操作碼不同;操作數(shù)都為存放器的,通用存放器、段存放器、限制存放器、調(diào)試存放器和任務(wù)存放器的指令操作碼不同;多媒體指令、浮點指令和SIMD指令都有各自的指令系統(tǒng).最為復(fù)雜的變化

6、是當(dāng)操作數(shù)為存放器或內(nèi)存的時候,之所以把它們放在一起,是因為它們都由一個叫做模數(shù)MOD的兩位二進制數(shù)來決定.計算機指令是如何分辨多變的操作數(shù)的呢?前面提到,如果操作數(shù)是立即數(shù),那么就用操作碼來區(qū)分.當(dāng)操作數(shù)是存放器或是內(nèi)存地址時,主要是用一個字節(jié)來區(qū)分,這個字節(jié)的前兩位就是模數(shù)MOD,后三位是存放器的二進制代碼,最后三位的值由開始兩位的模數(shù)來決定具體的類型,如果模數(shù)為11那么最后三位就用來表示存放器.內(nèi)存地址是用存放器的值來表示的,有的內(nèi)存地址帶有位移量,于是,當(dāng)模數(shù)為00時字節(jié)的最后三位就表示存放器內(nèi)的數(shù)據(jù)是內(nèi)存地址,并且沒有位移量,當(dāng)模數(shù)為01時,字節(jié)最后三位表示存放器內(nèi)的數(shù)據(jù)是內(nèi)存地址,

7、并且在這一字節(jié)之后有8位數(shù)的位移量,當(dāng)模數(shù)為10時字節(jié)后面有16位或32位,是16位還是32位由匯編模式來決定.16位模式常用于實模式,可使用16位存放器,如AX、BX等,32位常用于保護模式,可使用32位存放器,如EAXEBX等.然而,只用一個字節(jié)的最后三位來表示內(nèi)存地址,不可能用來表示眾多的存放器組合,于是模數(shù)為00時沒有位移量,就有在16位匯編模式,當(dāng)nnn=000nnn表示是用來表示內(nèi)存的三位二進制數(shù)時,內(nèi)存地址為DS:BX+SI,在32位匯編模式時nnn=000,內(nèi)存地址為DS:EAX,其它的值請參照后面的對應(yīng)表.于是,我們知道了,計算機指令是通過模數(shù)、存放器和寄/內(nèi)三個域來決定操作

8、數(shù)的,其實除此之外,還有一種特殊的情況,就是操作數(shù)并沒有都用到這三個域,而是把第二個域的值設(shè)為一個預(yù)設(shè)值,也就是說,第二個用來表示存放器的域設(shè)成了固定值,而不是可變的存放器,那么這就出現(xiàn)了只有一個存放器或是內(nèi)存地址操作數(shù)的變型,其實它是由前一種類型變化得來的.有三個操作數(shù)的指令又是如何的呢?實事上搞明白了上一種變化,三個操作數(shù)就很容易了,它只不過是在兩個存放器或內(nèi)存地址操作數(shù)之后再加一個立即數(shù),這種情況同樣有一種特例,那就是有兩個相同存放器操作數(shù),和一個立即數(shù),那么在寫匯編代碼的時候就把這種情況認為是一個存放器和一個立即數(shù),而實際譯成二進制代碼時要譯成兩個相同的存放器和一個立即數(shù),它同樣是屬于

9、三個操作數(shù)的情況,IMUL指令就屬于這一種特例.在具體的指令中還有一些例外,比方,一個看上去只有一個操作碼,不含操作數(shù)的指令,而實際上它有隱含的存放器作為它的操作數(shù)如計數(shù)存放器,或者它的存放器操作數(shù)被指令指定了,而不是可變的,如只使用累加存放器,這也是比擬常見的,這些在對照表中有詳細的注明.三、指令前綴有些指令通過添加前綴來改變默認段或超越指令模式.所謂超越指令模式是指在16位匯編模式時使用了32位的存放器或者由32位存放器組成的內(nèi)存地址,或者在32位匯編模式時使用了16位存放器或者由16位存放器組成的內(nèi)存地址.當(dāng)使用超越前綴時,應(yīng)把前綴字節(jié)放在指令的面前,有多個前綴時前綴字節(jié)沒有順序地排列.

10、超越前綴表前綴字節(jié)作用26HES段超越前綴2EHCS段超越前綴36HSS段超越前綴3EHDS段超越前綴64HFS:段超越前綴65HGS段超越前綴2EH分支未獲取前綴原英文是:Branchnottaken,分支暗示前綴-僅用于條件跳轉(zhuǎn)Jcc指令3EH分支被獲取前綴原英文是:Branchtaken,分支暗示前綴-僅用于條件跳轉(zhuǎn)Jcc指令66H對操作數(shù)長度的指令模式超越67H對內(nèi)存地址長度的指令模式超越F0H鎖LOCK指令前綴F2H不相等重復(fù)/不為零重復(fù)前綴REPNE/REPNZ1令前綴只適用于字符串操作指令F3H重復(fù)REP指令前綴只適用于字符串操作指令F3H相等重復(fù)/為零重復(fù)前綴REP/REP指令

11、前綴只適用于字符串操作指令四、總結(jié)通過以上的分析,我們可以總結(jié)出計算機指令的結(jié)構(gòu),由于286以前含286的處理器只能識別16位地址指令,且不能識別超越前綴字節(jié),因此,這種16位地址指令的格式又與32位地址,即386以后含386的處理器的指令格式有所不同,如下表:16位計算機指令格式適用于286以前的處理器操作碼操作數(shù)0x帶模數(shù)的存放器和寄/內(nèi)操作數(shù)內(nèi)存位移量立即數(shù)1-2字節(jié)0-1字節(jié)0-2字節(jié)0-2字節(jié)32位計算機指令格式適用于386以后的處理器指令超越前綴操作碼操作數(shù)0x66/0x670x帶模數(shù)的存放器和寄/內(nèi)操作數(shù)比例變址*內(nèi)存位移量立即數(shù)由前綴個數(shù)而定1-2字節(jié)0-1字節(jié)0-1字節(jié)0-4

12、字節(jié)0-4字節(jié)*值得注意的是,操作數(shù)域中的比例變址只適用于32位尋址方式,且此時jjj/nnn=100比例變址字節(jié)的前兩位表示比例因子,后三位表示變址存放器,最后三位表示基地存放器,最終得到的地址值是:比例因子*變址+基址,當(dāng)比例因子為00時乘以1,當(dāng)比例因子為01是乘以2,當(dāng)比例因子為10時乘以4,當(dāng)比例因子為11時乘以8.其中“帶模數(shù)的存放器和寄/內(nèi)操作數(shù)這一操作數(shù)域僅占一個字節(jié),如下表示:當(dāng)mm=11時jjj/nnn當(dāng)mm=00寸jjj/nnn當(dāng)mm=01時jjj/nnn當(dāng)mm=10寸jjj/nnn的值就表示為存放器,即:的值就表示為內(nèi)存地址,即的值就表示為內(nèi)存地址,即的值就表示為內(nèi)存地

13、址,即mmjjjjjj/nnnmm是兩位模數(shù)jjj是三位表示的存放器nnn是三位用存放器的值來表示的內(nèi)地地址11血j00jjjnnn且此時“內(nèi)存位移量域不取值,沒有位移量01jjjnnn且此時內(nèi)存位移量域取8位的位移量10jjjnnn且此時“內(nèi)存位移量域取16位或32位的位移量,如果是16位匯編模式那么取16位的位移量,如果是32位匯編模式那么取是否有最后面的立即數(shù)操作數(shù)那么由操作碼來決定.如果匯編代碼指定為16位匯編模式,但指令的操作數(shù)中使用了如果是使用了32位存放器的值來表示內(nèi)存地址,那么需要在指令前加式時,在指令的操作數(shù)中使用了16位的存放器,也需要在指令前加32位的位移量.32位的存放

14、器,那么就需要在指令前加0x66的超越前綴,0x67的超越前綴,同理,匯編代碼指定為32位匯編模0x66的超越前綴,如果是使用了16位存放器的值來表示內(nèi)存地址,那么需要在指令前加0x67的超越前綴.其每條指令的這兩種超越前綴已經(jīng)在指令對照表中完整給出存放器中文-英文命名對照表姓類中文名稱英文名稱二進制碼存放器說明多功能存放器累加低八AL000累加存放器低八位累加高八AH100累加存放器低八位累加16AX00016位累加存放器累加32EAX00032位累加存放器基址低八BL011基址存放器低八位基址高八BH111基址存放器低八位基址16BX01116位基址存放器基址32EBX01132位基址存放

15、器計數(shù)低八CL001計數(shù)存放器低八位計數(shù)同八CH101計數(shù)奇仔器低八僅計數(shù)16CX00116位計數(shù)奇仔器計數(shù)32ECX00132位計數(shù)奇仔器數(shù)據(jù)低八DL010數(shù)據(jù)奇仔器低八位數(shù)據(jù)局八DH110數(shù)據(jù)奇仔器低八位數(shù)據(jù)16DX01016也數(shù)據(jù)奇存器數(shù)據(jù)32EDX01032位數(shù)據(jù)奇仔器類型中文名稱英文名稱二進制倡奇仔希說明指針存放器堆棧指針16SP10016位堆棧指針奇仔器堆棧指針32ESP10032位堆棧指針存放器基址指針16BP10116位基址指針存放器基址指針32EBP10132位基址指針存放器變址存放器目標(biāo)變址16DI11116位目標(biāo)變址存放器目標(biāo)變址32EDI11132位目標(biāo)變址存放器源變址

16、16SI11016位源變址存放器源變址32ESI11032位源變址存放器專用存放器指令指針16IP*16位指令指針存放器指令指針32EIP*32位指令指針存放器標(biāo)志16FLAGS*16位標(biāo)志存放器標(biāo),32EFLAGS*32位標(biāo)忐存放器段存放器代伸段CS001代伸段存放器數(shù)據(jù)段DS011數(shù)據(jù)段存放器附加段ES000附加段奇存器堆棧段SS010堆棧段存放器標(biāo)志段FS100標(biāo)志段存放器全局段GS101全局段存放器限制存放器限制零CR0000限制存放器零限制一CR1*001限制存放器一限制二CR2010限制存放器二限制三CR3011限制存放器三限制四CR4100限制存放器四限制五CR5*101限制存放

17、器五限制六CR6*110限制存放器六限制七CR7*111限制存放器七調(diào)試存放器調(diào)試零DR0000調(diào)試存放器零調(diào)試一DR1001調(diào)試存放器一調(diào)試二DR2010調(diào)試存放器二調(diào)試三DR3011調(diào)試存放器三調(diào)試四DR4*100調(diào)試存放器四調(diào)試五DR5*101調(diào)試存放器五調(diào)試六DR6110調(diào)試存放器六調(diào)試七DR7111調(diào)試存放器七任務(wù)存放器任務(wù)零TR0000任務(wù)存放器零任務(wù)一TR1001任務(wù)存放器一任務(wù)二TR2010任務(wù)存放器二任務(wù)三TR3011任務(wù)存放器三任務(wù)四TR4100任務(wù)存放器四任務(wù)五TR5101任務(wù)存放器五任務(wù)六TR6110任務(wù)存放器六任務(wù)七TR7111任務(wù)存放器七浮點存放器浮點零ST0000

18、浮點存放器零浮點一ST1001浮點存放器一浮點二ST2010浮點存放器二浮點三ST3011浮點存放器三浮點四ST4100浮點存放器四浮點五ST5101浮點存放器五浮點六ST6110浮點存放器六浮點七ST7111浮點存放器七多媒體存放器媒體零MM0000媒體存放器零媒體一MM1001媒體存放器一媒體二MM2010媒體存放器二媒體三MM3011媒體存放器三媒體四MM4100媒體存放器四媒體五MM5101媒體存放器五媒體六MM6110媒體存放器六媒體七MM7111媒體存放器七單指令流、多q據(jù)流存放器單流零XMM0000單指令流、多數(shù)據(jù)流存放器零單流一XMM1001單指令流、多數(shù)據(jù)流存放器一單流二XM

19、M2010單指令流、多數(shù)據(jù)流存放器二單流三XMM3011單指令流、多數(shù)據(jù)流存放器三單流四XMM4100單指令流、多數(shù)據(jù)流存放器四單流五XMM5101單指令流、多數(shù)據(jù)流奇存器五單流六XMM6110單指令流、多數(shù)據(jù)流奇存器六單流七XMM7111單指令流、多數(shù)據(jù)流存放器七注:英文名稱有星號“*的表示作為保存域,實際并沒有使用,二進制碼有星號“*表示無需二進制數(shù)表示尋址方式16位尋址方式時模數(shù)mm與內(nèi)存尋址nnn可能的組合mmnnr#址方式中文表示尋址方式英文表示00000數(shù)據(jù)段:基址16+源變址16DS:BX+SI00001數(shù)據(jù)段:基址16+目標(biāo)變址16DS:BX+DI00010堆棧段:基址指針16

20、+源變址16SS:BP+SI00011堆棧段:基址指針16+目標(biāo)變址16SS:BP+DI00100數(shù)據(jù)段:源變址16DS:SI00101數(shù)據(jù)段:目標(biāo)變址16DS:DI00110堆棧段:基址指針16SS:BP00111數(shù)據(jù)段:基址16DS:BX01000數(shù)據(jù)段:基址16+源變址16+8位符號位移DS:BX+SI+sign_disp801001數(shù)據(jù)段:基址16+目標(biāo)變址16+8位符號位移DS:BX+DI+sign_disp801010堆棧段:基址指針16+源變址16+8位符號位移SS:BP+SI+sign_disp801011堆棧段:基址指針16+目標(biāo)變址16+8位符號位移SS:BP+DI+sig

21、n_disp801100數(shù)據(jù)段:源變址16+8位符號位移DS:SI+sign_disp801101數(shù)據(jù)段:目標(biāo)變址16+8位符號位移DS:DI+sign_disp801110堆棧段:基址指針16+8位符號位移SS:BP+sign_disp801111數(shù)據(jù)段:基址16+8位符號位移DS:BX+sign_disp810000數(shù)據(jù)段:基址16+源變址16+16位符號位移DS:BX+SI+disp1610001數(shù)據(jù)段:基址16+目標(biāo)變址16+16位符號位移DS:BX+DI+disp1610010堆棧段:基址指針16+源變址16+16位符號位移SS:BP+SI+disp1610011堆棧段:基址指針16

22、+目標(biāo)變址16+16位符號位移SS:BP+DI+disp1610100數(shù)據(jù)段:源變址16+16位符號位移DS:SI+disp1610101數(shù)據(jù)段:目標(biāo)變址16+16位符號位移DS:DI+disp1610110堆棧段:基址指針16+16位符號位移SS:BP+disp1610111數(shù)據(jù)段:基址16+16位符號位移DS:BX+disp16注意:當(dāng)處理器執(zhí)行時,將所有8位符號位移量符號擴展成16位的位移量,如果8位的位移量是00H-7FH正的,那么在位移地址之前擴展成0000H-007FH,如果8位的位移量是80H-FFH負的,那么在位移地址之前擴展成FF80H-FFFFH因此,這個工作也可由匯編器來

23、完成,在編譯時將模數(shù)設(shè)為10,地址擴展成16的位移量,所以有些匯編程序不使用8位的位移量.32位尋址方式時模數(shù)mm與內(nèi)存尋址nnn及比例因子字節(jié)基址域jjj可能的組合mmnnnjjj尋址方式中文表示尋址方式英文表示00000-數(shù)據(jù)段00001-數(shù)據(jù)段00010-數(shù)據(jù)段00011-數(shù)據(jù)段00101-數(shù)據(jù)段00110-數(shù)據(jù)段00111-數(shù)據(jù)段01000-數(shù)據(jù)段01001-數(shù)據(jù)段01010-數(shù)據(jù)段01011-數(shù)據(jù)段累加32DS:EAX計數(shù)32DS:ECX數(shù)據(jù)32DS:EDX基址32DS:EBX00100000數(shù)據(jù)段00100001數(shù)據(jù)段00100010數(shù)據(jù)段00100011數(shù)據(jù)段00100100數(shù)據(jù)

24、段00100101數(shù)據(jù)段00100110數(shù)據(jù)段00100111數(shù)據(jù)段累加32+比例變址DS:EAX+比例變址計數(shù)32+比例變址DS:ECX+比例變址數(shù)據(jù)32+比例變址DS:EDX+比例變址基址32+比例變址DS:EBX+比例變址堆棧指針32+比例變址DS:ESP+比例變址32位位移量+比例變址DS:32位位移量+比例變址源變址32+比例變址DS:源變址32+比例變址目標(biāo)變址32+比例變址DS:目標(biāo)變址32+比例變址32位位移量DS:32位位移量源變址32DS:ESI目標(biāo)變址32DS:EDI累加32+8位位移量DS:EAX+8位位移量計數(shù)32+8位位移量DS:ECX+8位位移量數(shù)據(jù)32+8位位移

25、量DS:EDX+8位位移量基址32+8位位移量DS:EBX+8位位移量01100000數(shù)據(jù)段:累加32+比例變址+8位位移量DS:EAX+比例變址+8位位移量01100001數(shù)據(jù)段:計數(shù)32+比例變址+8位位移量DS:ECX+比例變址+8位位移量01100010數(shù)據(jù)段:數(shù)據(jù)32+比例變址+8位位移量DS:EDX+比例變址+8位位移量01100011數(shù)據(jù)段:基址32+比例變址+8位位移量DS:EBX+比例變址+8位位移量01100100堆棧段:堆棧指針32+比例變址+8位位移量SS:ESP+比例變址+8位位移量01100101堆棧段:基址指針32+比例變址+8位位移量SS:EBP+比例變址+8位

26、位移量01100110數(shù)據(jù)段:源變址32+比例變址+8位位移量DS:ESI+比例變址+8位位移量01100111數(shù)據(jù)段:目標(biāo)變址32+比例變址+8位位移量DS:EDI+比例變址+8位位移量01101-堆棧段:基址指針32+8位位移量SS:EBP+8位位移量01110-數(shù)據(jù)段:源變址32+8位位移量DS:ESI+8位位移量01111-數(shù)據(jù)段:目標(biāo)變址32+8位位移量DS:EDI+8位位移量10000-數(shù)據(jù)段:累加32+32位位移量DS:EAX+32位位移量10001-數(shù)據(jù)段:計數(shù)32+32位位移量DS:ECX+32位位移量10010-數(shù)據(jù)段:數(shù)據(jù)32+32位位移量DS:EDX+32位位移量100

27、11-數(shù)據(jù)段:基址32+32位位移量DS:EBX+32位位移量32+比例變址+32位位移量DS:EAX+比例變址+32位位移量32+比例變址+32位位移量DS:ECX+比例變址+32位位移量32+比例變址+32位位移量DS:EDX+比例變址+32位位移量32+比例變址+32位位移量DS:EBX+比例變址+32位位移量32+比例變址+32位位移量SS:ESP+比例變址+32位位移量32+比例變址+32位位移量SS:EBP+比例變址+32位位移量32+比例變址+32位位移量DS:ESI+比例變址+32位位移量32+比例變址+32位位移量DS:EDI+比例變址+32位位移量10101-堆棧段:基址指

28、針32+32位位移量SS:EBP+32位位移量10110-數(shù)據(jù)段:源變址32+32位位移量DS:ESI+32位位移量10111-數(shù)據(jù)段:目標(biāo)變址32+32位位移量DS:EDI+32位位移量指令代碼對照表說明一、字段說明指令內(nèi)碼是中文匯編語言程序使用的指令內(nèi)部代碼,它是一個以數(shù)字編號為主體的字符串.中文名稱是中文匯編程序使用的指令名稱.英文名稱是對應(yīng)指令的英文名稱.操作數(shù)類型是指令操作數(shù)的種類,它包括:無操作數(shù);單操作數(shù)中的單存放器、單內(nèi)存和單立即數(shù);雙操作數(shù)中的存放器到存放器、內(nèi)存到存放器、立即數(shù)到存放器、存放器到內(nèi)存,立即數(shù)到內(nèi)存;三操作數(shù)中的存放器到存放器到存放器、立即數(shù)到存放器到存放器、

29、立即數(shù)到內(nèi)存到存放器、立即數(shù)到存放器到內(nèi)存.還有幾種特例種類,是存放器被指定為累加器或是計數(shù)器存放器.操作碼是唯一代表本指令意義的二進制代碼,表中用十六進制數(shù)表示.模數(shù)是“帶模數(shù)的存放器和寄/內(nèi)操作數(shù)字節(jié)的最前兩位數(shù),用來指定“寄/內(nèi)位是存放器還是內(nèi)存地址及內(nèi)存位移量.操作數(shù)是指令的操作數(shù)具體表現(xiàn)形式,比方操作數(shù)類型是存放器到存放器,那么就可能是8位存放器到8位存放器或者16位存放器到16存放器等,具體請參照對應(yīng)表.操作數(shù)大小是操作數(shù)的長度,通常是字節(jié)(Byte)、字(Word)或雙字(Dword),也有一些特有的指令的操作數(shù)大小為四字或更長的操作數(shù).符號是指指令的操作數(shù)是否有正負符號之分,如

30、果有那么指令操作碼的倒數(shù)第二位表示符號位.方向是指指令的源操作數(shù)與目標(biāo)操作數(shù)是從左到右還是從右到左的關(guān)系,0表示從左到右,1表示從右到左.芯片型號是指令適用的芯片類型,有8086、386、Pentium、AMDM.操作數(shù)指令表示此指令的操作碼中是否含有操作數(shù),此類操作數(shù)通常為存放器,且在占操作碼的最后三位.操作數(shù)預(yù)設(shè)值是表示有些指令的“帶模數(shù)的存放器和寄/內(nèi)操作數(shù)的字節(jié)中,第一個存放器(從左到右兩位模數(shù)之后的三位)被預(yù)設(shè)為的定值.16位和32位字段是指令在匯編16位匯編模式下和在32匯編模式下對應(yīng)的前綴,用十六進制數(shù)表示.二、簡稱呼明為了使表不至于過份冗長,使用下例簡稱來表示內(nèi)容:寄-存放器、

31、內(nèi)-內(nèi)存、寄:XXX-指定的存放器、數(shù)-立即數(shù)、數(shù):X-定值立即數(shù)、11-8位存放器、12-16位存放器、13-32位存放器、41-8位立即數(shù)、數(shù)16-16位立即數(shù)、數(shù)32-32位立即數(shù)、31-8位位移量、32-16位位移量、33-32位位移量.三、其它說明表中表示內(nèi)存的方式就是使用了NASM匚編風(fēng)格,所有的內(nèi)存地址都用中括號“口括起來,所有沒有用中括號括起來的值除在中括號之前用來修飾操作數(shù)大小的數(shù)都表示立即數(shù)或者存放器.由于對內(nèi)存地址操作時,并不知道操作數(shù)的大小,根據(jù)源操作數(shù)與目地操作數(shù)大小匹配的原那么除某些特例指令外,如果未能識別操作數(shù)大小的對內(nèi)存操作都有必要在內(nèi)存前面加操作數(shù)大小修飾,因

32、此,在中括號前面有8、16或32數(shù)值是有來修飾操作數(shù)大小的,在匯編語言中常用byte、word或dword來修飾操作數(shù)的大小.在操作數(shù)字段中還有“=和“這個符號的左邊為源操作數(shù),右邊為目的操作數(shù),“符號操作數(shù)相反.這樣看起來比擬直觀,并且反映指令操作數(shù)的真實形式.對于有方向性的指令可解釋為“從源操作數(shù)到目的操作數(shù),而對于沒有方向性的指令可解釋為“源操作數(shù)作用于目的操作數(shù).這一點有別于所有當(dāng)前的匯編程序,當(dāng)前的匯編程序都是以逗號“,隔開操作數(shù),并默認從左到右或從右到左為源操作數(shù)到目的操作數(shù)的順序.指令代碼對照表中文名稱英文名稱操作數(shù)操作碼模數(shù)寄存器1寄內(nèi)希位移量立即數(shù)符號方向芯片型號16位32位

33、倜整加AAA一0x378086一一調(diào)整陳AAD一0xD50A8086一一調(diào)整陳AAD數(shù)80xD5一1I-一10一一Pentium一一調(diào)整來AAM一0xD40A8086一一調(diào)整來AAM數(shù)80xD4一一一一10一一Pentium一一調(diào)整減AAS一0x3F8086一一進位加ADC奇:累加08哪80x14一一一一10一38086一一進位加ADC奇:累加16=數(shù)160x15一一一一10一38086一0x66進位加ADC哥:累加32奇80x101113一一一38086一一進他加ADC奇16=奇160x111113一一一38086一0x66進位加ADC寄32=寄320x111113一一一338610x66一

34、進位加ADC奇8=奇80x121113一一一38086一一進位加ADC寄16=寄160x131113一一一38086一0x66進位加ADC寄32=寄320x131113一一一33860x66一進位加ADC寄8=寄160x12001r5一一一38086一0x67進位加ADC寄8=寄320x120015一一一33860x67一進位加ADC寄16=寄160x130015一一一38086一0x6667進位加ADC寄16=寄320x130015一一一33860x670x66進位加ADC寄32=寄160x130015一一一33860x660x67進位加ADC寄32=寄320x130015一一一33860x

35、6667一進位加ADC寄8=寄16+位移80x1201159一一38086一0x67進位加ADC寄8=寄32+位移80x1201159一一33860x67一進位加ADC寄16=局16+位移80x1301159一一38086一0x6667進位加ADC寄16=局32+位移80x1301159一一33860x670x66進位加ADC寄32=局16+位移80x1301159一一33860x660x67進位加ADC寄32=局32+位移80x1301159一一33860x6667一進位加ADC寄8=寄16+位移160x1210159一一38086一0x67進位加ADC寄8=寄32+位移320x121015

36、9一一33860x67一進位加ADC寄16=局16+位移160x1310159一一38086一0x6667進位加ADC寄16=局32+位移320x1310159一一33860x670x66進位加ADC寄32=局16+位移160x1310159一一33860x660x67進位加ADC寄32=局32+位移320x13101r59一一33860x6667一進位加ADC寄16=數(shù)80x83110103一10有38086一0x66進位加ADC寄32=數(shù)80x83110103一10有33860x66一進位加ADC寄8=數(shù)80x80110103一10一38086一一進位加ADC寄16=數(shù)160x811101

37、03一10一38086一0x66進位加ADC寄32寄160x100015一一一38086一0x67進位加ADC寄8=寄320x100015一一一33860x67一進位加ADC寄16=寄160x110015一一一38086一0x6667進位加ADC寄16=寄320x110015一一一33860x670x66進位加ADC寄32=寄160x110015一一一33860x660x67進位加ADC寄32=寄320x110015一一一33860x6667一進位加ADC寄8=寄16+位移80x1001159一一38086一0x67進位加ADC寄8=寄32+位移80x1001159一一33860x67一進位加

38、ADC寄16=倩16+位移80x1101159一一38086一0x6667進位加ADC寄16=局32+位移80x1101159一一33860x670x66進位加ADC寄32=局16+位移80x1101159一一33860x660x67進位加ADC寄32=局32+位移80x11011r59一一33860x6667一進位加ADC寄8=寄16+位移160x10101r59一一38086一0x67進位加ADC寄8=寄32+位移320x1010159一一33860x67一進僅加ADC奇16=奇16+僅移160x1110159一一38086一0x6667進位加ADC奇16=奇32+僅移320x111019

39、一一33860x670x66進他加ADC奇32=商16+僅移160X111015d933860x660x67進他加ADC奇32=固32+僅移320x111019一一33860x6667一進位加ADC8奇16=數(shù)80x83000105一10侶38086一0x67功:他加AD8寄32=數(shù)80X83000105一10后33860乂6/一進位加ADC8奇16=數(shù)80x80000105一10一38086一0x67進位加ADC8寄32=數(shù)80x80000105一10一33860x67一進位加ADC16奇16=數(shù)160x8100010151一10一38086一0x6766進位加ADC1可寄32=數(shù)160x8

40、1000105一10一33860x670x66進位加ADC32奇16=數(shù)320x81000105一10一33860x660x67進位加ADC32奇32=數(shù)320x81000105一10一33860x6766一進位加ADC8寄16+位移8=數(shù)80x83010105910相38086一0x67進位加ADC8奇32+位移8=數(shù)80x83010105910有33860x67一進位加ADC8奇16+位移8=數(shù)80x8001010591038086一0x67進位加ADC8寄32+位移8=數(shù)80x80010105910一33860x67一進位加ADC16奇16+位移8=數(shù)160x8101010pH910一3

41、8086一0x6766進位加ADC16寄32+位移8=數(shù)160x8101010pH910一33860x670x66進位加ADC32寄16+位移8=數(shù)320x81010105910一33860x660x67進位加ADC32苛32+立移8=數(shù)320x81010105910一33860x6766一進位加ADC8奇16+位移16=數(shù)80x83100105910有38086一0x67進位加ADC8胃32+位移32=數(shù)80x83100105910有33860x67一進位加ADC8奇16+位移16=數(shù)80x80100105910一38086一0x67進位加ADC8寄32+位移32=數(shù)80x801001059

42、10一33860x67一進位加ADC16寄16+位移16=數(shù)160x8110010r5910一38086一0x6766進位加ADC16奇32+位移32=數(shù)160x8110010r5910一33860x670x66進位加ADC32寄16+位移16=數(shù)320x81100105910一33860x660x67進位加ADC32寄32+位移32=數(shù)320x81100105910一33860x6766一加ADD寄:累加08哪80x04一一否一10一38086一一加ADD寄:累加16=數(shù)160x05一一否一10一38086一0x66加ADD寄:累加32寄80x0011113一一一38086一一加ADD寄16=寄160x011113一一一38086一0x66加ADD寄32=寄320x011113一一一33860x66一加ADD寄8=寄80x021113一一一38086一一加ADD寄16=寄160x031113一一一38086一0x66加ADD寄32=寄320x031113一一一33860x66一加ADD寄8=寄160x020015一一一38086一0x

溫馨提示

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

最新文檔

評論

0/150

提交評論