![]()
8086指令系統(tǒng)是在8位微處理器8080/8085的指令系統(tǒng)基礎上設計的,它兼容了8080/8085的全部指令,與8位微處理器具有 兼容性的指令往往是處理字節(jié)(8位)上午。此外,8086還有自己所特有的對字或字符串的處理指令,以及對帶符號數(shù)的運算指令、中斷指令和協(xié)處理器指令。
指令系統(tǒng)中有一類指令叫轉移指令,還有一類叫調用指令,這兩類指令涉及轉移地址或者調用地址的提供方式,一般也稱為指令地址的尋址方式。
![]()
1、了解8086的尋址方式
2、熟練掌握8086的各種指令,并掌握它們的作用
![]()
§8086的尋址方式
§標志寄存器
§8086指令系統(tǒng)
§練習題
§自測題
![]()
3.1 8086的尋址方式
3.2 數(shù)據(jù)傳送指令
3.3 算術運算指令
3.4 邏輯運算和移位指令
3.5 串操作指令
3.6 控制轉移指令
3.7 處理器控制指令
![]()
?。薄⑺悸非逦乩斫飧鞣N尋址方式;
?。?、自己多寫一些小程序或多做些相關的練習題。
![]()
尋址方式 指令系統(tǒng) 標志
![]()
1、《微型計算機技術及應用》,戴梅萼等編著,第二版,清華大學出版社
2、《微型計算機原理》,季維法等編著,第一版,電子科技大學出版社
3、《微型計算機原理—常見題型解析及模擬題》,武自芳主編,西北工業(yè)大學出版社
4、《80X86/80X87匯編語言程序設計》,洪志全等編著,電子科技大學出版社
§3.1 8086的尋址方式
計算機中無論是什么指令,其操作的對象都是數(shù)據(jù),指令必須指出操作數(shù)的值是多少或指出操作數(shù)存放在什么地方。形成操作數(shù)存放地址的方法,稱為尋址方式。尋址方式要涉及到寄存器、存儲器、外設接口電路。
1、 寄存器尋址
操作數(shù)存放在CPU的寄存器中,指令以寄存器名代表該操作數(shù)。
2、 立即尋址
操作數(shù)為常數(shù),指令中直接寫出該常數(shù)值。
3、 直接尋址
操作數(shù)在內存中,指令給出存儲單元的有效地址EA(Effective Address,16位地址偏移量稱為有效地址)。存儲單元的段地址值缺省為DS寄存器的值。
在指令中,也可直接指定存儲單元的段地址
"CS:"放在有效地址前,替換了缺省的DS段,稱為"段替換前綴"。
一般說來,在程序設計中,把全部數(shù)據(jù)集中放在一個或幾個數(shù)據(jù)段中,在程序的開始,把當前要使用的數(shù)據(jù)段的基地址送給DS寄存器,然后用缺省段地址的尋址方式使用該段中的數(shù)據(jù)。如果要使用另一個數(shù)據(jù)段,再把要使用的數(shù)據(jù)段的基地址送給DS寄存器,然后用缺省段地址的尋址方式使用新數(shù)據(jù)段中的數(shù)據(jù)。很少使用段替換前綴。如圖3-1所示。

4、 寄存器間接尋址
當操作數(shù)在內存中時,內存單元的有效地址也可以用某些寄存器的 值來表示??梢允褂玫募拇嫫骷捌淙笔〉亩稳缦卤?
寄存器間接尋址方式中,內存單元的有效地址EA還可以用以下兩種方式來表示。
(1) BX/BP/SI/DI的值加上一個8位常數(shù)(稱為8位位移量)或16位常數(shù)(稱為16位位移量),如圖3-2所示。

(2) BX/BP/SI/DI中的兩個寄存器的值之和,或者再加上一個8位位移量或16位位移量,但不能同時出現(xiàn)BP和BX,也不能同時出現(xiàn)SI和DI。如圖3-3所示。


當兩個寄存器中有一個是
BP時,段地址缺省為SS。否則,段地址缺省為DS。
§3.2 標志寄存器
8086CPU內部有一個16位標志寄存器,其中只使用了9位,每一位表示一個標志,如圖3-4。有6位狀態(tài)標志,表示CPU運算結果的特征。有3位控制標志,用來控制CPU的行為。

在文字說明中,標志寄存器可用符號FLAGS或PSW(Program Status Word,程序狀態(tài)字)來表示,但這些符號不能出現(xiàn)在指令中,例如,"MOV AX,F(xiàn)LAGS"不是合法的指令。
1、 進位標志CF(Carry)
在運算指令執(zhí)行后,當最高位(字節(jié)運算時,最高位是D7位;字運算時,最高位是D15位)上有進位或借位時,CF置1,否則置0。循環(huán)和移位指令操作也能把存儲單元或寄存器中的最高位或最低位移入CF中。
2、 奇偶校驗標志PF(Parity)
在運算指令執(zhí)行后,結果的低8位中含1的位數(shù)為偶數(shù)時,PF標志置1,否則置0。
3、 輔助進位標志AF(Auxiliary Carry)
在運算指令執(zhí)行后,當Bit3向Bit4有進位,或Bit3向Bit4有借位,AF標志置1,否則置0。
4、 零標志ZF(Zero)
在運算指令執(zhí)行后,結果為0,則ZF標志置1,否則置0。
5、 符號標志SF(Sign)
在運算指令執(zhí)行后,最高位為1,則SF標志置1,否則置0。
6、 溢出標志OF(Overflow)
在有符號數(shù)加、減運算中,運算結果超出了表示范圍。
如: 有符號字節(jié)運算的結果超出了-128 ~ +127;
有符號字運算的結果超出了-32768 ~ +32767。
則OF標志置1,否則置0。當運算結果超出了表示范圍,運算結果是錯誤的。
使用雙高位來判別OF標志。所謂雙高位判別,即規(guī)定符號位(用CS表示)有進位時,CS=1,否則 CS=0。數(shù)值部分最高位(CP表示)有進位時CP=1,否則 CS=0。若CS⊕CP=1("異或"運算),則有溢出產生。
注意:
(1) 上述CF和CS的值是相同的,對于無符號數(shù)稱為CF ,對于有符號數(shù),由于最高位代表符號,故稱為CS。
(2) 除法運算(無符號數(shù)和有符號數(shù))溢出時,產生"除數(shù)為0"中斷,不能用上述方法或其他方法判別除法運算溢出。
(3) 乘法運算始終不會溢出。
DEBUG命令中,標志位的表示(《MS-DOS 6.22參考手冊》p185)

7、 跟蹤標志TF(Trap)
若TF置1,則CPU進入"單步運行方式"。在單步運行方式中,CPU每執(zhí)行一條指令,則產生一個類型碼為1的內部中斷(稱為單步中斷),單步中斷處理程序執(zhí)行完后,再執(zhí)行下一條指令。單步中斷處理程序可以作為調試程序,如圖3-5所示。

8、 中斷允許標志IF(Interrupt Enable)
若IF置1,允許CPU響應可屏蔽中斷請求INTR;若IF=0,禁止CPU響應可屏蔽中斷請求INTR。該標志不影響NMI中斷和內部中斷。
該標志用于字符串處理指令中。
字符串是一中數(shù)據(jù)類型,它占用一個或多個連續(xù)內存單元,如圖3-6所示?! ?/p>

字符串指令執(zhí)行時,操作數(shù)(源字符串和目的字符串)的地址會自動改變。方向標志用于指定地址改變的方向,當DF=0時,地址增加(從低地址向高地址處理);當DF=1時,地址減少(從高地址向低地址處理)。
標志寄存器的各標志位可以用指令來修改。

