匯編指令英文全稱_第1頁
匯編指令英文全稱_第2頁
匯編指令英文全稱_第3頁
匯編指令英文全稱_第4頁
匯編指令英文全稱_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 匯編語言中CPU上的通用寄存器的名稱,是32位的寄存器。如果用C語言來解釋,可以把這些寄存器當(dāng)作變量看待。比方說:  add eax,-2 ;     /可以認(rèn)為是給變量eax加上-2這樣的一個(gè)值。這些32位寄存器有多種用途,但每一個(gè)都有“專長”,有各自的特別之處。EAX   是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX  

2、60;是"基地址"(base)寄存器, 在內(nèi)存尋址時(shí)存放基地址。ECX   是計(jì)數(shù)器(counter), 是重復(fù)(REP)前綴指令和LOOP指令的內(nèi)定計(jì)數(shù)器。EDX    是數(shù)據(jù)(data),總是被用來放整數(shù)除法產(chǎn)生的余數(shù)。ESI/EDI  分別叫做"源/目標(biāo)索引寄存器"(source/destination index),因?yàn)樵诤芏嘧址僮髦噶钪? DS:ESI指向源串,而ES:EDI指向目標(biāo)串.EBP  是"基址指針"(BASE

3、POINTER), 它最經(jīng)常被用作高級語言函數(shù)調(diào)用的"框架指針"(frame pointer). 在破解的時(shí)候,經(jīng)??梢钥匆娨粋€(gè)標(biāo)準(zhǔn)的函數(shù)起始代碼:push ebp ;  保存當(dāng)前ebpmov ebp,esp ;  EBP設(shè)為當(dāng)前堆棧指針sub esp, xxx ;  預(yù)留xxx字節(jié)給函數(shù)臨時(shí)變量.這樣一來,EBP 構(gòu)成了該函數(shù)的一個(gè)框架, 在EBP上方分別是原來的EBP, 返回地址和參數(shù). EBP下方則是臨時(shí)變量. 函數(shù)返回時(shí)作 mov esp,ebp/pop ebp/ret  &#

4、160;即可.ESP   專門用作堆棧指針,被形象地稱為棧頂指針,堆棧的頂部是地址小的區(qū)域,壓入堆棧的數(shù)據(jù)越多,ESP也就越來越小。在32位平臺(tái)上,ESP每次減少4字節(jié)。對于8086計(jì)算機(jī),由于寄存器是十六位的,所以限制了尋址僅僅為二的十六次方,也就是十六個(gè)二進(jìn)制位,也就是64K內(nèi)存。但是對于我們編程使用來說是不夠的。8086的解決辦法是將20位的物理地址分為段地址和段內(nèi)偏移地址表示。也就是說段地址乘以十六,加上段內(nèi)偏移地址行程一個(gè)物理地址。Physicall address = segment address * 16 + offset.1234:1000就表示

5、物理地址1234H*10H+1000H=12350H在匯編語言中,CS表示代碼段 code segment,ES表示附加段 extra segment,SS表示堆棧段 stack segment.就是表示段地址的 1.通用數(shù)據(jù)傳送指令MOV-> move  MOV dest,src ;destsrc  MOV指令把一個(gè)字節(jié)或字的操作數(shù)從源地址src傳送至目的地址dest。MOVSX->extended move with sign data MOVZX->extended move with zero dataPUSH->

6、;push POP->pop進(jìn)棧出棧指令PUSHA->push all POPA->pop all PUSHAD->push all data POPAD->pop all data BSWAP->byte swapXCHG->exchange交換指令用來將源操作數(shù)和目的操作數(shù)內(nèi)容交換,操作數(shù)可以是字、也可以是字節(jié),可以在通用寄存器與通用寄存器或存儲(chǔ)器之間對換數(shù)據(jù),但不能在存儲(chǔ)器與存儲(chǔ)器之間對換數(shù)據(jù)。 mov ax,1234h ;ax=1234h mov bx,5678h ;bx=5

7、678h xchg ax,bx ;ax=5678h,bx=1234h xchg ah,al ;ax=7856hCMPXCHG->compare and change XADD->exchange and addXLAT->translate 換碼指令用于將BX指定的緩沖區(qū)中、AL指定的位移處的數(shù)據(jù)取出賦給AL。 2.輸入輸出端口傳送指令I(lǐng)N->input OUT->output3.目的地址傳送指令LEA->load effective addres有效地址傳送指令mov bx,0400hmov si

8、,3chlea bx,bx+si+0f62h ;BX=139EH這里BX得到的是主存單元的有效地址,不是物理地址,也不是該單元的內(nèi)容。LDS->load DS LES->load ES LFS->load FS LGS->load GS LSS->load SS4.標(biāo)志傳送指令LAHF->load AH from flag SAHF->save AH to flag PUSHF->push flag POPF->pop flag PUSHD->push d

9、flag POPD->pop dflag二、算術(shù)運(yùn)算指令A(yù)DD->add加法指令 mov al,0fbh ;al=0fbhadd al,07h ;al=02hADC->add with carry INC->increase 1 AAA->ascii add with adjust DAA->decimal add with adjust SUB->substract SBB->substract with borrow DEC->decrease 1 NEC-

10、>negative CMP->compare AAS->ascii adjust on substract DAS->decimal adjust on substract MUL->multiplication IMUL->integer multiplication AAM->ascii adjust on multiplication DIV->divide IDIV->integer divide AAD->ascii adjust on

11、 divide CBW->change byte to word CWD->change word to double word CWDE->change word to double word with sign to EAX CDQ->change double word to quadrate wordCLTD->covert long to double 三、邏輯運(yùn)算指令A(yù)ND->and or->or XOR->xor NOT->not TES

12、T->test SHL->shift left SAL->arithmatic shift left SHR->shift right SAR->arithmatic shift right ROL->rotate left ROR->rotate right RCL->rotate left with carry RCR->rotate right with carry四、串指令MOVS->move string CMPS->compar

13、e string SCAS->scan string LODS->load string STOS->store string REP->repeat REPE->repeat when equal REPZ->repeat when zero flag REPNE->repeat when not equal REPNZ->repeat when zero flag REPC->repeat when carry flag REPNC-&g

14、t;repeat when not carry flag五、程序轉(zhuǎn)移指令1>無條件轉(zhuǎn)移指令(長轉(zhuǎn)移)JMP->jump CALL->call RET->return RETF->return far2>條件轉(zhuǎn)移指令(短轉(zhuǎn)移,-128到+127的距離內(nèi))JAE->jump when above or equal JNB->jump when not below JB->jump when below JNAE->jump when not above or equal 

15、;JBE->jump when below or equal JNA->jump when not above JG->jump when greater JNLE->jump when not less or equal JGE->jump when greater or equal JNL->jump when not less JL->jump when less JNGE->jump when not greater or equal JLE->jump

16、 when less or equal JNG->jump when not greater JE->jump when equal JZ->jump when has zero flag JNE->jump when not equal JNZ->jump when not has zero flag JC->jump when has carry flag JNC->jump when not has carry flag JNO->jump when not h

17、as overflow flag JNP->jump when not has parity flag JPO->jump when parity flag is odd JNS->jump when not has sign flag JO->jump when has overflow flag JP->jump when has parity flag JPE->jump when parity flag is even JS->jump when has sign flag3

18、>循環(huán)控制指令(短轉(zhuǎn)移)LOOP->loop LOOPE->loop equal LOOPZ->loop zero LOOPNE->loop not equal LOOPNZ->loop not zero JCXZ->jump when CX is zero JECXZ->jump when ECX is zero4>中斷指令I(lǐng)NT->interrupt INTO->overflow interrupt IRET->interrupt retu

19、rn5>處理器控制指令HLT->halt WAIT->wait ESC->escape LOCK->lock NOP->no operation STC->set carry CLC->clear carry CMC->carry make change STD->set direction CLD->clear direction STI->set interrupt CLI->clear interrup

20、t  六、偽指令DW->definw word PROC->procedure ENDP->end of procedure SEGMENT->segment ASSUME->assume ENDS->end segment END->end匯編指令中文釋義數(shù)據(jù)傳輸指令它們在存貯器和寄存器、寄存器和輸入輸出端口之間傳送數(shù)據(jù).1. 通用數(shù)據(jù)傳送指令.MOV 傳送字或字節(jié).MOVSX 先符號(hào)擴(kuò)展,再傳送.MOVZX 先零擴(kuò)展,再傳送.PUSH 把字壓入堆棧.POP 把字彈出堆棧

21、.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次壓入堆棧.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次彈出堆棧.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次壓入堆棧.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次彈出堆棧.BSWAP 交換32位寄存器里字節(jié)的順序XCHG 交換字或字節(jié).( 至少有一個(gè)操作數(shù)為寄存器,段寄存器不可作為操作數(shù))CMPXCHG 比較并交換操作數(shù).( 第二個(gè)操作數(shù)必須為累加器AL/AX/EAX )XADD 先交換再累加.( 結(jié)果在第一個(gè)操作數(shù)里 )XLAT 字節(jié)查

22、表轉(zhuǎn)換. BX 指向一張 256 字節(jié)的表的起點(diǎn), AL 為表的索引值 (0-255,即0-FFH); 返回 AL 為查表結(jié)果. ( BX+AL->AL )2. 輸入輸出端口傳送指令.IN I/O端口輸入. ( 語法: IN 累加器, 端口號(hào)DX )OUT I/O端口輸出. ( 語法: OUT 端口號(hào)DX,累加器 )輸入輸出端口由立即方式指定時(shí), 其范圍是 0-255; 由寄存器 DX 指定時(shí),其范圍是 0-65535.3. 目的地址傳送指令.LEA 裝入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 傳送目標(biāo)指針,把指針內(nèi)容裝入DS.例: LDS SI,str

23、ing ;把段地址:偏移地址存到DS:SI.LES 傳送目標(biāo)指針,把指針內(nèi)容裝入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 傳送目標(biāo)指針,把指針內(nèi)容裝入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 傳送目標(biāo)指針,把指針內(nèi)容裝入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 傳送目標(biāo)指針,把指針內(nèi)容裝入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 標(biāo)志傳送指令.LAHF 標(biāo)志寄存器傳送,把標(biāo)志裝入AH.SAHF 標(biāo)志寄存器傳送,把AH內(nèi)容裝入標(biāo)志寄

24、存器.PUSHF 標(biāo)志入棧.POPF 標(biāo)志出棧.PUSHD 32位標(biāo)志入棧.POPD 32位標(biāo)志出棧.二、算術(shù)運(yùn)算指令A(yù)DD 加法.ADC 帶進(jìn)位加法.INC 加 1.AAA 加法的ASCII碼調(diào)整.DAA 加法的十進(jìn)制調(diào)整.SUB 減法.SBB 帶借位減法.DEC 減 1.NEC 求反(以 0 減之).CMP 比較.(兩操作數(shù)作減法,僅修改標(biāo)志位,不回送結(jié)果).AAS 減法的ASCII碼調(diào)整.DAS 減法的十進(jìn)制調(diào)整.MUL 無符號(hào)乘法.IMUL 整數(shù)乘法.以上兩條,結(jié)果回送AH和AL(字節(jié)運(yùn)算),或DX和AX(字運(yùn)算),AAM 乘法的ASCII碼調(diào)整.DIV 無符號(hào)除法.IDIV 整數(shù)除法

25、.以上兩條,結(jié)果回送:商回送AL,余數(shù)回送AH, (字節(jié)運(yùn)算);或 商回送AX,余數(shù)回送DX, (字運(yùn)算).AAD 除法的ASCII碼調(diào)整.CBW 字節(jié)轉(zhuǎn)換為字. (把AL中字節(jié)的符號(hào)擴(kuò)展到AH中去)CWD 字轉(zhuǎn)換為雙字. (把AX中的字的符號(hào)擴(kuò)展到DX中去)CWDE 字轉(zhuǎn)換為雙字. (把AX中的字符號(hào)擴(kuò)展到EAX中去)CDQ 雙字?jǐn)U展. (把EAX中的字的符號(hào)擴(kuò)展到EDX中去)三、邏輯運(yùn)算指令A(yù)ND 與運(yùn)算.or 或運(yùn)算.XOR 異或運(yùn)算.NOT 取反.TEST 測試.(兩操作數(shù)作與運(yùn)算,僅修改標(biāo)志位,不回送結(jié)果).SHL 邏輯左移.SAL 算術(shù)左移.(=SHL)SHR 邏輯右移.SAR 算

26、術(shù)右移.(=SHR) 當(dāng)值為負(fù)時(shí),高位補(bǔ) 1 ;當(dāng)值為正時(shí),高位補(bǔ) 0 ROL 循環(huán)左移.ROR 循環(huán)右移.RCL 通過進(jìn)位的循環(huán)左移.RCR 通過進(jìn)位的循環(huán)右移.以上八種移位指令,其移位次數(shù)可達(dá)255次.移位一次時(shí), 可直接用操作碼. 如 SHL AX,1.移位>1次時(shí), 則由寄存器CL給出移位次數(shù).如 MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器 :源串變址.ES:DI 目標(biāo)串段寄存器:目標(biāo)串變址.CX 重復(fù)次數(shù)計(jì)數(shù)器.AL/AX 掃描值.D標(biāo)志 0表示重復(fù)操作中SI和DI應(yīng)自動(dòng)增量; 1表示應(yīng)自動(dòng)減量.Z標(biāo)志 用來控制掃描或比較操作的結(jié)束.MOV

27、S 串傳送.( MOVSB 傳送字符. MOVSW 傳送字. MOVSD 傳送雙字. )CMPS 串比較.( CMPSB 比較字符. CMPSW 比較字. )SCAS 串掃描.把AL或AX的內(nèi)容與目標(biāo)串作比較,比較結(jié)果反映在標(biāo)志位.LODS 裝入串.把源串中的元素(字或字節(jié))逐一裝入AL或AX中.( LODSB 傳送字符. LODSW 傳送字. LODSD 傳送雙字. )STOS 保存串.是LODS的逆過程.REP 當(dāng)CX/ECX<>0時(shí)重復(fù).REPE/REPZ 當(dāng)ZF=1或比較結(jié)果相等,且CX/ECX<>0時(shí)重復(fù).REPNE/REPNZ 當(dāng)ZF=0或比較結(jié)果不相等,且

28、CX/ECX<>0時(shí)重復(fù).REPC 當(dāng)CF=1且CX/ECX<>0時(shí)重復(fù).REPNC 當(dāng)CF=0且CX/ECX<>0時(shí)重復(fù).五、程序轉(zhuǎn)移指令1>無條件轉(zhuǎn)移指令 (長轉(zhuǎn)移)JMP 無條件轉(zhuǎn)移指令CALL 過程調(diào)用RET/RETF過程返回.2>條件轉(zhuǎn)移指令 (短轉(zhuǎn)移,-128到+127的距離內(nèi))( 當(dāng)且僅當(dāng)(SF XOR OF)=1時(shí),OP1 JA/JNBE 不小于或不等于時(shí)轉(zhuǎn)移.JAE/JNB 大于或等于轉(zhuǎn)移.JB/JNAE 小于轉(zhuǎn)移.JBE/JNA 小于或等于轉(zhuǎn)移.以上四條,測試無符號(hào)整數(shù)運(yùn)算的結(jié)果(標(biāo)志C和Z).JG/JNLE 大于轉(zhuǎn)移.JGE

29、/JNL 大于或等于轉(zhuǎn)移.JL/JNGE 小于轉(zhuǎn)移.JLE/JNG 小于或等于轉(zhuǎn)移.以上四條,測試帶符號(hào)整數(shù)運(yùn)算的結(jié)果(標(biāo)志S,O和Z).JE/JZ 等于轉(zhuǎn)移.JNE/JNZ 不等于時(shí)轉(zhuǎn)移.JC 有進(jìn)位時(shí)轉(zhuǎn)移.JNC 無進(jìn)位時(shí)轉(zhuǎn)移.JNO 不溢出時(shí)轉(zhuǎn)移.JNP/JPO 奇偶性為奇數(shù)時(shí)轉(zhuǎn)移.JNS 符號(hào)位為 "0" 時(shí)轉(zhuǎn)移.JO 溢出轉(zhuǎn)移.JP/JPE 奇偶性為偶數(shù)時(shí)轉(zhuǎn)移.JS 符號(hào)位為 "1" 時(shí)轉(zhuǎn)移.3>循環(huán)控制指令(短轉(zhuǎn)移)LOOP CX不為零時(shí)循環(huán).LOOPE/LOOPZ CX不為零且標(biāo)志Z=1時(shí)循環(huán).LOOPNE/LOOPNZ CX不為零且

30、標(biāo)志Z=0時(shí)循環(huán).JCXZ CX為零時(shí)轉(zhuǎn)移.JECXZ ECX為零時(shí)轉(zhuǎn)移.4>中斷指令I(lǐng)NT 中斷指令I(lǐng)NTO 溢出中斷IRET 中斷返回5>處理器控制指令HLT 處理器暫停, 直到出現(xiàn)中斷或復(fù)位信號(hào)才繼續(xù).WAIT 當(dāng)芯片引線TEST為高電平時(shí)使CPU進(jìn)入等待狀態(tài).ESC 轉(zhuǎn)換到外處理器.LOCK 封鎖總線.NOP 空操作.STC 置進(jìn)位標(biāo)志位.CLC 清進(jìn)位標(biāo)志位.CMC 進(jìn)位標(biāo)志取反.STD 置方向標(biāo)志位.CLD 清方向標(biāo)志位.STI 置中斷允許位.CLI 清中斷允許位.六、偽指令DW 定義字(2字節(jié)).PROC 定義過程.ENDP 過程結(jié)束.SEGMENT 定義段.ASSU

31、ME 建立段寄存器尋址.ENDS 段結(jié)束.END 程序結(jié)束.偶有一日用到匯編,發(fā)現(xiàn)有一大段代碼讀起來竟是如此費(fèi)力,很多指令由于長時(shí)間不用忘記了。上網(wǎng)查了一下,歸類如下:MOV(MOVe)   傳送指令PUSH     入棧指令POP     出棧指令XCHG(eXCHanG)   交換指令XLAT(TRANSLATE)   換碼指令LEA (Load Effective Address) 有效地址送寄存器指令LDS(Load DS with pointer

32、) 指針?biāo)图拇嫫骱虳S指令LES(Load ES with pointer) 指針?biāo)图拇嫫骱虴S指令LAHF(Load AH with Flags) 標(biāo)志位送AH指令SAHF(Store AH into Flgs) AH送標(biāo)志寄存器指令PUSHF(PUSH the Flags)   標(biāo)志進(jìn)棧指令POPF(POP the Flags)   標(biāo)志出棧指令A(yù)DD     加法指令A(yù)DC     帶進(jìn)位加法指令I(lǐng)NC     加1指令SUB(S

33、UBtract)   不帶借位的減法指令SBB(SuVtrach with borrow) 帶借位的減法指令DEC(DECrement)   減1指領(lǐng)NEG(NEGate)   求補(bǔ)指令CMP(CoMPare)   比較指令MUL(unsinged MULtiple) 無符號(hào)數(shù)乘法指令I(lǐng)MUL(sIgned MUL tiple) 有符號(hào)數(shù)乘法指令DIV(unsigned DIVide)   無符號(hào)數(shù)除法指令I(lǐng)DIV(sIgned DIVide)   有符號(hào)數(shù)除法指令CBW(C

34、ount Byte to Word) 字節(jié)轉(zhuǎn)換為字指令CWD(Count Word to Doble word) 字轉(zhuǎn)換為雙字指令DAA   壓縮的BCD碼加法十進(jìn)制調(diào)整指令DAS   壓縮的BCD碼減法十進(jìn)制調(diào)整指令A(yù)AA   非壓縮的BCD碼加法十進(jìn)制調(diào)整指令A(yù)AS   非壓縮的BCD碼加法十進(jìn)制調(diào)整指令A(yù)ND     邏輯與指令OR     邏輯或指令XOR     邏輯異或指令NOT

35、60;    邏輯非指令TEST     測試指令SHL(SHift logical Letf)   邏輯左移指令SHR(SHift logical Right)   邏輯右移指令ROL(Rotate Left )   循環(huán)左移指令P58ROR(Rotate Right)   循環(huán)右移指令P58RCL(Rotate Left through Carry) 帶進(jìn)位循環(huán)左移RCR(Rotate Right through Carry) 帶進(jìn)位循環(huán)左移

36、MOVS(MOVe String)   串傳送指令STOS(STOre into String) 存入串指令LODS(LOad from string) 從串取指令REP(REPeat)   重復(fù)操作前CLD(CLear Direction flag) 清除方向標(biāo)志指令STD(SeT Direction flag)   設(shè)置方向標(biāo)志指令CMPS(CoMPare String)   串比較指令SCAS(SCAn String)   串掃描指令REPEREPZ(REPeat while Equal/

37、Zero)相等為零時(shí)重復(fù)操作前綴REPNEREPNZ(REPeat while Not Equal/Zero)不相等不為零進(jìn)重復(fù)前綴IN(INput)   輸入指令OUT(OUTput)   輸出指令JMP(JuMP)   無條件轉(zhuǎn)移指令JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ   條件轉(zhuǎn)移指令LOOP     循環(huán)指令P70LOOPZLOOPE   為零相等時(shí)循環(huán)指令

38、LOOPNZLOOPNE   不為零不相等時(shí)循環(huán)指令CALL     子程序調(diào)用指令RET(RETun)   子程序返回指令CLC(CLear Carry)   進(jìn)位位置0指令CMC(CoMplement Carry) 進(jìn)位位求反指令SRC(SeT Carry)   進(jìn)位位置1指令NOP(No OPeretion)   無操作指令HLT(HaLT)   停機(jī)指令OFFSET   返回偏移地址SEG 

39、0;   返回段地址EQU(=)   等值語句PURGE   解除語句DUP     操作數(shù)字段用復(fù)制操作符SEGMENT,ENDS   段定義指令A(yù)SSUME   段地址分配指令ORG     起始偏移地址設(shè)置指令$     地址計(jì)數(shù)器的當(dāng)前值PROC,ENDP   過程定義語句NAME,TITLE,END   程序開始結(jié)束語句MACR

40、O,ENDM   宏定義指令JZ   OPR /結(jié)果為零轉(zhuǎn)移 JNZ   OPR /結(jié)果不為零轉(zhuǎn)移 JS   OPR /結(jié)果為負(fù)轉(zhuǎn)移 JNS   OPR /結(jié)果為正轉(zhuǎn)移 JO   OPR /溢出轉(zhuǎn)移JNO   OPR /不溢出轉(zhuǎn)移 JP   OPR /結(jié)果為偶轉(zhuǎn)移JNP   OPR /結(jié)果為奇轉(zhuǎn)移 JC   OPR /有進(jìn)位轉(zhuǎn)移 

41、;JNC   OPR /無進(jìn)位轉(zhuǎn)移AHAL=AX(accumulator):累加寄存器BHBL=BX(base):基址寄存器CHCL=CX(count):計(jì)數(shù)寄存器DHDL=DX(data):數(shù)據(jù)寄存器SP(Stack Pointer):堆棧指針寄存器BP(Base Pointer):基址指針寄存器SI(Source Index):源變址寄存器DI(Destination Index):目的變址寄存器IP(Instruction Pointer):指令指針寄存器CS(Code Segment)代碼段寄存器DS(Data Segment):數(shù)據(jù)段寄存器SS(Stack Seg

42、ment):堆棧段寄存器ES(Extra Segment):附加段寄存器OF overflow flag 溢出標(biāo)志 操作數(shù)超出機(jī)器能表示的范圍表示溢出.溢出時(shí)為1. SF sign Flag 符號(hào)標(biāo)志 記錄運(yùn)算結(jié)果的符號(hào).結(jié)果負(fù)時(shí)為1. ZF zero flag 零標(biāo)志 運(yùn)算結(jié)果等于0時(shí)為1.否則為0. CF carry flag 進(jìn)位標(biāo)志 最高有效位產(chǎn)生進(jìn)位時(shí)為1.否則為0. AF auxiliary carry flag 輔助進(jìn)位標(biāo)志 運(yùn)算時(shí).第3位向第4位產(chǎn)生進(jìn)位時(shí)為1.否則為0. PF parity flag 奇偶標(biāo)志 運(yùn)算結(jié)果操作數(shù)位

43、為1的個(gè)數(shù)為偶數(shù)個(gè)時(shí)為1.否則為0. DF direcion flag 方向標(biāo)志 用于串處理.DF=1時(shí).每次操作后使SI和DI減小.DF=0時(shí)則增大. IF interrupt flag 中斷標(biāo)志 IF=1時(shí).允許CPU響應(yīng)可屏蔽中斷.否則關(guān)閉中斷. TF trap flag 陷阱標(biāo)志 用于調(diào)試單步操作.第1章              CPU資源和存儲(chǔ)器1.1     &#

44、160;         寄存器組1.1.1                      寄存器組1.       16位寄存器組4個(gè)16位數(shù)據(jù)寄存器:AX、BX、CX、DX,每個(gè)又可分為2個(gè)8位寄存器2個(gè)變址寄存器:DI

45、和SI2個(gè)指針寄存器:SP和BP4個(gè)段寄存器:ES、CS、SS和DS1個(gè)標(biāo)志寄標(biāo):FLAG1個(gè)指令指針寄存器:IP2.       32位寄存器組8個(gè)32位通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP,完全兼容16位寄存器。1.1.2                      通用

46、寄存器的作用通用寄存器可用于傳送和暫存數(shù)據(jù),也可參與算術(shù)邏輯運(yùn)算,并保存運(yùn)算結(jié)果。1.       數(shù)據(jù)寄存器數(shù)據(jù)寄存器主要用來保存操作數(shù)和運(yùn)算結(jié)果等信息,從而節(jié)省讀取操作數(shù)所需占用總線和訪問存儲(chǔ)器的時(shí)間。作用寄存器累加器(Accumulator),可用于乘,除,I/OEAX AX AL基址寄存器(Base Register),存儲(chǔ)器指針EBX BX計(jì)數(shù)寄存器(Count Register)。在循環(huán)和字符串操作中,用ECX和CX來控制循環(huán)次數(shù);在位操作中只能用CL來指明移動(dòng)的位數(shù)。ECX CX CL數(shù)據(jù)寄存器(Data Re

47、gister)。在進(jìn)行乘除運(yùn)算時(shí),它可作為默認(rèn)的操作數(shù)參與運(yùn)算,也可用于存放I/O的端口地址。EDX DX源變址寄存器:存儲(chǔ)器指針、串指令中的源操作數(shù)指針ESI SI源目標(biāo)變址寄存器::存儲(chǔ)器指針、串指令中的目標(biāo)操作數(shù)指針EDI DI基地址指針:存儲(chǔ)器指針、存取堆棧的指針EBP BP棧頂指針:堆棧的棧頂指針ESP SP2.       變址和指針寄存器變址和指針寄存器主要用于存放存儲(chǔ)單元在段內(nèi)的偏移量,用它們可表達(dá)多種訪問內(nèi)存的尋址方式。變址和指針寄存器不可分割成8位寄存器。作為通用寄存器,它們也可存儲(chǔ)算術(shù)邏輯運(yùn)算的操作數(shù)和

48、運(yùn)算結(jié)果。1.1.3                      段寄存器的作用32位處理器共有6個(gè)16位段寄存器CS、DS、ES、SS、FS、GS段寄存器段的名稱及其含義CS代碼段(Code Segment Register):存儲(chǔ)程序指令序列的段DS數(shù)據(jù)段(Data Segment Register):存儲(chǔ)程序指令執(zhí)行時(shí)所需要數(shù)據(jù)的段SS堆棧段(Stack Segment R

49、egister):實(shí)施堆棧操作的段ES附加數(shù)據(jù)段(Extra Segment Register):存放程序執(zhí)行時(shí)所需要的數(shù)據(jù)FS附加數(shù)據(jù)段:(80386及其以后CPU所增加的)GS附加數(shù)據(jù)段:(80386及其以后CPU所增加的)1.1.4                      專用寄存器的作用位標(biāo)志位作用0CF(Carry Flag)進(jìn)位標(biāo)志:如果運(yùn)算結(jié)果的最高位產(chǎn)生了一個(gè)

50、進(jìn)位或借位,值為11  2PF(Parity Flag)奇偶標(biāo)志:如果1的個(gè)數(shù)為偶數(shù),則值為13  4AF(Auxiliary Carry Flag)輔助進(jìn)位標(biāo)志:在發(fā)生下列情況時(shí)值為11.       字操作時(shí),低字節(jié)向高字節(jié)進(jìn)位或借位2.       在字節(jié)操作時(shí),低4位向高4位進(jìn)位或借位5  6ZF(Zero Flag)零標(biāo)志:運(yùn)算結(jié)果是否為0,若為0,值為17SF(Sign Flag)符號(hào)

51、標(biāo)志:反映運(yùn)算結(jié)果的符號(hào)位,與運(yùn)算結(jié)果的最高位相同。即結(jié)果為正則為0.8TF(Trap Flag)陷阱標(biāo)志:置1時(shí),CPU進(jìn)入單步執(zhí)行方式。這種方式主要用于程序的調(diào)試。9IF(Interrupt-enable Flag)中斷允許標(biāo)志:用來決定CPU是否響應(yīng)其外部的可屏蔽中斷發(fā)出的中斷請求。但不管該標(biāo)志為何值,CPU都必須響應(yīng)其外部的不可屏蔽中斷所發(fā)出的中斷請求,以及CPU內(nèi)部產(chǎn)生的中斷請求。IF=0時(shí),CPU可以響應(yīng)其外部的的可屏蔽中斷發(fā)出的中斷請求IF=1時(shí),CPU不響應(yīng)其外部的可屏蔽中斷發(fā)出的中斷請求10DF(Direction Flag)決定在串操作指令執(zhí)行時(shí)有關(guān)指針寄存器發(fā)生調(diào)整的方向

52、。DF=0,SI(或DI)增加1、2、4DF=1,SI(或DI)減少1、2、411OF(Overflow Flag)溢出標(biāo)志:用于反映有符號(hào)數(shù)算術(shù)運(yùn)算所得結(jié)果是否溢出。溢出置1(溢出和進(jìn)位不同,要注意)12IOPL(I/O Privilege Level)I/O特權(quán)標(biāo)志:指定要求執(zhí)行I/O指令的特權(quán)級。如果當(dāng)前的特權(quán)級別在數(shù)值上小于等于IOPL的值,則可執(zhí)行,否則發(fā)生一個(gè)保護(hù)異常。1314NT(Nested Task)嵌套任務(wù)標(biāo)志:控制中斷返回指令I(lǐng)RET的執(zhí)行1.       當(dāng)NT=0時(shí),用堆棧中的值恢復(fù)EFLAGS C

53、S和EIP,執(zhí)行常規(guī)的中斷返回操作2.       當(dāng)NT=1時(shí),通過任務(wù)轉(zhuǎn)換實(shí)現(xiàn)中斷返回。15  16RF(Restart Flag)重啟動(dòng)標(biāo)志:用來控制是否接受調(diào)試故障。RF=0時(shí),表示“接受”調(diào)試故障。在成功執(zhí)行完一條指令后,處理機(jī)把RF置為0,當(dāng)接受到一個(gè)非調(diào)試故障時(shí),處理機(jī)就把它置為1。17VM(Virtual 8086 Mode)虛擬8086方式標(biāo)志:如果為1,則表示處理機(jī)處于虛擬8086方式下工作狀態(tài),否則處理機(jī)處于一般保護(hù)方式下的工作狀態(tài)。18AC(Alignment Check)隊(duì)列檢查

54、標(biāo)志:為1表示在一個(gè)不是字和雙字的邊界尋址一個(gè)字或雙字。19VIF(Virtual Interrupt Flag)虛擬中斷標(biāo)志:對Pentium以上處理器有效。是在虛擬方式下中斷標(biāo)志的拷貝。20VIP(Virtual Interupt Pause)虛擬中斷暫掛標(biāo)志:用于多任務(wù)環(huán)境下,給操作系統(tǒng)提供虛擬虛擬中斷標(biāo)志和中斷暫掛信息21ID(Identification)標(biāo)識(shí):指示Pentium及以上處理器支持指令“CPUID”。該指令可給出CPU的有關(guān)信息,如版本號(hào)和制造商等。22  23  24  25  26

55、60; 27  28  29  30  31  32   1.2               存儲(chǔ)器的管理模式1.2.1                

56、;      16位微機(jī)的內(nèi)存管理模式1.       存儲(chǔ)器的分段計(jì)算機(jī)的內(nèi)存單元是以“字節(jié)”為最小單位進(jìn)行線性編址的。物理地址是一個(gè)無符號(hào)的二進(jìn)制數(shù)。通常用十六進(jìn)制來表示。16位CPU內(nèi)部有20根地址線,其編碼區(qū)間為00000H0FFFFFH,所以它可直接訪問的物理空間為1MB(220)。16位微機(jī)把內(nèi)存空間劃分成若干個(gè)邏輯段,每個(gè)段的要求如下:l         

57、0; 邏輯段起始地址(簡稱段地址)必須是16的倍數(shù),即最低4位二進(jìn)制數(shù)必須全為0;l           邏輯段的最大容量為64KB;由此得出1MB內(nèi)存最多可分成64K個(gè)段(65535個(gè)相互重疊的段),至少可分成16個(gè)互不重疊的段。2.       物理地址的形成方式物理地址段地址×16偏移量(即段首地址左移4位再加上偏移地址)匯編語言程序中,存儲(chǔ)單元通常不是用其物理地址標(biāo)識(shí)的,而是用邏輯地址標(biāo)識(shí)

58、。邏輯地址的段地址由段寄存器給出,偏移量可由各類指針寄存器(IP SP BP或BX等)給出。3.       段寄寄存器的引用表2.3 段寄存器及其指針寄存器的引用關(guān)系vip訪問存儲(chǔ)器方式缺省的段寄存器可選用的段寄存器偏移量取指令CS IP堆棧操作SS SP一般取操作數(shù)DSCS ES SS有效地址串操作源操作數(shù)DS SI-index目標(biāo)操作數(shù)ES DI使用指針寄存器BPSSCS DS ES有效地址l       &#

59、160;   取指令所用的段寄存器和偏移量一定是用CS和IP;l           堆棧操作所用的段寄存器和偏移量一定是SS和SP;l           串操作的源操作數(shù)和目標(biāo)操作數(shù)所用的段寄存器和偏移量分別是DS和SI,ES和DI;4.       存儲(chǔ)單元的內(nèi)容l

60、0;          一個(gè)字節(jié)的內(nèi)容是該字節(jié)單元內(nèi)儲(chǔ)存的二進(jìn)制信息;l           一個(gè)字的內(nèi)容是由該字地址所指向的單元及其后斷一個(gè)單元的內(nèi)容拼接而成;l           一個(gè)雙字的內(nèi)容是由該字地址所指向的單元及其后繼3個(gè)單元的內(nèi)容拼接而成;拼接“字內(nèi)容”時(shí),按“高

61、高低低”的原則來處理(這與我們平時(shí)的習(xí)慣不一樣,要特別注意):內(nèi)存地址12340H12341H12342H12343H12344H。內(nèi)容(值)12H34H56H78H90H。在上圖中:l           字節(jié)12340H的內(nèi)容是12H,12341H的內(nèi)容是34Hl           字12340H的內(nèi)容是3412H,12341H的內(nèi)容是5643H(“高低”)l 

62、          雙字12340H的內(nèi)容是78563412H,12341H的內(nèi)容是90785634H(“高高低低”)1.2.2                      32位微機(jī)的內(nèi)存管理模式提供了兩種模式:實(shí)模式和保護(hù)模式1.    

63、   物理地址的計(jì)算方式l           實(shí)模式與16位微機(jī)一致。l           保護(hù)模式段地址長32位,其值可以不是16的倍數(shù),每個(gè)段最大容量可達(dá)4GB。段寄存器的值是表示段地址的“選擇器”(Selector),物理地址就是該段地址加上段內(nèi)偏移。2.       

64、段寄存器的引用l           實(shí)模式下,段寄存器的值就是段地址。l           保護(hù)模式下,段寄存器的值不是段地址,是段地址的“選擇器”,它間接指出一個(gè)32位段地址。l            3.    

65、   存儲(chǔ)單元的內(nèi)容與16位微機(jī)完全一致。習(xí)題1.       在16位CPU中,有哪些8位寄存器、16位寄存器?哪些16位寄存器可分為兩個(gè)8位寄存器來使用?16位寄存器:AX BX CX DX DI SI BP SP ES CS SS DS FLAGS IP。其中AX BX CX DX可以分為兩個(gè)8位寄存器。32位寄存器:除以上的E類寄存器外(均由32個(gè)二進(jìn)制位組成),還增加了兩個(gè)段寄存器: FS GS2.       同1

66、6位CPU相比,在32位CPU中,擴(kuò)展了哪些寄存器?哪些寄存器的位數(shù)沒變?所增加的寄存器是什么?擴(kuò)展的寄存器主要是通用寄存器和指令指針寄存器,還有標(biāo)志寄存器。段寄存器的位數(shù)沒變,增加了兩個(gè)段寄存器:FS GS3.       簡述各通用寄存器的主要功能數(shù)據(jù)寄存器l           寄存器EAX AX AL通常稱為累加器,用累加器運(yùn)算可加快處理速度。累加器可用于乘、除、I/O等操作。l  

67、60;        寄存器EBX BX稱為基地址寄存器,可作為存儲(chǔ)器指針。l           ECX CX CL稱為計(jì)數(shù)寄存器。在循環(huán)和字符串操作中,用ECX和CX來控制循環(huán)次數(shù);在位操作中只能用CL來指明移動(dòng)的位數(shù)。l           EDX和DX稱為數(shù)據(jù)寄存器。在進(jìn)行乘、除運(yùn)算時(shí),它可

68、作為默認(rèn)的操作數(shù)參與運(yùn)算,也可用于存放I/O端口地址。變址和指針寄存器l           SI和DI稱為變址寄存器,它們可作為一般的存儲(chǔ)器指針使用。寄存器名稱寄存器號(hào)主要用途累加器EAX AX AL乘、除、I/O等操作,中間結(jié)果的緩存基地址寄存器EBX BX在數(shù)據(jù)段中作基地址指針計(jì)數(shù)器ECX CX CL循環(huán)計(jì)數(shù)器、重復(fù)操作計(jì)數(shù)器、移位操作計(jì)數(shù)器數(shù)據(jù)寄存器EDX DX字的乘、除運(yùn)算,間接的輸入輸出源變址寄存器ESI SI存儲(chǔ)器指針、串指令中的源操作數(shù)指針目標(biāo)變址寄存器EDI DI存儲(chǔ)

69、器指針、串指令中的目的操作數(shù)指針基地址指針EBP BP存儲(chǔ)器指針、存取堆棧的指針棧頂指針ESP SP堆棧的棧頂指針4.       簡述各段寄存器所指段的含義段寄存器段的名稱及其含義CS代碼段(Code Segment Register):存儲(chǔ)程序指令序列的段DS數(shù)據(jù)段(Data Segment Register):存儲(chǔ)程序指令執(zhí)行時(shí)所需要數(shù)據(jù)的段SS堆棧段(Stack Segment Register):實(shí)施堆棧操作的段ES附加數(shù)據(jù)段(Extra Segment Register):存放程序執(zhí)行時(shí)所需要的數(shù)據(jù)FS附加數(shù)據(jù)段

70、:(80386及其以后CPU所增加的)GS附加數(shù)據(jù)段:(80386及其以后CPU所增加的) 5.       IP/EIP寄存器的用作是什么?它是“計(jì)算機(jī)組成原理”課中的什么概念在CPU中的體現(xiàn)?它屬于專用寄存器,叫指令指針寄存器,用來存放下次將要執(zhí)行的指令在代碼段的偏移量。當(dāng)80386及其高檔處理器處于保護(hù)模式時(shí),其指令指針寄存器是32位的EIP。在實(shí)模式下,由于每個(gè)段的最大范圍是64K,所以,EIP中的高16位肯定都為0,相當(dāng)于只用其低16位來反映程序中指令的執(zhí)行次序,這樣,EIP低16位就與先前CPU中的IP作用相同。6.       在標(biāo)志寄存器中,用于反映運(yùn)算結(jié)果屬性的標(biāo)志位有哪些?它們每一位所表示的含義是什么?在Debug環(huán)境下用什么符號(hào)來表示之?見56頁的表反映運(yùn)算結(jié)果屬性的標(biāo)志位主要有:CF(進(jìn)或借位置1)AF(字操作時(shí),低字節(jié)向高字節(jié)進(jìn)或借位,字節(jié)操作時(shí),低4位向高4位進(jìn)借位時(shí)置1)PF(運(yùn)算結(jié)果中1的個(gè)數(shù)為偶時(shí)

溫馨提示

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

評論

0/150

提交評論