當前位置:編程學習大全網 - 編程語言 - 論總語域中各語域的意義

論總語域中各語域的意義

32位CPU包含以下寄存器:

4個數據寄存器(EAX、EBX、ECX和EDX),2個索引和指針寄存器(esI和EDI),2個指針寄存器(ESP和EBP),6個段寄存器(ES、CS、SS、DS、FS和GS),1指令指針寄存器(EIP),1標誌寄存器(EFlags)。

1、數據寄存器數據寄存器主要用於存儲操作數和運算結果等信息,從而節省了讀取操作數和訪問內存所需的時間。32位CPU有四個32位通用寄存器EAX、EBX、ECX和EDX。對低位16位數據的訪問不會影響高位16位數據。這些低位16位寄存器分別命名為AX、BX、CX、DX,與之前CPU中的寄存器壹致。四個16位寄存器可以分為八個獨立的8位寄存器(AX: AH-AL,BX: BH-BL,CX: CH-CL,DX: DH-DL),每個寄存器都有自己的名字,可以獨立訪問。程序員可以利用數據寄存器的這種“可分離和可組合”的特性來靈活地處理字/字節信息。

寄存器EAX通常稱為累加器,用累加器運算可能花費的時間更少。可用於乘法、除法、輸入/輸出等運算,使用頻率高;基址寄存器EBX被稱為基址寄存器。它可以用作內存指針;寄存器ECX被稱為計數寄存器。在循環和字符串操作中,應該用它來控制循環次數;在位操作中,移位多個位時,要用CL表示移位的位數;寄存器EDX被稱為數據寄存器。乘法和除運算時,可以作為默認操作數參與運算,也可以用來存放I/O的端口地址

在16位CPU中,AX、BX、CX和DX不能作為基址和變址寄存器來存儲存儲單元的地址。在壹個32位CPU中,它的32位寄存器EAX、EBX、ECX和EDX不僅可以傳輸數據和暫存算術邏輯運算結果,還可以用作指針寄存器,所以這些32位寄存器更具有通用性。

2.索引寄存器32位CPU有兩個32位通用寄存器ESI和EDI。低16位對應於前壹個CPU中的SI和DI,對低16位的訪問不影響高16位。

寄存器ESI、EDI、SI、DI稱為變址寄存器,主要用於存儲壹個段中存儲單元的偏移量,它們可以用來實現存儲操作數的各種尋址方式,為不同地址形式的存儲單元的存取提供了方便。索引寄存器不能劃分為8位寄存器。作為通用寄存器,它還可以存儲算術邏輯運算的操作數和運算結果。它們可以用作通用內存指針。在字符串操作指令的執行過程中,對它們有特定的要求,它們也有特殊的功能。

3.指針寄存器的低16位對應於前壹CPU中的BP和SP。對低位16位數據的訪問不會影響高位16位數據。32位CPU有兩個32位通用寄存器EBP和ESP。它們主要用於訪問棧中的存儲單元,規定EBP是基指針寄存器,可以直接訪問棧中的數據;ESP是壹個棧指針寄存器,用它只能訪問棧頂。

寄存器EBP、ESP、BP、SP稱為指針寄存器,主要用於存儲堆棧中存儲單元的偏移量。它們可用於尋址各種存儲器操作數,並為以不同地址形式訪問存儲器單元提供便利。指針寄存器不能劃分為8位寄存器。作為通用寄存器,它還可以存儲算術邏輯運算的操作數和運算結果。

4.分段寄存器

根據存儲器分段的管理模式來設置分段寄存器。內存單元的物理地址由段寄存器的值和偏移量組成,這樣兩個位數較少的值就可以組合成壹個可以訪問更大物理空間的內存地址。CPU內部的段寄存器:

ECS-代碼段寄存器,其值為代碼段的段值;EDS-數據段寄存器,其值為數據段的段值;EES-額外段寄存器,其值為附加數據段的段值;ESS-棧段寄存器,其值為棧段的段值;EFS-額外段寄存器,其值為附加數據段的段值;EGS-額外段寄存器,其值是附加數據段的段值。

在16位CPU系統中,只有四個段寄存器,所以程序在任何時候最多只能訪問四個正在使用的段。在32位微機系統中,它有6個段寄存器,所以在這種環境下開發的程序最多可以同時訪問6個段。

32位CPU有兩種不同的工作模式:實模式和保護模式。在每種模式下,段寄存器的作用是不同的。有關規定簡述如下:

實模式:前四個段寄存器CS、DS、ES、SS的含義與之前CPU中對應的段寄存器完全相同,存儲單元的邏輯地址仍然是“段值:偏移量”的形式。為了訪問內存段中的數據,需要使用該段的寄存器和存儲單元的偏移量。保護模式:在這種模式下,情況要復雜得多。載入段寄存器的不再是段值,而是壹個名為“Selector”的值。。

5、指令指針寄存器32位CPU將指令指針擴展到32位並記錄為EIP。EIP的低16位具有與先前CPU中的IP相同的功能。

指令指針EIP和IP(指令指針)是存儲下次要執行的指令的代碼段中的偏移量。在具有預取功能的系統中,下壹次要執行的指令通常被預取到指令隊列中,除非發生分支。因此,在理解它們的功能時,不考慮指令隊列的存在。

6.標誌寄存器

1.運算結果標誌位1和進位標誌CF(進位標誌)主要用來反映運算是產生進位還是借位。如果運算結果的最高有效位產生進位或借位,則其值為1,否則其值為0。該標誌位的用途包括:多字(字節)數的加減、無符號數的比較、移位運算、字(字節)間移位、改變CF值的指令。

2.奇偶標誌PF用於反映運算結果中“1”數的奇偶性。如果“1”的數是偶數,PF的值就是1,否則就是0。使用PF,可以執行奇偶校驗或生成奇偶校驗位。在數據傳輸過程中,為了提高傳輸的可靠性,如果采用奇偶校驗的方法,可以使用這個標誌位。

3.輔助進位標誌AF(進位標誌)在下列情況下,值AF(輔助進位標誌AF)設置為1,否則其值為0:

(1),字操作時低字節進位或借位高字節時;(2)當在字節操作期間發生從低4位到高4位的進位或借位時。對於上述六個運算結果標誌位,在壹般編程條件下,標誌位CF、ZF、SF和OF的頻率較高,而標誌位PF和AF的頻率較低。

4.零標誌ZF(Zero Flag)零標誌ZF用於反映運算結果是否為0。如果運算結果為0,則其值為1,否則其值為0。當判斷運算結果是否為0時,可以使用該標誌位。

5.符號標誌SF用於反映運算結果的符號位,與運算結果的最高位相同。在微機系統中,有符號數是用代碼表示的,所以SF也反映了運算結果的符號。當運算結果為正時,SF的值為0,否則為1。

6.的溢出標誌(Overflow flag)的溢出標誌用於反映有符號數的加減結果是否溢出。如果運算結果超出了當前操作數所能表示的範圍,則稱為溢出,將的值設置為1,否則將的值清零。

“溢出”和“進位”是兩個不同含義的概念,不要混淆。如果不清楚,請參考《計算機組成原理》課程中的相關章節。

第二,狀態控制標誌位用於控制CPU的運行,只能通過特殊指令改變。

1,跟蹤標誌TF(Trap標誌)當跟蹤標誌TF設置為1時,CPU進入單步執行模式,即每執行壹條指令,產生壹個單步中斷請求。這種方法主要用於調試程序。

指令系統中沒有專門的指令來改變標誌位TF的值,但是程序員可以用其他方式改變它的值。

2.中斷使能標誌中斷使能標誌IF用於確定CPU是否響應CPU外部屏蔽中斷發送的中斷請求。但是,無論標誌的值如何,CPU都必須響應CPU外部的非屏蔽中斷發出的中斷請求和CPU內部產生的中斷請求。具體規定如下:(1),當IF=1時,CPU可以響應CPU外屏蔽中斷發出的中斷請求;(2)當IF=0時,CPU不響應來自CPU外屏蔽中斷的中斷請求。CPU的指令系統中也有專門的指令來改變標誌位IF的值。

3.方向標誌DF(Direction Flag)方向標誌DF用於確定執行字符串操作指令時指針寄存器調整的方向。具體規定見第5.2.11節-管柱操作說明。在微型計算機的指令系統中,還提供特殊指令來改變標誌位DF的值。

3.32位標誌寄存器中添加的標誌位1和I/O特權標誌IOPL(I/O特權級別)I/O特權標誌由兩個二進制位表示,也稱為I/O特權級別字段。該字段指定需要I/O指令的特權級別。如果當前特權級別小於或等於IOPL的值,則可以執行I/O指令,否則將發生保護異常。

2.嵌套任務標誌NT用於控制中斷返回指令IRET的執行。具體規定如下:

(1),當NT=0時,用棧中保存的值恢復EFLAGS、CS和EIP,執行例行中斷返回操作;

(2)當NT=1時,通過任務轉換實現中斷返回。

3.重啟標誌RF(重啟標誌)重啟標誌RF用於控制是否接受調試故障。規定:當RF=0時,表示“接受”調試故障,否則拒絕。成功執行壹條指令後,處理器將RF設置為0,當接收到非調試故障時,處理器將其設置為1。

4.虛擬8086模式標誌VM(虛擬8086模式)如果該標誌的值為1,則表示處理器工作在虛擬8086模式,否則,處理器工作在壹般保護模式。

匯編指令集unity,通用指令1。通用數據傳輸指令。MOV傳輸字或字節。MOVSX首先擴展符號,然後傳輸它們。MOVZX首先擴展零,然後轉移它們。PUSH將單詞推送到堆棧上。從堆棧中彈出單詞。普莎轉移AX,CX,DX,BX,SP,BP,Si,Di依次推入棧中。POPA依次將Di、Si、BP、SP、BX、DX、CX和AX推出堆棧。Pushed將EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI依次推入堆棧。POPAD推動EDI、ESI、EBP、ESP、EBX和EDX。EAX依次彈出堆棧。BSWAP交換32位寄存器中字節的順序。XCHG交換字或字節。(至少有壹個操作數是寄存器,段寄存器不能用作操作數)CMPXCHG比較和交換操作數。(第二個操作數必須是累加器AL/AX/EAX) XADD先交換,再累加。(結果在第壹個操作數中)XLAT字節查找表轉換。BX指向壹個256字節表的開頭,AL是表的索引值(0-255,即0-FFH);返回AL是查找表的結果。([BX+艾爾]-& gt;鋁)

2.I/O端口傳輸指令。輸入/輸出端口輸入。(語法:in accumulator,{port number │DX}) OUT I/O端口輸出。(語法:OUT {port number │DX},accumulator)當I/O端口由immediate mode指定時,其範圍為0-255;當寄存器DX指定時,其範圍為0-65535。3.目的地址傳送指令。LEA加載有效地址。例子:LEA DX,string將偏移地址存儲在DX中。LDS來傳遞目標指針,並將指針內容加載到DS中。例子:LDS SI,string將段地址:偏移地址存儲在DS:SI中。LES來傳遞目標指針,並將指針內容加載到ES中。例子:LES DI,string存儲段地址:ESDI的偏移地址。LFS來傳遞目標指針,並將指針內容加載到FS中。例子:LFS迪,弦樂;將段地址:偏移地址存儲在FSD中。LGS來傳遞目標指針,並將指針內容加載到GS中。例子:LGS迪,弦樂;存儲段地址:GSDI的偏移地址。LSS傳送目標指針,並將指針內容加載到SS中。例子:LSS迪,弦樂;將段地址:偏移地址保存到SSDI。

4.標誌轉移指令。LAHF國旗註冊轉讓,載入國旗進入啊。SAHF標誌寄存器進行傳送,並將AH的內容加載到標誌寄存器中。PUSHF標誌被放入堆棧。POPF國旗被放在堆棧上。PUSHD 32位標誌被放入堆棧。POPD 32位標誌被放入堆棧。

第二,算術運算指令加法加法。ADC ASCII碼調整,帶進位加法。INC和1。AAA加成。DAA加法的小數調整。減法。SBB用借位減法。十二月減去1。NEC否定(帶0)。CMP比較。(兩個操作數相減,只修改標誌位,不發回結果)。AAS減法的ASCII碼調整。DAS減法的小數調整。MUL無符號乘法。IMUL整數乘法。

以上兩項,結果送回AH和AL(字節運算),或者DX和AX(字運算),AAM乘法的ASCII碼調整,DIV無符號除法,IDIV整數除法。以上兩項,結果送回:商送回AL,余數送回AH,(字節運算);Or商返回AX,余數返回DX,(字運算)。

AAD司ASCII碼調整。CBW字節被轉換成單詞。(AL中字節的符號擴展為AH) CWD字轉換為雙字。(AX中單詞的符號擴展為DX) CWDE單詞轉換為雙字。(AX中單詞的符號擴展到EAX) CDQ雙字擴展。(EAX的文字符號延伸到EDX)

第三,邏輯運算指令和AND運算。或或運算。異或XOR運算。不是倒置。測試測試。(兩個操作數都是AND運算,只有標誌位被修改,沒有反饋結果)。SHL邏輯向左移動。薩爾算術向左移動。(=SHL) SHR邏輯右移。SAR算法向右移動。(=SHR) ROL循環向左移動。ROR循環向右移動。RCL通過進位循環向左移動。RCR正好通過進位周期。以上八條移位指令的移位次數可以達到255次。移位壹次,可以直接用操作碼。比如SHL AX,1。Shift >: 1次,則移位次數由寄存器CL給出,如MOV CL,04 SHL AX,CL。

四、字符串指令DS:SI源字符串段寄存器:源字符串索引。目標字符串段寄存器:目標字符串索引。CX重復計數器。AL/AX掃描值。d標誌0表示SI和DI應在重復操作中自動遞增;1表示應該自動減。

z標誌用於控制掃描或比較操作的結束。MOVS弦傳輸。(MOVSB傳輸字符。MOVSW傳輸文字。MOVSD傳輸雙字。)CMPS字符串比較。(CMPSB比較字符。CMPSW比較詞。)SCAS字符串掃描。將AL或AX的內容與目標字符串進行比較,比較結果反映在標誌位中。LODS被載入字符串。源字符串中的元素(字或字節)被逐個加載到AL或AX中。(LODSB傳輸字符。LODSW傳送文字。LODSD傳輸雙字。)STOS救了繩子。這是LODS的逆過程。CX/ECX代表

動詞 (verb的縮寫)程序轉移指令1。簡單條件轉移指令JZ(或JE)OPR——結果為零轉移,測試條件ZF=1 JNZ(或JNE)OPR——測試條件ZF = 0 jsopr——結果為負轉移,測試條件SF = 1 jnsopr——結果。測試條件= jnoopr -無溢出傳輸,測試條件SF = 0 jpopr -結果是均勻傳輸。測試條件SF = 1JNOPPR -結果為奇數傳輸,測試條件SF=0

2.無符號比較條件分支指令(以下指令常為CMP OPD,OPS後的指令根據比較結果轉移)JB(或JNAE)OPD——小於或不大於等於轉移JNB(或JAE)OPD——不小於或大於等於轉移JA(或NJBE)OPD——

3.有符號比較條件分支指令JL(或JNGE)——小於或不大於或等於轉移JNL(或JGE)——不小於或大於或等於轉移JG(或NJLE)。

不及物動詞調用子程序和返回指令調用子程序調用指令RET子程序返回指令

不及物動詞其他指令偏移量-返回偏移量地址seg-返回段地址EQU(=)。-Ends-段定義指令假設-段地址分配指令組織。OC,ENDP -過程定義語句名,標題,end -程序開始end語句宏,ENDM。

七、條件標記ZF零標記——當結果為負時,SF=1,否則,SF=0。AF輔助進位標誌——第三位在運算過程中有進位值,設置AF=1,否則AF=0 PF奇偶標誌——當結果操作數為偶數“65438”時。否則,SF=0。溢出時,CF進位標誌最高有效位產生進位值,比如執行加法指令時,MSB進位,設置為CF = 1;否則,CF=0。OF overflow flag——如果操作數結果超出了機器可以表達的範圍,就會溢出,設置OF=1,否則,OF=0。

/Java-home/blog/static/113844320099247571920/

  • 上一篇:計算機科學與技術屬於什麽類
  • 下一篇:計算機考研:數據結構常用算法解析(7)?
  • copyright 2024編程學習大全網