版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、匯編指令與二進(jìn)制代碼對(duì)應(yīng)手冊(cè)匯編指令與二進(jìn)制代碼具有一一對(duì)應(yīng)關(guān)系,也就是說(shuō),一條匯編指令必將唯一對(duì)應(yīng)一條二進(jìn)制代碼指令,而一條二進(jìn)制代碼指令也唯一對(duì)應(yīng)一條匯編指令,這就為寫(xiě)一個(gè)匯編語(yǔ)言與二進(jìn)制指令相互對(duì)應(yīng)的參考表成為可能.手冊(cè)的使用范圍本手冊(cè)的讀者需要據(jù)有一定的計(jì)算機(jī)專業(yè)知識(shí),了解CPU的工作原理及內(nèi)部的體系結(jié)構(gòu),熟悉IBM匯編、NASM或其它匯編語(yǔ)言,并且對(duì)匯編語(yǔ)言指令的二進(jìn)制代碼有足夠的興趣.本手冊(cè)列出了絕大局部的中文匯編指令與二進(jìn)制指令的對(duì)應(yīng)關(guān)系,及相應(yīng)的英文匯編指令名稱.由于作者水平有限,而且本手冊(cè)主要是對(duì)照NASM匯編語(yǔ)言指令集、?Intel微處理器結(jié)構(gòu)、編程與接口?中文第六版及其I
2、ntel公司公布的?IA-32IntelArchitectureSoftwareDevelopersManual?2001年版的PDF格式文檔指令集而生成的,或許有一些比擬新的指令或者其他CPU特有的指令,并未收集在本手冊(cè)中.匯編指令解析一、操作碼匯編指令按其功能可分為:一般指令、浮點(diǎn)指令、多媒體指令和SIMD流式擴(kuò)展SSE指令.匯編指令因其繁多且對(duì)應(yīng)的二進(jìn)制代碼有多種變化而變得異常復(fù)雜,二進(jìn)制代碼的指令都是由操作碼與操作數(shù)構(gòu)成,就指令與操作數(shù)的關(guān)系而言,指令無(wú)非是無(wú)操作數(shù)、單操作數(shù)、雙操作數(shù)和三操作數(shù).所謂的操作碼就是唯一代表著指令的意義的一段二進(jìn)制碼,操作碼可以是單字節(jié)或者是雙字節(jié).有一種
3、特殊的操作碼,它與操作數(shù)合起來(lái)共用一個(gè)字節(jié)或者兩個(gè)字節(jié),這種操作碼的操作數(shù)都是存放器,而且存放器的二進(jìn)制代碼都為這操作碼字節(jié)的最后三位,在參照表中用“操作數(shù)指令字段表示,如果這個(gè)段中的數(shù)據(jù)為“是就表示這個(gè)操作碼是與存放器操作數(shù)共用一個(gè)字節(jié)或兩個(gè)字節(jié),否那么就不是.從對(duì)照表中,我們可以看出,實(shí)事上二進(jìn)制操作碼與匯編指令名稱并非一一對(duì)應(yīng),一條匯編指令的名稱如:轉(zhuǎn)移指令,它可以對(duì)應(yīng)多個(gè)操作碼,只有當(dāng)指令名稱與指令操作數(shù)合在一起,才與操作碼和操作數(shù)有一一對(duì)應(yīng)的關(guān)系.也就是說(shuō)同一個(gè)指令名稱,指令操作數(shù)類型不同,對(duì)應(yīng)的二進(jìn)制操作碼也可能不同.操作碼在對(duì)照表是用“操作碼字段表示.在操作碼字節(jié)中通常又有方向位
4、、符號(hào)位、操作數(shù)大小修飾位值得注意,它們都用一個(gè)二進(jìn)制位來(lái)表示,方向位與符號(hào)位通常都在操作碼的倒數(shù)第二位,而操作數(shù)修飾位通常在操作碼的最后一位.舉例說(shuō)明:如果倒數(shù)第二位是方向位,那么如果這一位值為0,那么表示操作數(shù)是從左到右,如果是1表示操作數(shù)從右到左;如果倒數(shù)第二位是表示符號(hào)位,那么如果這一位值為0表示操作數(shù)是無(wú)符號(hào)操作數(shù),如果值為1表示操作數(shù)為有符號(hào)操作數(shù);如果最后一位是修飾操作數(shù)位,那么最后一位為0表示操作數(shù)是八位操作數(shù),就是字節(jié)操作數(shù),最后一位為1表示操作數(shù)大小由匯編模式?jīng)Q定,如果是16位匯編就表示是16位操作數(shù),即字操作數(shù),如果是32位匯編就表示是32位操作數(shù),即雙字操作數(shù).匯編模式
5、是16位還是32位,由匯編代碼決定,在NASM匚編中默認(rèn)為32位模式,如果代碼顯示地給出BIT16就表示匯編成16位模式,如果代碼顯示地給出BIT32就表示匯編成32位模式.匯編模式不同,操作數(shù)也不相同,具體請(qǐng)看操作數(shù)節(jié)中介紹.二、操作數(shù)計(jì)算機(jī)指令之所以復(fù)雜的一個(gè)主要原因就是操作數(shù)有多種變化,最為簡(jiǎn)單的指令就是無(wú)操作數(shù)指令.其中操作數(shù)可以是立即數(shù)、存放器和內(nèi)存地址.通常情況下,操作數(shù)含有立即數(shù)的指令與不含立即數(shù)的指令,指令操作碼不同;操作數(shù)都為存放器的,通用存放器、段存放器、限制存放器、調(diào)試存放器和任務(wù)存放器的指令操作碼不同;多媒體指令、浮點(diǎn)指令和SIMD指令都有各自的指令系統(tǒng).最為復(fù)雜的變化
6、是當(dāng)操作數(shù)為存放器或內(nèi)存的時(shí)候,之所以把它們放在一起,是因?yàn)樗鼈兌加梢粋€(gè)叫做模數(shù)MOD的兩位二進(jìn)制數(shù)來(lái)決定.計(jì)算機(jī)指令是如何分辨多變的操作數(shù)的呢?前面提到,如果操作數(shù)是立即數(shù),那么就用操作碼來(lái)區(qū)分.當(dāng)操作數(shù)是存放器或是內(nèi)存地址時(shí),主要是用一個(gè)字節(jié)來(lái)區(qū)分,這個(gè)字節(jié)的前兩位就是模數(shù)MOD,后三位是存放器的二進(jìn)制代碼,最后三位的值由開(kāi)始兩位的模數(shù)來(lái)決定具體的類型,如果模數(shù)為11那么最后三位就用來(lái)表示存放器.內(nèi)存地址是用存放器的值來(lái)表示的,有的內(nèi)存地址帶有位移量,于是,當(dāng)模數(shù)為00時(shí)字節(jié)的最后三位就表示存放器內(nèi)的數(shù)據(jù)是內(nèi)存地址,并且沒(méi)有位移量,當(dāng)模數(shù)為01時(shí),字節(jié)最后三位表示存放器內(nèi)的數(shù)據(jù)是內(nèi)存地址,
7、并且在這一字節(jié)之后有8位數(shù)的位移量,當(dāng)模數(shù)為10時(shí)字節(jié)后面有16位或32位,是16位還是32位由匯編模式來(lái)決定.16位模式常用于實(shí)模式,可使用16位存放器,如AX、BX等,32位常用于保護(hù)模式,可使用32位存放器,如EAXEBX等.然而,只用一個(gè)字節(jié)的最后三位來(lái)表示內(nèi)存地址,不可能用來(lái)表示眾多的存放器組合,于是模數(shù)為00時(shí)沒(méi)有位移量,就有在16位匯編模式,當(dāng)nnn=000nnn表示是用來(lái)表示內(nèi)存的三位二進(jìn)制數(shù)時(shí),內(nèi)存地址為DS:BX+SI,在32位匯編模式時(shí)nnn=000,內(nèi)存地址為DS:EAX,其它的值請(qǐng)參照后面的對(duì)應(yīng)表.于是,我們知道了,計(jì)算機(jī)指令是通過(guò)模數(shù)、存放器和寄/內(nèi)三個(gè)域來(lái)決定操作
8、數(shù)的,其實(shí)除此之外,還有一種特殊的情況,就是操作數(shù)并沒(méi)有都用到這三個(gè)域,而是把第二個(gè)域的值設(shè)為一個(gè)預(yù)設(shè)值,也就是說(shuō),第二個(gè)用來(lái)表示存放器的域設(shè)成了固定值,而不是可變的存放器,那么這就出現(xiàn)了只有一個(gè)存放器或是內(nèi)存地址操作數(shù)的變型,其實(shí)它是由前一種類型變化得來(lái)的.有三個(gè)操作數(shù)的指令又是如何的呢?實(shí)事上搞明白了上一種變化,三個(gè)操作數(shù)就很容易了,它只不過(guò)是在兩個(gè)存放器或內(nèi)存地址操作數(shù)之后再加一個(gè)立即數(shù),這種情況同樣有一種特例,那就是有兩個(gè)相同存放器操作數(shù),和一個(gè)立即數(shù),那么在寫(xiě)匯編代碼的時(shí)候就把這種情況認(rèn)為是一個(gè)存放器和一個(gè)立即數(shù),而實(shí)際譯成二進(jìn)制代碼時(shí)要譯成兩個(gè)相同的存放器和一個(gè)立即數(shù),它同樣是屬于
9、三個(gè)操作數(shù)的情況,IMUL指令就屬于這一種特例.在具體的指令中還有一些例外,比方,一個(gè)看上去只有一個(gè)操作碼,不含操作數(shù)的指令,而實(shí)際上它有隱含的存放器作為它的操作數(shù)如計(jì)數(shù)存放器,或者它的存放器操作數(shù)被指令指定了,而不是可變的,如只使用累加存放器,這也是比擬常見(jiàn)的,這些在對(duì)照表中有詳細(xì)的注明.三、指令前綴有些指令通過(guò)添加前綴來(lái)改變默認(rèn)段或超越指令模式.所謂超越指令模式是指在16位匯編模式時(shí)使用了32位的存放器或者由32位存放器組成的內(nèi)存地址,或者在32位匯編模式時(shí)使用了16位存放器或者由16位存放器組成的內(nèi)存地址.當(dāng)使用超越前綴時(shí),應(yīng)把前綴字節(jié)放在指令的面前,有多個(gè)前綴時(shí)前綴字節(jié)沒(méi)有順序地排列.
10、超越前綴表前綴字節(jié)作用26HES段超越前綴2EHCS段超越前綴36HSS段超越前綴3EHDS段超越前綴64HFS:段超越前綴65HGS段超越前綴2EH分支未獲取前綴原英文是:Branchnottaken,分支暗示前綴-僅用于條件跳轉(zhuǎn)Jcc指令3EH分支被獲取前綴原英文是:Branchtaken,分支暗示前綴-僅用于條件跳轉(zhuǎn)Jcc指令66H對(duì)操作數(shù)長(zhǎng)度的指令模式超越67H對(duì)內(nèi)存地址長(zhǎng)度的指令模式超越F0H鎖LOCK指令前綴F2H不相等重復(fù)/不為零重復(fù)前綴REPNE/REPNZ1令前綴只適用于字符串操作指令F3H重復(fù)REP指令前綴只適用于字符串操作指令F3H相等重復(fù)/為零重復(fù)前綴REP/REP指令
11、前綴只適用于字符串操作指令四、總結(jié)通過(guò)以上的分析,我們可以總結(jié)出計(jì)算機(jī)指令的結(jié)構(gòu),由于286以前含286的處理器只能識(shí)別16位地址指令,且不能識(shí)別超越前綴字節(jié),因此,這種16位地址指令的格式又與32位地址,即386以后含386的處理器的指令格式有所不同,如下表:16位計(jì)算機(jī)指令格式適用于286以前的處理器操作碼操作數(shù)0x帶模數(shù)的存放器和寄/內(nèi)操作數(shù)內(nèi)存位移量立即數(shù)1-2字節(jié)0-1字節(jié)0-2字節(jié)0-2字節(jié)32位計(jì)算機(jī)指令格式適用于386以后的處理器指令超越前綴操作碼操作數(shù)0x66/0x670x帶模數(shù)的存放器和寄/內(nèi)操作數(shù)比例變址*內(nèi)存位移量立即數(shù)由前綴個(gè)數(shù)而定1-2字節(jié)0-1字節(jié)0-1字節(jié)0-4
12、字節(jié)0-4字節(jié)*值得注意的是,操作數(shù)域中的比例變址只適用于32位尋址方式,且此時(shí)jjj/nnn=100比例變址字節(jié)的前兩位表示比例因子,后三位表示變址存放器,最后三位表示基地存放器,最終得到的地址值是:比例因子*變址+基址,當(dāng)比例因子為00時(shí)乘以1,當(dāng)比例因子為01是乘以2,當(dāng)比例因子為10時(shí)乘以4,當(dāng)比例因子為11時(shí)乘以8.其中“帶模數(shù)的存放器和寄/內(nèi)操作數(shù)這一操作數(shù)域僅占一個(gè)字節(jié),如下表示:當(dāng)mm=11時(shí)jjj/nnn當(dāng)mm=00寸jjj/nnn當(dāng)mm=01時(shí)jjj/nnn當(dāng)mm=10寸jjj/nnn的值就表示為存放器,即:的值就表示為內(nèi)存地址,即的值就表示為內(nèi)存地址,即的值就表示為內(nèi)存地
13、址,即mmjjjjjj/nnnmm是兩位模數(shù)jjj是三位表示的存放器nnn是三位用存放器的值來(lái)表示的內(nèi)地地址11血j00jjjnnn且此時(shí)“內(nèi)存位移量域不取值,沒(méi)有位移量01jjjnnn且此時(shí)內(nèi)存位移量域取8位的位移量10jjjnnn且此時(shí)“內(nèi)存位移量域取16位或32位的位移量,如果是16位匯編模式那么取16位的位移量,如果是32位匯編模式那么取是否有最后面的立即數(shù)操作數(shù)那么由操作碼來(lái)決定.如果匯編代碼指定為16位匯編模式,但指令的操作數(shù)中使用了如果是使用了32位存放器的值來(lái)表示內(nèi)存地址,那么需要在指令前加式時(shí),在指令的操作數(shù)中使用了16位的存放器,也需要在指令前加32位的位移量.32位的存放
14、器,那么就需要在指令前加0x66的超越前綴,0x67的超越前綴,同理,匯編代碼指定為32位匯編模0x66的超越前綴,如果是使用了16位存放器的值來(lái)表示內(nèi)存地址,那么需要在指令前加0x67的超越前綴.其每條指令的這兩種超越前綴已經(jīng)在指令對(duì)照表中完整給出存放器中文-英文命名對(duì)照表姓類中文名稱英文名稱二進(jìn)制碼存放器說(shuō)明多功能存放器累加低八AL000累加存放器低八位累加高八AH100累加存放器低八位累加16AX00016位累加存放器累加32EAX00032位累加存放器基址低八BL011基址存放器低八位基址高八BH111基址存放器低八位基址16BX01116位基址存放器基址32EBX01132位基址存放
15、器計(jì)數(shù)低八CL001計(jì)數(shù)存放器低八位計(jì)數(shù)同八CH101計(jì)數(shù)奇仔器低八僅計(jì)數(shù)16CX00116位計(jì)數(shù)奇仔器計(jì)數(shù)32ECX00132位計(jì)數(shù)奇仔器數(shù)據(jù)低八DL010數(shù)據(jù)奇仔器低八位數(shù)據(jù)局八DH110數(shù)據(jù)奇仔器低八位數(shù)據(jù)16DX01016也數(shù)據(jù)奇存器數(shù)據(jù)32EDX01032位數(shù)據(jù)奇仔器類型中文名稱英文名稱二進(jìn)制倡奇仔希說(shuō)明指針存放器堆棧指針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ù)存放器七浮點(diǎn)存放器浮點(diǎn)零ST0000
18、浮點(diǎn)存放器零浮點(diǎn)一ST1001浮點(diǎn)存放器一浮點(diǎn)二ST2010浮點(diǎn)存放器二浮點(diǎn)三ST3011浮點(diǎn)存放器三浮點(diǎn)四ST4100浮點(diǎn)存放器四浮點(diǎn)五ST5101浮點(diǎn)存放器五浮點(diǎn)六ST6110浮點(diǎn)存放器六浮點(diǎn)七ST7111浮點(diǎn)存放器七多媒體存放器媒體零MM0000媒體存放器零媒體一MM1001媒體存放器一媒體二MM2010媒體存放器二媒體三MM3011媒體存放器三媒體四MM4100媒體存放器四媒體五MM5101媒體存放器五媒體六MM6110媒體存放器六媒體七M(jìn)M7111媒體存放器七單指令流、多q據(jù)流存放器單流零XMM0000單指令流、多數(shù)據(jù)流存放器零單流一XMM1001單指令流、多數(shù)據(jù)流存放器一單流二XM
19、M2010單指令流、多數(shù)據(jù)流存放器二單流三XMM3011單指令流、多數(shù)據(jù)流存放器三單流四XMM4100單指令流、多數(shù)據(jù)流存放器四單流五X(qián)MM5101單指令流、多數(shù)據(jù)流奇存器五單流六XMM6110單指令流、多數(shù)據(jù)流奇存器六單流七XMM7111單指令流、多數(shù)據(jù)流存放器七注:英文名稱有星號(hào)“*的表示作為保存域,實(shí)際并沒(méi)有使用,二進(jìn)制碼有星號(hào)“*表示無(wú)需二進(jìn)制數(shù)表示尋址方式16位尋址方式時(shí)模數(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位符號(hào)位移DS:BX+SI+sign_disp801001數(shù)據(jù)段:基址16+目標(biāo)變址16+8位符號(hào)位移DS:BX+DI+sign_disp801010堆棧段:基址指針16+源變址16+8位符號(hào)位移SS:BP+SI+sign_disp801011堆棧段:基址指針16+目標(biāo)變址16+8位符號(hào)位移SS:BP+DI+sig
21、n_disp801100數(shù)據(jù)段:源變址16+8位符號(hào)位移DS:SI+sign_disp801101數(shù)據(jù)段:目標(biāo)變址16+8位符號(hào)位移DS:DI+sign_disp801110堆棧段:基址指針16+8位符號(hào)位移SS:BP+sign_disp801111數(shù)據(jù)段:基址16+8位符號(hào)位移DS:BX+sign_disp810000數(shù)據(jù)段:基址16+源變址16+16位符號(hào)位移DS:BX+SI+disp1610001數(shù)據(jù)段:基址16+目標(biāo)變址16+16位符號(hào)位移DS:BX+DI+disp1610010堆棧段:基址指針16+源變址16+16位符號(hào)位移SS:BP+SI+disp1610011堆棧段:基址指針16
22、+目標(biāo)變址16+16位符號(hào)位移SS:BP+DI+disp1610100數(shù)據(jù)段:源變址16+16位符號(hào)位移DS:SI+disp1610101數(shù)據(jù)段:目標(biāo)變址16+16位符號(hào)位移DS:DI+disp1610110堆棧段:基址指針16+16位符號(hào)位移SS:BP+disp1610111數(shù)據(jù)段:基址16+16位符號(hào)位移DS:BX+disp16注意:當(dāng)處理器執(zhí)行時(shí),將所有8位符號(hào)位移量符號(hào)擴(kuò)展成16位的位移量,如果8位的位移量是00H-7FH正的,那么在位移地址之前擴(kuò)展成0000H-007FH,如果8位的位移量是80H-FFH負(fù)的,那么在位移地址之前擴(kuò)展成FF80H-FFFFH因此,這個(gè)工作也可由匯編器來(lái)
23、完成,在編譯時(shí)將模數(shù)設(shè)為10,地址擴(kuò)展成16的位移量,所以有些匯編程序不使用8位的位移量.32位尋址方式時(shí)模數(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計(jì)數(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+比例變址計(jì)數(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位位移量計(jì)數(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ù)段:計(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ù)段:計(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位位移量指令代碼對(duì)照表說(shuō)明一、字段說(shuō)明指令內(nèi)碼是中文匯編語(yǔ)言程序使用的指令內(nèi)部代碼,它是一個(gè)以數(shù)字編號(hào)為主體的字符串.中文名稱是中文匯編程序使用的指令名稱.英文名稱是對(duì)應(yīng)指令的英文名稱.操作數(shù)類型是指令操作數(shù)的種類,它包括:無(wú)操作數(shù);單操作數(shù)中的單存放器、單內(nèi)存和單立即數(shù);雙操作數(shù)中的存放器到存放器、內(nèi)存到存放器、立即數(shù)到存放器、存放器到內(nèi)存,立即數(shù)到內(nèi)存;三操作數(shù)中的存放器到存放器到存放器、立即數(shù)到存放器到存放器、
29、立即數(shù)到內(nèi)存到存放器、立即數(shù)到存放器到內(nèi)存.還有幾種特例種類,是存放器被指定為累加器或是計(jì)數(shù)器存放器.操作碼是唯一代表本指令意義的二進(jìn)制代碼,表中用十六進(jìn)制數(shù)表示.模數(shù)是“帶模數(shù)的存放器和寄/內(nèi)操作數(shù)字節(jié)的最前兩位數(shù),用來(lái)指定“寄/內(nèi)位是存放器還是內(nèi)存地址及內(nèi)存位移量.操作數(shù)是指令的操作數(shù)具體表現(xiàn)形式,比方操作數(shù)類型是存放器到存放器,那么就可能是8位存放器到8位存放器或者16位存放器到16存放器等,具體請(qǐng)參照對(duì)應(yīng)表.操作數(shù)大小是操作數(shù)的長(zhǎng)度,通常是字節(jié)(Byte)、字(Word)或雙字(Dword),也有一些特有的指令的操作數(shù)大小為四字或更長(zhǎng)的操作數(shù).符號(hào)是指指令的操作數(shù)是否有正負(fù)符號(hào)之分,如
30、果有那么指令操作碼的倒數(shù)第二位表示符號(hào)位.方向是指指令的源操作數(shù)與目標(biāo)操作數(shù)是從左到右還是從右到左的關(guān)系,0表示從左到右,1表示從右到左.芯片型號(hào)是指令適用的芯片類型,有8086、386、Pentium、AMDM.操作數(shù)指令表示此指令的操作碼中是否含有操作數(shù),此類操作數(shù)通常為存放器,且在占操作碼的最后三位.操作數(shù)預(yù)設(shè)值是表示有些指令的“帶模數(shù)的存放器和寄/內(nèi)操作數(shù)的字節(jié)中,第一個(gè)存放器(從左到右兩位模數(shù)之后的三位)被預(yù)設(shè)為的定值.16位和32位字段是指令在匯編16位匯編模式下和在32匯編模式下對(duì)應(yīng)的前綴,用十六進(jìn)制數(shù)表示.二、簡(jiǎn)稱呼明為了使表不至于過(guò)份冗長(zhǎng),使用下例簡(jiǎn)稱來(lái)表示內(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位位移量.三、其它說(shuō)明表中表示內(nèi)存的方式就是使用了NASM匚編風(fēng)格,所有的內(nèi)存地址都用中括號(hào)“口括起來(lái),所有沒(méi)有用中括號(hào)括起來(lái)的值除在中括號(hào)之前用來(lái)修飾操作數(shù)大小的數(shù)都表示立即數(shù)或者存放器.由于對(duì)內(nèi)存地址操作時(shí),并不知道操作數(shù)的大小,根據(jù)源操作數(shù)與目地操作數(shù)大小匹配的原那么除某些特例指令外,如果未能識(shí)別操作數(shù)大小的對(duì)內(nèi)存操作都有必要在內(nèi)存前面加操作數(shù)大小修飾,因
32、此,在中括號(hào)前面有8、16或32數(shù)值是有來(lái)修飾操作數(shù)大小的,在匯編語(yǔ)言中常用byte、word或dword來(lái)修飾操作數(shù)的大小.在操作數(shù)字段中還有“=和“這個(gè)符號(hào)的左邊為源操作數(shù),右邊為目的操作數(shù),“符號(hào)操作數(shù)相反.這樣看起來(lái)比擬直觀,并且反映指令操作數(shù)的真實(shí)形式.對(duì)于有方向性的指令可解釋為“從源操作數(shù)到目的操作數(shù),而對(duì)于沒(méi)有方向性的指令可解釋為“源操作數(shù)作用于目的操作數(shù).這一點(diǎn)有別于所有當(dāng)前的匯編程序,當(dāng)前的匯編程序都是以逗號(hào)“,隔開(kāi)操作數(shù),并默認(rèn)從左到右或從右到左為源操作數(shù)到目的操作數(shù)的順序.指令代碼對(duì)照表中文名稱英文名稱操作數(shù)操作碼模數(shù)寄存器1寄內(nèi)希位移量立即數(shù)符號(hào)方向芯片型號(hào)16位32位
33、倜整加AAA一0x378086一一調(diào)整陳AAD一0xD50A8086一一調(diào)整陳AAD數(shù)80xD5一1I-一10一一Pentium一一調(diào)整來(lái)AAM一0xD40A8086一一調(diào)整來(lái)AAM數(shù)80xD4一一一一10一一Pentium一一調(diào)整減AAS一0x3F8086一一進(jìn)位加ADC奇:累加08哪80x14一一一一10一38086一一進(jìn)位加ADC奇:累加16=數(shù)160x15一一一一10一38086一0x66進(jìn)位加ADC哥:累加32奇80x101113一一一38086一一進(jìn)他加ADC奇16=奇160x111113一一一38086一0x66進(jìn)位加ADC寄32=寄320x111113一一一338610x66一
34、進(jìn)位加ADC奇8=奇80x121113一一一38086一一進(jìn)位加ADC寄16=寄160x131113一一一38086一0x66進(jìn)位加ADC寄32=寄320x131113一一一33860x66一進(jìn)位加ADC寄8=寄160x12001r5一一一38086一0x67進(jìn)位加ADC寄8=寄320x120015一一一33860x67一進(jìn)位加ADC寄16=寄160x130015一一一38086一0x6667進(jìn)位加ADC寄16=寄320x130015一一一33860x670x66進(jìn)位加ADC寄32=寄160x130015一一一33860x660x67進(jìn)位加ADC寄32=寄320x130015一一一33860x
35、6667一進(jìn)位加ADC寄8=寄16+位移80x1201159一一38086一0x67進(jìn)位加ADC寄8=寄32+位移80x1201159一一33860x67一進(jìn)位加ADC寄16=局16+位移80x1301159一一38086一0x6667進(jìn)位加ADC寄16=局32+位移80x1301159一一33860x670x66進(jìn)位加ADC寄32=局16+位移80x1301159一一33860x660x67進(jìn)位加ADC寄32=局32+位移80x1301159一一33860x6667一進(jìn)位加ADC寄8=寄16+位移160x1210159一一38086一0x67進(jìn)位加ADC寄8=寄32+位移320x121015
36、9一一33860x67一進(jìn)位加ADC寄16=局16+位移160x1310159一一38086一0x6667進(jìn)位加ADC寄16=局32+位移320x1310159一一33860x670x66進(jìn)位加ADC寄32=局16+位移160x1310159一一33860x660x67進(jìn)位加ADC寄32=局32+位移320x13101r59一一33860x6667一進(jìn)位加ADC寄16=數(shù)80x83110103一10有38086一0x66進(jìn)位加ADC寄32=數(shù)80x83110103一10有33860x66一進(jìn)位加ADC寄8=數(shù)80x80110103一10一38086一一進(jìn)位加ADC寄16=數(shù)160x811101
37、03一10一38086一0x66進(jìn)位加ADC寄32寄160x100015一一一38086一0x67進(jìn)位加ADC寄8=寄320x100015一一一33860x67一進(jìn)位加ADC寄16=寄160x110015一一一38086一0x6667進(jìn)位加ADC寄16=寄320x110015一一一33860x670x66進(jìn)位加ADC寄32=寄160x110015一一一33860x660x67進(jìn)位加ADC寄32=寄320x110015一一一33860x6667一進(jìn)位加ADC寄8=寄16+位移80x1001159一一38086一0x67進(jìn)位加ADC寄8=寄32+位移80x1001159一一33860x67一進(jìn)位加
38、ADC寄16=倩16+位移80x1101159一一38086一0x6667進(jìn)位加ADC寄16=局32+位移80x1101159一一33860x670x66進(jìn)位加ADC寄32=局16+位移80x1101159一一33860x660x67進(jìn)位加ADC寄32=局32+位移80x11011r59一一33860x6667一進(jìn)位加ADC寄8=寄16+位移160x10101r59一一38086一0x67進(jìn)位加ADC寄8=寄32+位移320x1010159一一33860x67一進(jìn)僅加ADC奇16=奇16+僅移160x1110159一一38086一0x6667進(jìn)位加ADC奇16=奇32+僅移320x111019
39、一一33860x670x66進(jìn)他加ADC奇32=商16+僅移160X111015d933860x660x67進(jìn)他加ADC奇32=固32+僅移320x111019一一33860x6667一進(jìn)位加ADC8奇16=數(shù)80x83000105一10侶38086一0x67功:他加AD8寄32=數(shù)80X83000105一10后33860乂6/一進(jìn)位加ADC8奇16=數(shù)80x80000105一10一38086一0x67進(jìn)位加ADC8寄32=數(shù)80x80000105一10一33860x67一進(jìn)位加ADC16奇16=數(shù)160x8100010151一10一38086一0x6766進(jìn)位加ADC1可寄32=數(shù)160x8
40、1000105一10一33860x670x66進(jìn)位加ADC32奇16=數(shù)320x81000105一10一33860x660x67進(jìn)位加ADC32奇32=數(shù)320x81000105一10一33860x6766一進(jìn)位加ADC8寄16+位移8=數(shù)80x83010105910相38086一0x67進(jìn)位加ADC8奇32+位移8=數(shù)80x83010105910有33860x67一進(jìn)位加ADC8奇16+位移8=數(shù)80x8001010591038086一0x67進(jìn)位加ADC8寄32+位移8=數(shù)80x80010105910一33860x67一進(jìn)位加ADC16奇16+位移8=數(shù)160x8101010pH910一3
41、8086一0x6766進(jìn)位加ADC16寄32+位移8=數(shù)160x8101010pH910一33860x670x66進(jìn)位加ADC32寄16+位移8=數(shù)320x81010105910一33860x660x67進(jìn)位加ADC32苛32+立移8=數(shù)320x81010105910一33860x6766一進(jìn)位加ADC8奇16+位移16=數(shù)80x83100105910有38086一0x67進(jìn)位加ADC8胃32+位移32=數(shù)80x83100105910有33860x67一進(jìn)位加ADC8奇16+位移16=數(shù)80x80100105910一38086一0x67進(jìn)位加ADC8寄32+位移32=數(shù)80x801001059
42、10一33860x67一進(jìn)位加ADC16寄16+位移16=數(shù)160x8110010r5910一38086一0x6766進(jìn)位加ADC16奇32+位移32=數(shù)160x8110010r5910一33860x670x66進(jìn)位加ADC32寄16+位移16=數(shù)320x81100105910一33860x660x67進(jìn)位加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. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 住宅區(qū)租賃解除合同協(xié)議書(shū)
- 教育設(shè)施采購(gòu)項(xiàng)目招投標(biāo)
- 建筑工程監(jiān)理承攬合同三篇
- 2022幼兒園春季工作總結(jié)10篇
- 小學(xué)生一仵令我感動(dòng)的事作文500字
- 高中美術(shù)教學(xué)工作計(jì)劃
- 第二學(xué)期中學(xué)語(yǔ)文教研工作計(jì)劃
- 小學(xué)生六一兒童節(jié)活動(dòng)策劃方案2022
- 中考滿分作文集錦15篇
- 旅游類實(shí)習(xí)報(bào)告范文集合5篇
- 2023年青馬工程培訓(xùn)班結(jié)業(yè)考試題庫(kù)
- 2023年住院醫(yī)師規(guī)范化培訓(xùn)胸外科出科考試
- 川農(nóng)在線《預(yù)算會(huì)計(jì)》機(jī)考復(fù)習(xí)題庫(kù)
- CDSP數(shù)據(jù)安全專家認(rèn)證考試題庫(kù)(預(yù)測(cè)100題)
- 管理學(xué)專業(yè):管理基礎(chǔ)知識(shí)試題庫(kù)(附含答案)
- 幼兒園大班科學(xué):《樹(shù)葉為什么會(huì)變黃》課件
- 電氣火災(zāi)綜合治理自查檢查表
- 結(jié)算資料目錄
- 新產(chǎn)品導(dǎo)入量產(chǎn)作業(yè)流程(NPI)
- 土壤分析技術(shù)規(guī)范(第二版)
- 大學(xué)生個(gè)人求職簡(jiǎn)歷封面 (82)應(yīng)聘投稿找工作履歷表封面
評(píng)論
0/150
提交評(píng)論