8086 有14個(gè)16位寄存器,這14個(gè)寄存器按其用途可分為(1)通用寄存器、(2)指令指針、(3)標志寄存器和(4)段寄存器等4類(lèi)。
(1)通用寄存器有8個(gè), 又可以分成2組,一組是數據寄存器(4個(gè)),另一組是指針寄存器及變址寄存器(4個(gè)).數據寄存器分為:AH&AL=AX(accumulator):累加寄存器,常用于運算;在乘除等指令中指定用來(lái)存放操作數,另外,所有的I/O指令都使用這一寄存器與外界設備傳送數據.BH&BL=BX(base):基址寄存器,常用于地址索引;CH&CL=CX(count):計數寄存器,常用于計數;常用于保存計算值,如在移位指令,循環(huán)(loop)和串處理指令中用作隱含的計數器.DH&DL=DX(data):數據寄存器,常用于數據傳遞。他們的特點(diǎn)是,這4個(gè)16位的寄存器可以分為高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。
這2組8位寄存器可以分別尋址,并單獨使用。另一組是指針寄存器和變址寄存器,包括:SP(Stack Pointer):堆棧指針,與SS配合使用,可指向目前的堆棧位置;BP(Base Pointer):基址指針寄存器,可用作SS的一個(gè)相對基址位置;SI(Source Index):源變址寄存器可用來(lái)存放相對于DS段之源變址指針;DI(Destination Index):目的變址寄存器,可用來(lái)存放相對于 ES 段之目的變址指針。
這4個(gè)16位寄存器只能按16位進(jìn)行存取操作,主要用來(lái)形成操作數的地址,用于堆棧操作和變址運算中計算操作數的有效地址。(2) 指令指針I(yè)P(Instruction Pointer)指令指針I(yè)P是一個(gè)16位專(zhuān)用寄存器,它指向當前需要取出的指令字節,當BIU從內存中取出一個(gè)指令字節后,IP就自動(dòng)加1,指向下一個(gè)指令字節。
注意,IP指向的是指令地址的段內地址偏移量,又稱(chēng)偏移地址(Offset Address)或有效地址(EA,Effective Address)。(3)標志寄存器FR(Flag Register)8086有一個(gè)18位的標志寄存器FR,在FR中有意義的有9位,其中6位是狀態(tài)位,3位是控制位。
OF: 溢出標志位OF用于反映有符號數加減運算所得結果是否溢出。如果運算結果超過(guò)當前運算位數所能表示的范圍,則稱(chēng)為溢出,OF的值被置為1,否則,OF的值被清為0。
DF:方向標志DF位用來(lái)決定在串操作指令執行時(shí)有關(guān)指針寄存器發(fā)生調整的方向。 IF:中斷允許標志IF位用來(lái)決定CPU是否響應CPU外部的可屏蔽中斷發(fā)出的中斷請求。
但不管該標志為何值,CPU都必須響應CPU外部的不可屏蔽中斷所發(fā)出的中斷請求,以及CPU內部產(chǎn)生的中斷請求。具體規定如下: (1)、當IF=1時(shí),CPU可以響應CPU外部的可屏蔽中斷發(fā)出的中斷請求; (2)、當IF=0時(shí),CPU不響應CPU外部的可屏蔽中斷發(fā)出的中斷請求。
TF:跟蹤標志TF。該標志可用于程序調試。
TF標志沒(méi)有專(zhuān)門(mén)的指令來(lái)設置或清楚。(1)如果TF=1,則CPU處于單步執行指令的工作方式,此時(shí)每執行完一條指令,就顯示CPU內各個(gè)寄存器的當前值及CPU將要執行的下一條指令。
(2)如果TF=0,則處于連續工作模式。SF:符號標志SF用來(lái)反映運算結果的符號位,它與運算結果的最高位相同。
在微機系統中,有符號數采用補碼表示法,所以,SF也就反映運算結果的正負號。運算結果為正數時(shí),SF的值為0,否則其值為1。
ZF: 零標志ZF用來(lái)反映運算結果是否為0。如果運算結果為0,則其值為1,否則其值為0。
在判斷運算結果是否為0時(shí),可使用此標志位。 AF:下列情況下,輔助進(jìn)位標志AF的值被置為1,否則其值為0: (1)、在字操作時(shí),發(fā)生低字節向高字節進(jìn)位或借位時(shí); (2)、在字節操作時(shí),發(fā)生低4位向高4位進(jìn)位或借位時(shí)。
PF:奇偶標志PF用于反映運算結果中“1”的個(gè)數的奇偶性。如果“1”的個(gè)數為偶數,則PF的值為1,否則其值為0。
CF:進(jìn)位標志CF主要用來(lái)反映運算是否產(chǎn)生進(jìn)位或借位。如果運算結果的最高位產(chǎn)生了一個(gè)進(jìn)位或借位,那么,其值為1,否則其值為0。
) 4)段寄存器(Segment Register)為了運用所有的內存空間,8086設定了四個(gè)段寄存器,專(zhuān)門(mén)用來(lái)保存段地址:CS(Code Segm。
數據寄存器主要用來(lái)保存操作數和運算結果等信息,從而節省讀取操作數所需占用總線(xiàn)和訪(fǎng)問(wèn)存儲器的時(shí)間。
32位CPU有4個(gè)32位的通用寄存器EAX、EBX、ECX和EDX。對低16位數據的存取,不會(huì )影響高16位的數據。
這些低16位寄存器分別命名為:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4個(gè)16位寄存器又可分割成8個(gè)獨立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每個(gè)寄存器都有自己的名稱(chēng),可獨立存取。
程序員可利用數據寄存器的這種“可分可合”的特性,靈活地處理字/字節的信息。 寄存器EAX通常稱(chēng)為累加器(Accumulator),用累加器進(jìn)行的操作可能需要更少時(shí)間。
可用于乘、除、輸入/輸出等操作,使用頻率很高; 寄存器EBX稱(chēng)為基地址寄存器(Base Register)。它可作為存儲器指針來(lái)使用; 寄存器ECX稱(chēng)為計數寄存器(Count Register)。
在循環(huán)和字符串操作時(shí),要用它來(lái)控制循環(huán)次數;在位操作中,當移多位時(shí),要用CL來(lái)指明移位的位數; 寄存器EDX稱(chēng)為數據寄存器(Data Register)。 在進(jìn)行乘、除運算時(shí),它可作為默認的操作數參與運算,也可用于存放I/O的端口地址。
在16位CPU中,AX、BX、CX和DX不能作為基址和變址寄存器來(lái)存放存儲單元的地址,在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不僅可傳送數據、暫存數據保存算術(shù)邏輯運算結果,而且也可作為指針寄存器,所以,這些32位寄存器更具有通用性。
16位處理器的典型產(chǎn)品是Inter的8086微處理器,以及同時(shí)推出的數學(xué)協(xié)處理器——8087。這兩款芯片使用互相兼容的指令集,但在8087指令集中增加了一些專(zhuān)門(mén)用于對數、指數和三角函數等數學(xué)計算的指令。由于這些指令應用于8086和8087,因此被人們統稱(chēng)為x86指令集。
1979年Inter公司推出了8086的簡(jiǎn)化版--8088.它仍是16位微處理器,內含29000個(gè)晶體管,時(shí)鐘頻率為4.77MHz,地址總線(xiàn)為20位,可以尋址1MB的內存。8088的內部數據總線(xiàn)是16位,外部數據總線(xiàn)是8位。1981年,8088芯片被首次用于IBM PC當中,開(kāi)創(chuàng )了個(gè)人計算機的新時(shí)代。
寄存器是中央處理器內的組成部份。
寄存器是有限存貯容量的高速存貯部件,它們可用來(lái)暫存指令、數據和位址。在中央處理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序計數器(PC)。
在中央處理器的算術(shù)及邏輯部件中,包含的寄存器有累加器(ACC)。 寄存器是內存階層中的最頂端,也是系統獲得操作資料的最快速途徑。
寄存器通常都是以他們可以保存的位元數量來(lái)估量,舉例來(lái)說(shuō),一個(gè) “8 位元寄存器”或 “32 位元寄存器”。寄存器現在都以寄存器檔案的方式來(lái)實(shí)作,但是他們也可能使用單獨的正反器、高速的核心內存、薄膜內存以及在數種機器上的其他方式來(lái)實(shí)作出來(lái)。
寄存器通常都用來(lái)意指由一個(gè)指令之輸出或輸入可以直接索引到的暫存器群組。更適當的是稱(chēng)他們?yōu)?“架構寄存器”。
例如,x86 指令及定義八個(gè) 32 位元寄存器的集合,但一個(gè)實(shí)作 x86 指令集的 CPU 可以包含比八個(gè)更多的寄存器。 寄存器是CPU內部的元件,寄存器擁有非常高的讀寫(xiě)速度,所以在寄存器之間的數據傳送非常快。
[編輯本段]寄存器用途 1.可將寄存器內的數據執行算術(shù)及邏輯運算; 2.存于寄存器內的地址可用來(lái)指向內存的某個(gè)位置,即尋址; 3.可以用來(lái)讀寫(xiě)數據到電腦的周邊設備。
1. 直接輸入、更改、跟蹤、運行匯編程序 2. 觀(guān)察操作系統的內容;? 3. 查看ROM BIOS的內容;? 4. 觀(guān)察更改RAM內部的設置值;? 5. 以扇區或文件的方式讀寫(xiě)軟盤(pán)數據。
? 在DEBUG中地址用段地址與段內地址來(lái)表示,而段地址可以明確地指出來(lái),也可以用一個(gè)段指示器(段寄存器)來(lái)代表,用段寄存器表示時(shí),其段地址就是此寄存器的內含值:? 如:用段地址和段內地址表示FOFF:0100? 用段寄存器和段內地址表示CSF:0100←CS指向F000? 下面列出了常用命令用法。 -A 地址 從指定地址開(kāi)始編寫(xiě)小匯編程序,按兩個(gè)回車(chē)鍵結束編輯 -U 地址 從指定地址開(kāi)始反匯編32字節的機器指令,缺省地址則從上一U命令繼續 -D 始址 終址 以16進(jìn)制/Asc字符對照方式顯示指定內存范圍的數據,每行顯示10H個(gè)字節 -E 地址 值表 用給出的值表(空格分隔)替換指定地址開(kāi)始的內存單元,例:-E 100 'v' 1F 'hello' -N 文件名 為后續的L/W命令約定所操作的文件名 -L 地址 將N命令所指定文件的內容讀入到指定內存位置。
另,邏輯卷扇區直接讀:-L 地址 邏卷號 起始邏扇號 扇數 -W 地址 將BX-CX個(gè)字節的內存數據寫(xiě)入N命令指定的文件中。另,邏輯卷扇區直接寫(xiě):-W 地址 邏卷號 起始邏扇號 扇數 -R 寄存器名 顯示并允許修改指定寄存器的值 -G=始址 終址 執行指定內存中的機器指令程序 -T=地址 單步執行機器指令,缺省地址則從上一T命令繼續。
另,繼續跟蹤m條指令:-T m 讀取c:卷的引導扇區,并保存到Boot.1文件中,并簡(jiǎn)單分析引導程序的前面幾條指令: -L 1000 2 0 1 -N boot.1 -R bx ;輸入0000 -R cx ;輸入0200 -W 1000 -U 1000 讀取第一個(gè)硬盤(pán)上的主引導扇區,并保存到MB.1文件中,在屏幕上顯示硬盤(pán)分區表數據: -A 100 yyyy:0100 mov dx,0080 yyyy:01xx mov cx,0001 yyyy:01xx mov ax,yyyy yyyy:01xx mov es,ax yyyy:01xx mov bx,1000 yyyy:01xx mov ax,0201 yyyy:01xx int 13 yyyy:01zz nop -G=yyyy:0100 01zz -N mb.1 -R bx ;輸入0000 -R cx ;輸入0200 -W 1000 -D 11be 11ff debugging命令 debugging命令概述 獲得路由器中交換的報文和幀的細節信息 用于調試信息 debugging命令使用注意事項 不使用debug命令監控正常的網(wǎng)絡(luò )運行 在網(wǎng)絡(luò )使用的低峰期使用 不要輕易使用類(lèi)似debugging all之類(lèi)的命令 使用debugging命令后,應立即以“undo debugging”命令終止debugging命令的執行。 Debugger "Debugger"這個(gè)詞按它的英文字面意思來(lái)講是這樣一種“裝置”(-er),這種裝置可以“消除”(De-)“系統中的缺陷”(bug)。
然而事實(shí)上,迄今為止我們經(jīng)常使用到的"Debugger"只是用來(lái)幫助我們進(jìn)行Debug的工具,"Debugger"本身不能自動(dòng)完成"Debug"。我們可以回想一下我們是如何進(jìn)行Debug的,在進(jìn)行Debug的過(guò)程中,我們通過(guò)Debugger來(lái)完成以下工作: (1)監視“Debug對象”的狀態(tài); (2)控制“Debug對象”的運行; 這些工作可以為“發(fā)現Debug對象中存在的問(wèn)題”以及“對解決問(wèn)題方案的檢驗”提供有用的信息。
監控工作有時(shí)只需要由軟件就可以完成,有時(shí)不僅需要軟件支持,還需要硬件的支持。 Debugger除了被用來(lái)Debug,還被用來(lái)幫助我們理解“Debug的對象”內部結構,因為我們用到的Debugger能夠完成對“Debug對象”的監控工作,在監控的過(guò)程中可以獲取“Debug對象”動(dòng)態(tài)特征的信息,這對我們理解其結構是非常有用的。
關(guān)于更詳細的介紹和研究可以參考國人原創(chuàng )的《軟件調試》 ,這。
聲明:本網(wǎng)站尊重并保護知識產(chǎn)權,根據《信息網(wǎng)絡(luò )傳播權保護條例》,如果我們轉載的作品侵犯了您的權利,請在一個(gè)月內通知我們,我們會(huì )及時(shí)刪除。
蜀ICP備2020033479號-4 Copyright ? 2016 學(xué)習?shū)B(niǎo). 頁(yè)面生成時(shí)間:4.100秒