8086

8086:基本介紹,微處理器,結構,引腳,指令集,數據傳送指令,算數運算指令,邏輯-九游会j9

intel 8086是一個由intel於1978年所設計的16位晶片,是x86架構的鼻祖。不久之後,intel 就推出了 intel 8088 (一個擁有16根外部數據匯流排的微處理器)。它是以8080和8085的設計為基礎,擁有類似的,但是數據匯流排擴充為20位。匯流排接口單元(bus interface unit)透過6位元組預存(prefecth) 的佇列(queue)位指令給執行單元(execution unit),所以取指令和執行是同步的,8086 cpu有20條,可1mb的存儲空間,每一個可以存放一個位元組(8位)二進制信息。

基本介紹

  • 中文名8086
  • 外文名:intel 8086
  • 出品時間:1978
  • 出品公司:intel
基本介紹,微處理器,結構,引腳,指令集,數據傳送指令,算數運算指令,邏輯運算指令,位運算集,程式流程控制集,

基本介紹

intel 8086擁有四個16位的,也能夠當作八個8位暫存器來存取,以及四個16位索引暫存器(包含了指標)。資料暫存器通常由指令隱含地使用,針對暫存值需要複雜的暫存器配置。它提供64k 8 位元的輸出輸入(或32k 16 位元),以及固定的。大部分的指令只能夠存取一個記憶體位址,所以其中一個必須是一個暫存器。運算結果會儲存在運算元中的一個暫存器。
intel 8086有四個 記憶體區段(segment),可以從索引暫存器來設定。區可以讓 cpu 利用特殊的方式存取1 mb記憶體。8086 把左移 4 位然後把它加上。大部分的人都認為這是一個很不好的設計,因為這樣的結果是會讓各分段有重疊。儘管這樣對組合語言而言大部分被接受(也甚至有用),可以完全地控制分段,使在編程中使用(如c程式語言) 變得困難。它導致指針的高效率表示變得困難,且有可能產生兩個指向同一個地方的指針擁有不同的地址。更壞的是,這種方式產生要讓到大於 1 mb 的困難。而 8086 的改變讓記憶體擴充較有效率。
8086處理器的介於4.77mhz(在原先的ibm pc頻率)和10 mhz之間。8086 沒有包含浮點指令部分(fpu),但是可以通過外接數學輔助處理器來增強浮點計算能力。intel 8087 是標準版本。

微處理器

8086是intel系列的16位微處理器,晶片上有4萬個電晶體,採用 hmos工藝製造,用單一的 5v電源,為4.77mhz~10mhz。
i8086處理器i8086處理器
8086有16根數據線和20根,它既能處理16位數據,也能處理8位數據。可定址的記憶體空間為1mb。
在取得ibm個人電腦部門敲定的重要銷售契約之後,intel 8088處理器不僅成為了ibm個人電腦的大腦,而且還讓ibm個人電腦成為新款暢銷產品。為此,intel 8088處理器的成功,也將英特爾進入“財富雜誌500大企業排行榜”,將英特爾評為 “70年代最成功的企業”之一。intel 8088電晶體數目約為2.9萬顆。
1978年英特爾公司生產的8086是第一個16位的微處理器。很快zilog公司和摩托羅拉公司也宣布計畫生產z8000和68000。這就是第三代微處理器的起點。
8086微處理器最高主頻速度為8mhz,具有16位數據通道,能力為1mb。同時,英特爾還生產出與之相配合的i8087,這兩種晶片使用相互兼容的,但intel8087指令集中增加了一些專門用於對數、指數和三角函式等數學計算的指令。人們將這些指令集統一稱之為 x86指令集。雖然以後英特爾又陸續生產出第二代、第三代等更先進和更快的新型cpu,但都仍然兼容原來的x86指令,而且英特爾在後續cpu的命名上沿用了原先的x86序列,直到後來因商標註冊問題,才放棄了繼續用阿拉伯數字命名。
1979年,公司又開發出了8088。8086和8088在晶片內部均採用16位數據傳輸,所以都稱為16位微處理器,但8086每周期能傳送或接收16位數據,而8088每周期只能傳輸8位。因為最初的大部分設備和晶片是8位的,而8088的外部8位的、接收能與這些設備相兼容。8088採用40針的,為6.66mhz、7.16mhz或8mhz,微處理器集成了大約29000個電晶體。
8086和8088問世後不久,英特爾公司就開始對他們進行改進。他們將更多功能集成在晶片上,這樣就誕生了80186和80188。這兩款內部均以16位工作,在外部輸入輸出上80186採用16位,而80188和8088一樣是採用8位工作。
1981年,ibm公司將用於其研製的pc機中,從而開創了全新的時代。也正是從8088開始,個人電腦(pc)的概念開始在全世界範圍內發展起來。從8088套用到ibm pc機上開始,個人電腦真正走進了人們的工作和生活之中,它也標誌著一個新時代的開始

結構

匯流排接口單元 (biu bus interface unit)
由下列各部分組成
匯流排接口單元biu匯流排接口單元biu
⑴4個段:
cs(code segment)——16位的代碼;
ds(data segment)——16位的數據段暫存器;
es(extra segment)——16位的擴展段暫存器;
ss(stack segment)——16位的堆疊段暫存器;
⑵16位的指令指針暫存器ip;
⑶20位的地址;
⑷6位元組的。
執行單元
執行部件由下列幾個部分組成:
⑴8個:即ax、bx、cx、dx,bp,sp,si,di ;
其中,4個:ax、bx、cx、dx;
2個地址指針:bp(base pointer),sp(stack pointer);
2個變址暫存器:si(source index),di(destination index);
⑵fr(flags register);
⑶alu(arithmetic logic unit)。
eu負責全部指令的執行,同時向biu輸出數據(操作結果),並對暫存器和標誌暫存器進行管理。在alu中進行16位運算,數據傳送和處理均在eu控制下執行。
biu和eu的管理
⑴biu和eu可以並行工作,提高cpu效率。biu監視著指令佇列。當指令佇列中有2個空位元組時,就自動把指令取到佇列中。
8086cpu結構圖8086cpu結構圖
⑵ eu執行指令時,從指令佇列頭部取指令,然後執行。如需訪問,則eu向biu發出請求,由biu訪問存儲器。
⑶ 在執行轉移、調用、返回指令時,需改變佇列中的指令,要等新指令裝入佇列中後,eu才繼續執行指令。

引腳

概念
在學習8086 cpu的引腳信號前,必須弄清cpu最小模式和最大模式的概念。所謂最小模式,就是在系統中只有一個8086,所有的匯流排都直接由8086 cpu產生,因此,系統中的匯流排控制電路被減到最少。最大模式是相對最小模式而言的。在最大模式系統中,總是包含兩個或多個微處理器,其中一個主處理器就是8086,其他的處理器稱為協處理器,它們是協助主處理器工作的。如數學運算協處理器8087,輸入/輸出協處理器8089。8086 cpu到底工作在最大模式還是最小模式,完全由硬體決定。
8086cpu引腳圖8086cpu引腳圖
當cpu處於不同工作模式時,其部分的功能是不同的。
與之功能相同的
⑴ad15 ~ad0(address data bus):地址/,雙向,三態。
這是一組採用分時的方法傳送地址或數據的復用。根據不同的要求,決定當前是傳送要訪問的或i/o連線埠的低16位地址,還是傳送16位數據,或是處於。
⑵a19/s6~a16/s3(address/status):地址/狀態信號,輸出,三態。
這是採用分時的方法傳送地址或狀態的復用引腳。其中a19~a16為20位的高4位地址,s6~s3是狀態信號。s6表示cpu與匯流排連線的情況,s5指示當前中斷允許標誌if的狀態。s4,s3的代碼組合用來指明當前正在使用的。s4,s3的代碼組合及對應段暫存器的情況。
⑶bhe(低)/s7(bus high enable/status):允許匯流排高8位數據傳送/狀態信號,輸出,三態。
為匯流排高8位數據允許信號,當低電平有效時,表明在高8位d15 ~d8上傳送1個位元組的數據。s7為設備的狀態信號。
⑷rd/(read):讀信號,輸出,三態,低電平有效。
信號低電平有效時,表示cpu正在進行讀或讀i/o連線埠的操作。
⑸ready(ready):準備就緒信號,輸入,高電平有效。
ready信號用來實現cpu與存儲器或i/o連線埠之間的時序匹配。當ready信號高電平有效時,表示cpu要訪問的存儲器或i/o連線埠已經作好了輸入/輸出數據的準備工作,cpu可以進行讀/寫操作。當ready信號為低電平時,則表示存儲器或i/o連線埠還未準備就緒,cpu需要插入若干個“tw狀態”進行等待。
⑹intr(interrupt request):可禁止中斷請求信號,輸入,高電平有效。
8086 cpu在每條指令執行到最後一個時,都要檢測intr引腳信號。intr為高電平時,表明有i/o設備向cpu申請中斷,若if=1,cpu則會回響中斷,停止當前的操作,為申請中斷的i/o設備服務。
⑺test/(test):等待測試,輸入,低電平有效。
信號用來支持構成,實現8086 cpu與之間同步協調的功能,只有當cpu執行wait指令時才使用。
⑻nmi(non-maskable interrupt):非禁止信號,輸入,高電平有效。
當nmi引腳上有一個上升沿有效的觸發信號時,表明cpu內部或i/o設備提出了非禁止的中斷請求,cpu會在結束當前所執行的指令後,立即回響中斷請求。
⑼reset(reset):,輸入,高電平有效。
reset信號有效時,cpu立即結束現行操作,處於復位狀態,初始化所有的內部暫存器。復位後各內部暫存器的狀態,當reset信號由高電平變為低電平時,cpu從ffff0h地址開始重新啟動執行程式。
⑽clk(clock):,輸入。
clk為cpu提供基本的定時脈衝信號。8086 cpu一般使用時鐘發生器8284a來產生時鐘信號,為5mhz~8mhz,占空比為1:3。
⑾vcc電源輸入。
8086 cpu採用單一 5v電源供電。
⑿gnd:接地引腳。
⒀mn/mx/(minimum/maximum):最小/最大模式輸入。
引腳用來設定8086 cpu的工作模式。當為高電平(接 5v)時,cpu工作在最小模式;當為低電平(接地)時,cpu工作在最大模式。
cpu工作於最小模式時使用的引腳信號
當引腳接高電平時,cpu工作於最小模式。此時,引腳信號24~31的含義及其功能如下。
⑴m/io/(memory i/o select):、i/o連線埠選擇控制信號。
信號指明當前cpu是選擇訪問存儲器還是訪問i/o連線埠。為高電平時,訪問存儲器,表示當前要進行cpu與存儲器之間的。為低電平時,訪問i/o連線埠,表示當前要進行cpu與i/o連線埠之間的數據傳送。
⑵wr/(write):寫信號,輸出,低電平有效。
信號有效時,表明cpu正在執行寫,同時由信號決定是對存儲器還是對i/o連線埠執行寫操作。
⑶inta/(interrupt acknowledge):回響信號,輸出,低電平有效。
cpu通過信號對提出的可禁止中斷請求做出回響。為低電平時,表示cpu已經回響外設的,即將執行。
⑷ale(address lock enable):允許信號,輸出,高電平有效。
cpu利用ale信號可以把ad15 ~ad0地址/數據、a19/s6~a16/s3地址/狀態線上的地址信息鎖存在中。
⑸dt/(data transmit or receive):數據傳送/接收信號,輸出,三態。
dt/信號用來控制的方向。dt/為高電平時,cpu傳送數據到或i/o連線埠;dt/為低電平時,cpu接收來自存儲器或i/o連線埠的數據。
⑹/(data enable):數據允許,輸出,三態,低電平有效。
信號用作匯流排收發器的選通控制信號。當為低電平時,表明cpu進行數據的讀/寫操作。
⑺hold(bus hold request):匯流排保持請求信號,輸入,高電平有效。
在dma數據傳送方式中,由匯流排控制器8237a發出一個高電平有效的匯流排請求信號,通過hold引腳輸入到cpu,請求cpu讓出匯流排控制權。
⑻(hold acknowledge):匯流排信號,輸出,高電平有效。
hlda是與hold配合使用的聯絡信號。在hlda有效期間,hlda引腳輸出一個高電平有效的回響信號,同時匯流排將處於浮空狀態,cpu讓出對匯流排的控制權,將其交付給申請使用匯流排的8237a控制器使用,匯流排使用完後,會使hold信號變為低電平,cpu又重新獲得對匯流排的控制權。
cpu工作於最大模式時使用的引腳信號
當引腳接低電平時,cpu工作於最大模式。此時,引腳信號24~31的含義及其功能如下。
⑴s2,s1,s0(status signals):狀態信號,輸出,低電平有效。
它們表明當前匯流排周期所進行的操作類型。,,代碼組合及其對應操作見表2.3。
表2.3,,代碼組合及對應操作表
⑵rq/,gt/ (request/grant):匯流排請求允許信號輸入/匯流排請求允許輸出信號,雙向,低電平有效。
該信號用以取代最小模式時的hold/兩個信號的功能,是特意為而設計的。當系統中某一部件要求獲得匯流排控制權時,就通過此信號線向8086 cpu發出匯流排請求信號,若cpu回響匯流排請求,就通過同一引腳發迴響應信號,允許匯流排請求,表明8086 cpu已放棄對匯流排的控制權,將匯流排控制權交給提出匯流排請求的部件使用。rq/gt0優先權高於rq/gt1。
⑶lock/(lock)匯流排封鎖信號,輸出,低電平有效。
信號有效時,表示此時8086 cpu不允許其他匯流排部件占用匯流排。
⑷qs1,qs0(queue status):指令佇列狀態信號,輸出。
qs1和qs0信號的組合可以指示biu中指令佇列的狀態,以便其他處理器監視、跟蹤指令佇列的狀態。

指令集

數據傳送指令

mov
功能: 把源送給目的運算元
語法: mov 目的運算元,源運算元
格式: mov r1,r2
mov r,m
mov m,r
mov r,data
xchg
功能: 交換兩個運算元的數據
語法: xchg
格式: xchg r1,r2 xchg m,r xchg r,m
push,pop
功能: 把運算元壓入或取出
語法: pushpop 運算元
格式: push r push m push data pop r pop m
pushf,popf,pusha,popa
功能:群
格式: pushf popf pusha popa
lea,lds,les
功能: 取地址至暫存器
語法: lea r,m lds r,m les r,m
xlat(xlatb)
功能:
語法: xlat xlat m

算數運算指令

add,adc
功能: 加法指令
語法: add op1,op2 adc op1,op2
格式: add r1,r2 add r,m add m,r add r,data
影響標誌: c,p,a,z,s,o
sub,sbb
功能:減法指令
語法: sub op1,op2 sbb op1,op2
格式: sub r1,r2 sub r,m sub m,r sub r,data sub m,data
影響標誌: c,p,a,z,s,o
inc,dec
功能: 把op的值加一或減一
語法: inc op dec op
格式: inc r/m dec r/m
影響標誌: p,a,z,s,o
mul,imul
功能: 乘法指令
語法: mul op imul op
格式: mul r/m imul r/m
影響標誌: c,p,a,z,s,o(僅imul會影響s標誌)
dⅳ,idⅳ
功能:除法指令
語法: dⅳ op idⅳ op
格式: dⅳ r/m idⅳ r/m

邏輯運算指令

neg
功能: 將op的符號反相(取二進制補碼)
語法: neg op
格式: neg r/m
影響標誌: c,p,a,z,s,o
cbw,cwd
功能:擴展指令
語法: cbw cwd
aaa,aas,aam,aad
功能: 非壓bcd碼運算調整指令
語法: aaa aas aam aad
影響標誌: a,c(aaa,aas) s,z,p(aam,aad)
daa,das
功能:調整指令
語法: daa das
影響標誌: c,p,a,z,s

位運算集

and,or,xor,not,test
功能: 執行bit與bit之間的邏輯運算
語法: and r/m,r/m/data or r/m,r/m/data xor r/m,r/m/data test r/m,r/m/data not r/m
影響標誌: c,o,p,z,s(其中c與o兩個標誌會被設為0) not指令不影響任何標誌位
shr,shl,sar,sal
功能:
語法: shr r/m,data/cl shl r/m,data/cl sar r/m,data/cl sal r/m,data/cl
影響標誌: c,p,z,s,o
ror,rol,rcr,rcl
功能: 循環移位指令
語法: ror r/m,data/cl rol r/m,data/cl rcr r/m,data/cl rcl r/m,data/cl
影響標誌: c,p,z,s,o

程式流程控制集

clc,stc,cmc
功能: 設定進位標誌
語法: clc stc cmc
標誌位: c
cld,std
功能: 設定方向標誌
語法: cld std
標誌位: d
cli,sti
功能: 設定中斷標誌
語法: cli sti
標誌位: i
cmp
功能: 比較op1與op2的值
語法: cmp r/m,r/m/data
標誌位: c,p,a,z,o
jmp
功能: 跳往指定地址執行
語法: jmp 地址
jxx
功能: 當特定條件成立則跳往指定地址執行
語法: jxx 地址
註:
a: above,當c=0,z=0時成立
b: below,當c=1時成立
c: carry,當弁時成立 cxz: cx暫存器的值為0(zero)時成立
e: equal,當z=1時成立
g: greater(大於),當z=0且s=0時成立
l: less(小於),當s不為零時成立
n: not(相反條件),需和其它符號配合使用
o: overflow,o=1時成立
p: parity,p=1時成立
pe: parity even,p=1時成立
po: parity odd,p=0時成立
s: sign,s=1時成立
z: zero,z=1時成立
loop
功能: 循環指令集
語法: loop 地址
loope(z)
地址 loopne(z) 地址
標誌位: 無
call,ret
功能:調用,返回指令
語法: call 地址 ret ret n
標誌位: 無
int,iret
功能: 中斷調用及返回指令
語法: int n iret
標誌位: 在執行int時,cpu會自動將的值入棧,在執行iret時則會將中的標誌值彈回暫存器
串操作集
movsb,movsw,movsd
功能: 字元串傳送指令
語法: movsb movsw movsd
標誌位: 無
cmpsb,cmpsw,cmpsd
功能: 字元串比較指令
語法: cmpsb cmpsw cmpsd
標誌位: c,p,z,s,o
scasb,scasw
功能: 字元串搜尋指令
語法:scasw
標誌位: c,p,z,s,o
lodsb,lodsw,stosb,stosw
功能: 字元串載入或存貯指令
語法:lodswstosw
標誌位: 無
rep,repe,repne
功能: 重複前綴指令集
語法: rep 指令s repe 指令s repne 指令s
標誌位: 依指令s而定

相關詞條

熱門詞條

聯絡我們
网站地图