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

下載本文檔

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

文檔簡介

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

2、60;是"基地址"(base)寄存器, 在內(nèi)存尋址時存放基地址。ECX   是計數(shù)器(counter), 是重復(REP)前綴指令和LOOP指令的內(nèi)定計數(shù)器。EDX    是數(shù)據(jù)(data),總是被用來放整數(shù)除法產(chǎn)生的余數(shù)。ESI/EDI  分別叫做"源/目標索引寄存器"(source/destination index),因為在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目標串.EBP  是"基址指針"(BASE

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

4、160;即可.ESP   專門用作堆棧指針,被形象地稱為棧頂指針,堆棧的頂部是地址小的區(qū)域,壓入堆棧的數(shù)據(jù)越多,ESP也就越來越小。在32位平臺上,ESP每次減少4字節(jié)。對于8086計算機,由于寄存器是十六位的,所以限制了尋址僅僅為二的十六次方,也就是十六個二進制位,也就是64K內(nèi)存。但是對于我們編程使用來說是不夠的。8086的解決辦法是將20位的物理地址分為段地址和段內(nèi)偏移地址表示。也就是說段地址乘以十六,加上段內(nèi)偏移地址行程一個物理地址。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指令把一個字節(jié)或字的操作數(shù)從源地址src傳送至目的地址dest。MOVSX->extended move with sign data MOVZX->extended move with zero dataPUSH->

6、;push POP->pop進棧出棧指令PUSHA->push all POPA->pop all PUSHAD->push all data POPAD->pop all data BSWAP->byte swapXCHG->exchange交換指令用來將源操作數(shù)和目的操作數(shù)內(nèi)容交換,操作數(shù)可以是字、也可以是字節(jié),可以在通用寄存器與通用寄存器或存儲器之間對換數(shù)據(jù),但不能在存儲器與存儲器之間對換數(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.輸入輸出端口傳送指令IN->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.標志傳送指令LAHF->load AH from flag SAHF->save AH to flag PUSHF->push flag POPF->pop flag PUSHD->push d

9、flag POPD->pop dflag二、算術運算指令ADD->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 三、邏輯運算指令AND->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>中斷指令INT->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 先符號擴展,再傳送.MOVZX 先零擴展,再傳送.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é).( 至少有一個操作數(shù)為寄存器,段寄存器不可作為操作數(shù))CMPXCHG 比較并交換操作數(shù).( 第二個操作數(shù)必須為累加器AL/AX/EAX )XADD 先交換再累加.( 結果在第一個操作數(shù)里 )XLAT 字節(jié)查

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

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

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

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

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

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

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

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

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

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

32、) 指針送寄存器和DS指令LES(Load ES with pointer) 指針送寄存器和ES指令LAHF(Load AH with Flags) 標志位送AH指令SAHF(Store AH into Flgs) AH送標志寄存器指令PUSHF(PUSH the Flags)   標志進棧指令POPF(POP the Flags)   標志出棧指令ADD     加法指令ADC     帶進位加法指令INC     加1指令SUB(S

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

34、ount Byte to Word) 字節(jié)轉(zhuǎn)換為字指令CWD(Count Word to Doble word) 字轉(zhuǎn)換為雙字指令DAA   壓縮的BCD碼加法十進制調(diào)整指令DAS   壓縮的BCD碼減法十進制調(diào)整指令AAA   非壓縮的BCD碼加法十進制調(diào)整指令AAS   非壓縮的BCD碼加法十進制調(diào)整指令AND     邏輯與指令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) 帶進位循環(huán)左移RCR(Rotate Right through Carry) 帶進位循環(huán)左移

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

37、Zero)相等為零時重復操作前綴REPNEREPNZ(REPeat while Not Equal/Zero)不相等不為零進重復前綴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   為零相等時循環(huán)指令

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

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

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

41、;JNC   OPR /無進位轉(zhuǎn)移AHAL=AX(accumulator):累加寄存器BHBL=BX(base):基址寄存器CHCL=CX(count):計數(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 溢出標志 操作數(shù)超出機器能表示的范圍表示溢出.溢出時為1. SF sign Flag 符號標志 記錄運算結果的符號.結果負時為1. ZF zero flag 零標志 運算結果等于0時為1.否則為0. CF carry flag 進位標志 最高有效位產(chǎn)生進位時為1.否則為0. AF auxiliary carry flag 輔助進位標志 運算時.第3位向第4位產(chǎn)生進位時為1.否則為0. PF parity flag 奇偶標志 運算結果操作數(shù)位

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

61、高低低”的原則來處理(這與我們平時的習慣不一樣,要特別注意):內(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位微機的內(nèi)存管理模式提供了兩種模式:實模式和保護模式1.    

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

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

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

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

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

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

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

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

溫馨提示

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

最新文檔

評論

0/150

提交評論