河南理工大學接口技術ppT匯總_第1頁
河南理工大學接口技術ppT匯總_第2頁
河南理工大學接口技術ppT匯總_第3頁
河南理工大學接口技術ppT匯總_第4頁
河南理工大學接口技術ppT匯總_第5頁
已閱讀5頁,還剩357頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

講授:李泉溪

《接口技術》接口技術學什么?軟件方面硬件方面怎么連結?接口技術3計算機概述●二進制●數與碼●ASCII碼與奇偶校驗●Inter公司歷代微處理器典型產品Inter公司歷代微處理器典型產品第2章微處理器結構圖1微型計算機結構圖9第2章微處理器結構102.116位微處理器80862.1.18086的編程結構總線接口部件區

執行部件區

標志內容算數邏輯帶來流水線機制注:微處理器8088,與8086是姐妹產品,其特點是:

1.外部總線少8根數據線;2.指令隊列少兩個緩沖器注:將來實驗用的是8088.11EU控制器ALU暫存器標志寄存器8位隊列總線總線控制邏輯內部總線16位地址加法器20位地址總線16位數據總線執行部件EU總線接口部件BIU123456指令隊列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暫存器8086總線主存專用寄存器12

標志寄存器F唯一能按位操作的寄存器只定義了其中9位,另外7位未定義(不用)6位狀態標志:OF、SF、ZF、

PF、CF、AF3位控制標志:DF、IF、TFOFDFIFTFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0進位標志奇偶標志輔助進位標志零標志符號標志單步跟蹤標志中斷允許標志方向標志益處標志︻補碼運算用︼9.2013狀態標志反映指令對數據作用之后,結果的狀態(不是結果本身)。這些狀態將控制后續指令的執行OF(OverflowFlag):溢出標志(指補碼),F.11OF=1:在運算過程中,如操作數超過了機器表示的范圍稱為溢出。OF=0:在運算過程中,如操作數未超過了機器能表示的范圍稱為不溢出。字節允許范圍:-128—+127字允許范圍:-32768—+3276714狀態標志CF(CarryFlag):進位/借位標志,F.0CF=1:最高位需要向前產生進位/借位。CF=0:最高位不會向前產生進位/借位。AF(AuxiliaryCarryFlag):輔助進位標志,F.4AF=1:數據的第3位(半個字節)需要向前產生進位/借位。AF=0:數據的第3位(半個字節)不會向前產生進位/借位。15狀態標志SF(SignFlag):符號標志,F.7SF=1:運算結果的最高位為1,如果為帶符號數,則為負數。SF=0:運算結果的最高位為0,如果為帶符號數,則為正數。帶符號數的最高位為符號位;而無符號數的最高位為數值位。ZF(ZeroFlag):全零標志,F.6ZF=1:運算結果為全0。不包括進位的情況ZF=0:運算結果不為0。16狀態標志PF(ParityFlag):奇偶標志F.2PF=1:結果的低8位中有偶數個1。PF=0:結果的低8位中有奇數個1。有些運算操作將影響全部狀態標志,如加法、減法運算有些操作影響部分狀態標志,如移位操作有些指令的操作不影響任何狀態標志,如數據傳送指令(遠程傳送例外)17例:計算機執行兩個數的加法

0010

0011

0100

0101

+

0011

0010

0001

10010101

0101

0101

1110分析:1.運算結果的最高位是0,所以符號標志SF=0

2.運算結果本身不為0,所以零標志ZF=0

3.運算結果低8位1的個數為奇數,奇偶標志PF=0

4.運算最高位沒有產生進位,所以進位標志CF=0

5.第3位沒有往第4位進位,所以輔助進位標志AF=0

6.運算結果沒有超出有效范圍,所以溢出標志OF=0

18控制標志DFIFTF控制標志位的值不由數據運算的結果決定,而由指令直接賦值控制標志決定后續指令的執行情況DF(DirectionFlag):方向控制標志位,F.10用于串處理指令,控制從前往后、還是從后往前對字符串進行操作處理DF=1,每次串處理操作后使變址寄存器SI和DI的值遞減,使串處理從高地址向低地址方向處理。DF=0,每次串處理操作后使變址寄存器SI和DI的值遞增,使串處理從低地址向高地址方向處理。19控制標志DFIFTFIF(InteruptFlag):中斷允許/禁止標志位F.9IF=1,允許外部可屏蔽中斷。CPU可以響應可屏蔽中斷請求。IF=0,關閉中斷。CPU禁止響應可屏蔽中斷請求。IF的狀態對不可屏蔽中斷和內部軟中斷沒有影響。TF(TrapFlag):跟蹤(陷阱)標志位F.8TF=1,每執行一條指令后,自動產生一次內部中斷,使CPU處于單步執行指令工作方式,便于進行程序調試,用戶能檢查程序。TF=0,CPU正常工作,不產生陷阱。20控制標志與狀態標志的區別控制標志的值:由系統程序或用戶程序根據需要用指令設置。狀態信息:由中央處理器執行運算指令,并根據運算結果而自動設置。X86CPU也提供了直接設置狀態標志之值的指令21AXBXCXDX8086的通用寄存器目的變址指針(DestinationIndex)DI源變址指針(SourceIndex)SI基址指針(BasePointer)BP堆棧指針(StackPointer)SP數據寄存器(Data)DLDHDX計數寄存器(Count)CLCHCX基址寄存器(Base)BLBHBX累加器(Accumulator)ALAHAX數據寄存器可分為兩個8位,主要用于數據操作地址指針主要用于地址操作16位8822通用寄存器的特殊用法(默認用法)寄存器特殊用法AX,AL乘法/除法指令,作累加器;I/O操作時,作數據寄存器AH在LAHF指令中用作目的寄存器((AH)←標志)AL在BCD碼及ASCII碼運算指令中作為累加器;在XLAT指令中作為累加器(AL)←((AL)+(BX))BX在間接尋址中作為基址寄存器和變址寄存器CX在循環程序中,作循環次數計數器CL在移位和循環移位指令中,作為移位位數和循環移位次數的計數寄存器(指令執行后,(CL)不變)DXI/O指令間接尋址時,作為地址寄存器;在乘法指令中作為輔助累加器(當乘積或被除數為32位時,存放高16位數)BP在間接尋址中,作為基址寄存器SP在堆棧操作中,作為堆棧指針SI間接尋址時,作為地址寄存器或變址寄存器;在串操作指令中作為源變址寄存器DI在間接尋址時,作為地址寄存器或變址寄存器;在串操作指令中作為目的變址寄存器23EU控制器ALU暫存器標志寄存器8位隊列總線總線控制邏輯內部總線16位地址加法器20位地址總線16位數據總線執行部件EU總線接口部件BIU123456指令隊列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暫存器8086總線討論:1.以算術邏輯單元ALU為中心

2.以主存為中心主存24標志寄存器標志寄存器(FlagRegister)共有16位,其中7位未用。標志寄存器內容如圖2-2所示:(1)條件類標志:CFZFSFPFOFAF(2)控制類標志:DFIFTF條件標志分別為:進位CF、零ZF、符號SF、奇偶PF、溢出OF、輔助進位AF(半進位)控制標志意思如下:DF:方向標志,為0則串操作時地址增值IF:中斷標志,為0則中斷屏蔽TF:單步標志,為0則連續執行程序25ORG10100H;偽指令:CS=1000h;IP=0100HMOVAX,0064H;數據傳送指令機器碼:B86400ADDAX,0100H;加法指令機器碼機器碼:050001MOV[2000],AX;數據傳送指令機器碼:A30020

;DS=1492H由操作系統安置;IP=2000H由指令安置注:CS—代碼段寄存器

DS—數據段寄存器注:物理地址需要合成產生

IP—指令指針寄存器微處理器8088執行匯編語言程序過程演示268088的指令執行過程段地址寄存器278086總線周期的概念CPU主存************程序時鐘外部存儲器硬盤接口DMA啟動程序288086總線周期的概念總線周期:4個時鐘周期組成,4個時鐘周期分別叫做:

T1狀態、T2狀態、T3狀態、T4狀態

問:你的電腦時鐘周期是多少?T1狀態:CPU通過復用總線往存儲單元發地址T2狀態:CPU撤銷地址信號T3狀態:CPU啟動復用總線數據傳輸T4狀態:總線周期結束Tw狀態:存儲器或I/O口未準備好,要等待(要作解釋)TI狀態:空閑周期,即非總線傳輸的指令,如指令隊列滿了。返回27291.8086CPU的引腳信號2.最小工作模式3.最大工作模式2.1.28086的引腳信號

和工作模式30圖2.48086/8088的引腳信號(括號中為最大模式時的引腳名)(a)8086的引腳信號;(b)8088的引腳信號8086/8088CPU引腳返回5731

看圖要點1、40個管腳分3類2、很多管腳有多個功能32數據線(D0~D15)地址線(A0~A19)MN/MX最小/最大模式轉換BHE數據高8位允許信號ALE地址鎖存信號DEN使能信號[數據傳輸允許】DT/R數據傳輸方向控制M/IO內存/外設控制READY準備好信號,控制Tw插入數RESET復位信號HOLD、HLDA總線控制INTR、INTA中斷控制NMI非屏蔽中斷331、8086的最小模式MN/MX最小/最大模式轉換BHE數據高8位允許信號ALE地址鎖存信號DEN使能信號[數據傳輸允許】DT/R數據傳輸方向控制M/IO內存/外設控制READY準備好信號,控制Tw插入數。RESET復位信號HOLD、HLDA總線控制INTR、INTA中斷控制NMI非屏蔽中斷34地址信號的分離選通端,接ALE輸出允許端A0~A15AD0~AD153片8282的連法35數據信號的分離請看計算機讀寫數據的時序分析方向控制端輸出允許端AD0~AD7D0~D736CPU時鐘信號的獲得復位端準備好信號端EFI:外振源輸入端,無晶振時用372、8086的最大模式38最大模式下控制信號的產生2009-2-2639最大模式與最小模式比較共同點:1、時鐘及其產生電路是一樣的。

2、數據總線、地址總線的處理和連法是一樣的。不同點:1、控制信號的產生機理不一樣,控制信號的類型有所不同。

2、最小模式用一個CPU,最大模式用兩個CPU。一個專門做輔助計算。

402.1.38086的操作和時序

操作:

計算機在運行過程中,需要CPU執行許多操作。8086的主要操作分為以下5種類型:①系統的啟動和復位操作;[后面專門講]②暫停操作;由暫停指令HLT(p134)產生,等待外中斷用③總線操作;

[總線讀寫操作時序圖]④中斷操作;[后面專門講]⑤總線控制(請求/允許,多主系統時)。418086的復位操作時序返回系統的復位42計算機復位時“強制”狀態計算機起步點:FFFF0,這是計算機最靠前的程序——主板BIOS(底層代碼)的第一條指令所在地址。43CPU從存儲器或I/O端口讀取數據的時序

MOVAL,[2000H];從存儲器2000H讀取數據INAL,20H;從I/O端口20H讀取數據返回數據收發控制返回到41448086寫周期的時序返回到2.1.3MOV[2000H],AL;往存儲器2000H寫數據OUT20H,AL;往I/O端口20H寫數據45中斷技術概念46中斷操作和中斷系統主程序中斷0中斷1中斷2中斷254中斷255斷點中斷號0中斷號255指令:INTn中斷表返回到4147中斷向量表名詞:中斷號—

類型嗎中斷服務程序首地址

——

中斷向量中斷表—

中斷向量表48中斷號的索取方式指令索取INTn,n為中斷號CPU指定如非屏蔽外中斷的類型碼為n=2.外設通過總線將中斷號n送入CPU498086/8088的中斷號配置注:0、1、2、3、4上述五個類型嗎為系統專用號,別人不得使用!2號指定一個范圍指定一個范圍0號1號4號3號50

256個中斷向量在中斷向量表中的位置計算第n個中斷向量所在位置的段地址:

0000H第n個中斷向量所在位置的偏移地址:中斷號×451256個中斷號的分配安排

中斷向量表位于主存的第0段,占0-3FFH區域,共1KB存儲空間。52

256個中斷向量在中斷向量表中的存放規則偏移地址在前段地址在后例如:將某向量

4030:2010存入表的0號位置:0000:0000100000:0001200000:0002300000:00034053

256個中斷向量在中斷向量表中的存放規則例如:將某向量

4030:2010存入表的40H號位置:0000:0100100000:0101200000:0102300000:01034054中斷向量和中斷向量表的計算

已知中斷類型號,找對應的中斷子程序位置:

假定類型號為20H,其所對應的中斷向量存放的位置:0000:0080H開始的4個單元中,如果0080H、0081H、0082H、0083H這4個單元中的值分別為10H20H30H40H,那么,在這個系統中,20H號中斷所對應的中斷向量為4030:2010。即對應的中斷子程序首地址為:4030:2010。

中斷類型號17H對應的中斷向量存放起點為0000:005CH,所以,0段005CH、005DH、005EH、005FH這4個單元中的值應當分別為90H、78H、45H、23H。(注:地址低位在前)

已知中斷向量為2345:7890,將其放在類型號17H處的向量中:55

中斷號的索取方式

(計算機進入中斷程序的原因)CPU執行指令時產生異常前面講的益處中斷、除數為0中斷都是。環境產生異常前面講的可屏蔽中斷和非屏蔽中斷都是。3.程序執行中斷調用指令INTn568086/8088對中斷響應過程的流程圖

注:TF為單步標志,也叫跟蹤標志;IF為中斷允許標志

TEMP為暫存單元非屏蔽請求可屏蔽請求保護斷點57

中斷子程序的調用附錄二常用DOS功能調用(INT21H)P307附錄三常用ROM--BIOS功能調用(P312)(INT10H、INT11H……INT1AH)

一個中斷功能號可以掛很多個不同的子功能號(裝入AH里),最多可以掛多少?58到此,中斷技術講述結束.下面講地址總線的管理.592.1.48086的存儲器編址和I/O編址00000FFFFF6FFFF60000I/O口使用統一編址00000FFFFF0000FFFFI/O口使用獨立編址M/~IO內存/外設控制兩種編址方案

602.1.48086的存儲器編址和I/O編址

(1)編址方式統一編址:內存和I/O口統一占用20根地址線其物理地址范圍:000000H~FFFFFH

存儲空間為:1MB獨立編址:內存占用20根地址線,其物理地址范圍:000000H~FFFFFH

I/O口占用前16根地址線其物理地址范圍:0000H~FFFFH

存儲空間為:64KB注意:1MB貯存是分段管理的,

64KB口地址不分段。61計算機存儲器幾個典型區域的說明(1)00000~003FFH共1KB區域用來存放中斷向量,這一區域稱為中斷向量表。此表共可裝256個中斷向量。對一個具體系統來說,一般并不需要多達256個中斷類型,因此,實際系統中的中斷向量表的大部分區域是空白的。(2)B0000H~B0F9FH約4KB是單色顯示器的顯示緩沖區,存放單色顯示器當前屏幕顯示字符所對應的ASCII碼和屬性。(3)B8000H~BF3FH約16KB是彩色顯示器的顯示緩沖區,存放彩色顯示器當前屏幕像素所對應的代碼。(4)從FFFF0H開始到存儲器底部FFFFFH共16個字節,一般用來存放一條無條件轉移指令,轉到系統的初始化程序處。系統在加電或者復位時,會自動轉到FFFF0H處開始程序運行。

注意1:系統BIOS代碼的起始地址即為FFFF0H。注意2:①②③都是操作系統給與的安排。

6200000FFFFF中斷向量表所在區域系統代碼啟動點彩色顯示器的顯示緩沖區單色顯示器的顯示緩沖區63

8086的I/O編址研究I/O端口地址用了8086地址總線的低16位:A0~A15.

解決地址重疊問題的辦法:硬件采?。豪肅PU的第28管腳軟件采取:MOV/OUTIN指令

8086系統和外部設備之間都是通過I/O芯片來聯系的。每個I/O芯片都有一個端口或者幾個端口,一個端口往往對應了芯片內部的一個寄存器或者一組寄存器。微型機系統要為每個端口分配一個地址,此地址叫端口號。當然,各個端口號不能重復。

8086允許有65536個8位的I/O端口,兩個編號相鄰的8位端口可以組合成一個16位端口。指令系統中既有訪問8位端口的輸入輸出指令,也有訪問16位端口的輸入輸出指令。INAL,200H;從外設端口(地址200H)輸入8位信號

INAX,200H;從外設端口(地址200H)輸入16位信號

OUT300H,AL;輸出(端口地址300H)64下面簡單介紹32位微型計算機系統

新技術:1、虛擬存儲技術2、片內存儲管理技術3、存儲體管理分段分頁保護技術。段的新概念:段基地址:32位段偏移量:32位662.232位微處理器803861985年10月,Inter公司推出了32位微處理器80386。80386特點:1.32位數據總線。

2.32位地址總線,直接尋址能力:4GB

3.時鐘頻率16MHz(8086為8MHz)

新技術:虛擬存儲技術,片內存儲管理技術,存儲體管理分段分頁保護技術。67虛擬存儲技術段的新概念:段基地址:32位段偏移量:32位最小段:1B

最大段:4GB

允許最多段數:14k個總存儲空間(最大):14k×4GB=64T

注意:大多數空間是虛擬的6880386的寄存器

說明1、EIP32位指針寄存器

IP16位指針寄存器可以與8086兼容2、EFLAGS32位標志寄存器3、GDTR全局描述符表寄存器。(指出全局描述符表位置)4、IDTR中斷描述符表寄存器

。(指出中斷描述符表位置)5、LDTR局部描述符表寄存器。(指出局部描述符表位置)

6、CR0~CR3控制寄存器,保存各種全局性狀態。

7、DR0~DR7調試寄存器

8、TR6TR7測試寄存器6980386的標志寄存器狀態標志:CF,PF,AF,ZF,SF,OF,NT控制標志:DF,IF,IOPL系統方式標志:VM,RF說明:IOPL在保護方式下,用來限制I/O指令的使用特權級。

VM=1時,即進入虛擬8086方式。

RF用于調試失敗后,強迫程序恢復執行。

8086的標志寄存器

7032位機的尋址方式發生了革命性的變化●引入了虛擬空間、虛擬地址的新概念●發展了段的概念,引進了段描述符表技術71從邏輯地址到線性地址的轉換72從邏輯地址到物理地址的轉換此偏移量為線性地址的低12位,高20位通過復雜換算產生頁表32位頁基地址73從段選擇子到段基址

段選擇子段描述符邏輯地址物理地址

RPL:定義此段使用的特權級別0-1-2-3共可裝入16K個段描述符段描述符(看下頁)TI=0為全局描述符表GDT表LDT表74存在P=0,則說明此段不在主存內,應從硬盤調入,這就是“訪問段異常”75保護方式下段地址的產生

1、描述符表(段描述符表)包含大量描述符,指出段的屬性(位置、大小、類型[代碼段?堆棧段?數據段?])和保護特性。2、段描述符表共用三個。一個全局段描述符表,一個局部段描述符表,

一個中斷描述符表。

7680386的段描述符寄存器說明:20位段界限值,定義了該段的長度,計算單位有“粒度”定義,字節或頁(粒度=1則為頁,1頁=4KB)“存在”=1,說明此段已裝入主存;=0,說明還在磁盤中。從而完成實地址和虛地址的變換統一:執行此段時發現為虛則立即從磁盤調入內存!與段描述符表中的每一項的結構完全一樣。從描述符表中取出的一項放入相應的寄存器中77從邏輯地址到物理地址的轉換此偏移量為線性地址的低12位,高20位通過復雜換算產生頁表32位頁基地址7880386的信號第3章

8086匯編語言指令系統

《微機原理與接口技術》80

本章主要內容8086指令的格式常用匯編語言指令介紹匯編語言編程的格式(補)818086指令的格式

操作碼操作數…….操作數操作碼字段指示計算機要干什么?操作數字段指出在指令執行操作的過程中所需要數據的來源。舉例:三條指令:MOVAX,0064H;數據傳送指令機器碼:B86400ADDAX,0100H;加法指令機器碼機器碼:050001MOV[2000],AX;數據傳送指令機器碼:A30020指令一般格式操作數字段的三種形式:

1、操作數本身(立即尋址方式)

2、操作數地址(直接尋址方式)

3、指向操作數地址的指針(間接尋址方式)3.18086的尋址方式一、數據尋址方式(二、程序尋址方式)

1、立即尋址方式例:MOVAL,08H2、寄存器尋址方式例:MOVAX,BX3、直接尋址方式例:MOVAX,[2000H];段地址在DS中,指令不用寫

4、寄存器間接尋址例:MOVAX,[BX]

如已知(DS)=2000H,(BX)=1000H,(21000H)=3050H

問:此指令執行后,(AX)=?

二、程序尋址方式1、段內直接轉移

JMPNEARPTRPROGIA

;無條件轉,16位跳轉范圍

JMPSHORTQUEST

;無條件轉,08位跳轉范圍;PROGIA,QUEST

為符號地址

2、段間直接尋址方式

JMPFARPTRNEXT

;NEXT

為符號地址

3.28086的指令系統常用匯編指令:1、MOVAX,1234H立即尋址方式指令2、MOVAX,[1234H]直接尋址方式指令3、MOVAX,BX寄存器尋址方式4、MOVAX,[BX]寄存器間接尋址方式5、MOVAX,[BX][DI]基址變址尋址方式6、INAX,28HI/O口傳送指令—設備信號讀入7、OUT5,ALI/O口傳送指令—寫入設備,如遇大地址用DX8、JMPOPR無條件轉移到OPR9、JCOPR有進位轉移到OPR10、JZOPR結果為零轉移到OPR11、JNZOPR結果非零轉移到OPR12、MOVBX,OFFSETLIST地址傳送指令13、ADDAX,BX不帶進位加14、ADCAX,BX帶進位加15、INCAX;加1指令16、DECCX;減1指令17、INTN調用指令,N為中斷號18、IRET中斷服務返回指令85

I/O口傳送指令:外設輸入指令:

例1:INAX,28H;從端口28H輸入一字例2:MOVDX,3FCHINAX,DX;對16位地址必須借助;DX寄存器尋址

向外設輸出指令:

例1:OUT5,AL;向端口5輸出一字節例2:MOVDX,500HOUTDX,AL;對16位地址必須借助

;DX寄存器尋址注意:I/O大地址必須用DX寄存器尋址方式條件轉移指令的應用編程舉例:MOVCX,30MOVBX,0AGAIN:

INCBXDECCXJNZAGAINMOVAX,BX循環指令:LOOP

MOVCX,30

MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX簡單學習附錄1:8086指令系統一覽表87常用偽指令:1、等值偽指令:EQUmmequ56;定義后,mm就等于56

2、定義數據的偽指令:DB,DW

它們分別定義:1個字節、2個字節

ABCDB39,250,?,0,?;定義字節單元

DEFDW983,2358,?,?;定義字單元(像數組)3、地址計數器:$

arraydb32,43,56,8,65countequ$-array4、段定義偽指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS88匯編語言程序的格式數據段名SEGMENT

;SEGMENT

段定義偽指令,與ENDS構成一對使用數據空間預置數據段名ENDS堆棧段名

SEGMENT

堆棧空間預置堆棧段名ENDS代碼段名SEGMENTASSUME

段地址說明START:

段地址裝填(除代碼段CS外,其它段均要裝填。CS段是系統在加載程序后自動裝填的,即由操作系統的任務管理程序自動完成裝填的,此項裝填不需要用戶管理。)主程序體

..代碼段名ENDS;代碼段結束

ENDSTART;全部程序結束89datasegment;數據段

arraydb32,43,56,8,65countequ$-arraysumdw?dataendsstacksegment;堆棧段

stakdb10dup(?)stackendscodesegment;代碼段

assumecs:code;段地址說明

ds:datass:stack;前面全是偽指令

start:movax,data;段地址裝填

movds,axmovax,stackmovss,ax;;;;代碼段不用裝填??!

movdi,offsetsum;有效地址

movbx,offsetarraymovcx,countmovax,0Lop:addal,[bx]adcah,0;帶進位加

incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart例:編一個程序,其功能是對5個數據求和,并將結果放入SUM單元。14、

ABCDB39,250,?,0,?

定義數據的偽指令15、SEGMENT……ENDS

段定義偽指令91常用匯編語言指令介紹一、數據尋址方式類指令(只講以后用到的主要指令)

2.

寄存器尋址方式

例3.4(a)MOVAX,BX;16位例3.4(b)MOVECX,EDX

;32位,80386機及以后才有

1.

立即尋址方式

例3.1MOVAL,8;(AL)=08H,08H是立即數例3.2MOVAX,1234H;(AX)=1234H例3.3MOVEAX,12345678H;(EAX)=12345678H.

注意:立即數長度應予目的操作數長度一致。923.

直接尋址方式

例3.5MOVAX,[2000H];注意2000H是偏移地址,也稱有效地址如(DS)=3000H,(32000H)=3050H,執行結果為:(AX)=3050H。說明:該指令的有效地址為2000H,操作數的物理地址=數據段基地址*16+有效地址(2000H)注意:不要與立即尋址方式相混淆。(害怕混淆所以用了[])934.基址變址尋址方式

例:MOVAX,[BX][DI](或寫為:MOVAX,[BX+DI])對于32位尋址方式可有:

MOVEDX,[EBX][EDI]

這種尋址方式適用于數組(一維、二維)或表格處理,其首地址可存放在基址寄存器中,而通過修改變址寄存器的內容來訪問數組中的各個元素。一、數據尋址方式類指令[上面所講]二、程序尋址方式類指令[程序跳轉]1、段內無條件轉移指令:

JMPNEARPTRPP;近轉移(16/32)PP為符號地址

;NEARPTR

為操作符。;對8086轉移16位,對386及以后機型轉移32位

2、段間無條件遠轉移指令:

JMPWORDOTROPR

;OPR為符號地址●后面還要介紹有條件跳轉94

其他類型匯編語言指令補充1、PUSHAX;進棧指令2、POPAX;出棧指令3、PUSHF;標志寄存器內容進棧4、POPF;標志寄存器內容出棧

I/O口傳送指令:5、外設輸入指令:例1:INAX,28H;從端口28H輸入一字例2:MOVDX,3FCHINAX,DX;對16位地址必須借助;DX寄存器尋址6、向外設輸出指令:例1:OUT5,AL;向端口5輸出一字節例2:MOVDX,500HOUTDX,AL;對16位地址必須借助

;DX寄存器尋址注意:I/O大地址必須用DX寄存器尋址方式4957、地址傳送指令:LEALEABX,LIST;將符號地址LIST的有效地址送BXMOVBX,OFFSETLIST;同上,又一種寫法,建立中斷向量;時要用到。;表示某段子程序LIST:***************

8、加減指令

ADDAX,CX;不帶進位加AX(AX)-(CX)

ADCDX,BX;帶進位加

SUBAX,BX;減法指令AX(AX)-(BX)

INCAX;加1DECCX;減1注意:MOVBX,LIST([LIST])什么意思?969、邏輯運算指令(1)AND邏輯與指令格式:ANDDST,SRC

執行的操作:(DST)←(DST)∧(SRC)

(2)TEST測試指令格式:TESTOPR1,OPR2

執行的操作:(OPR1)∧(OPR2),兩個操作數相與的結果不保存,只改變相關標志位,如零標志。例:TESTAX,01H;測試AX的第0位

JZEVEN;為0轉移,條件轉移指令JZ,下面要講到例:TESTAX,01H;測試AX的第0位

JNZEVEN;為1轉移9710、條件轉移指令[程序何往?憑啥條件?]①JZOPR測試條件:ZF=1,結果為零轉移;②JNZOPR測試條件:ZF=0,結果不為零轉移;③JCOPR測試條件:CF=1,有借位(進位)轉移;

條件轉移指令的應用舉例:MOVCX,30MOVBX,0AGAIN:

INCBXDECCXJNZAGAINMOVAX,BX11、循環指令LOOP

MOVCX,30

MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX9812.比較指令CMPop1,op2;op1-op2有借位嗎?執行后只改變借位標志注:op1是寄存器,op2是立即數或存儲器單元;此指令要配合條件轉移指令使用。例:x1x2為兩個字節單元,請按由小到大順序放入y1y2

字節單元。編程:moval,x1cmpal,x2jcminmovy2,al;如減法指令為SUB,將出錯!

movy1,x2endd:movah,4chint21h;返回DOSmin:movy1,almovy2,x2jmpendd;無條件轉移作業:請按由大到小順序放入y1y2字節單元。9912、子程序的調用與返回指令

CALL調用指令

RET返回指令14、中斷的調用與返回指令

INTN調用指令,N為中斷號

IRET從中斷服務子程序中返回指令

注意:這里是軟件中斷的調用但無論是怎么進入的中斷服務子程序,子程序的最后結束句必須是IRET100常用偽指令:1、等值偽指令:EQUmmequ56;定義后,mm就等于56

2、定義數據的偽指令:DB,DW

它們分別定義:1個字節、2個字節

ABCDB39,250,?,0,?;定義字節單元

DEFDW983,2358,?,?;定義字單元(像數組)3、地址計數器:$

arraydb32,43,56,8,65countequ$-array4、段定義偽指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS第4章

匯編語言程序設計

《微機原理與接口技術》102

本章主要內容匯編語言程序的格式簡單程序的編寫103匯編語言程序的格式●第一步:定義各段●第二步:給各段寄存器裝段值(代碼段除外)●第三步:展開寫程序(在代碼段中寫)104常用匯編指令總復習:1、MOVAX,1234H立即尋址方式指令

2、MOVAX,[1234H]直接尋址方式

指令3、

MOVAX,BX寄存器尋址方式

4、MOVAX,[BX]

寄存器間接尋址方式5、

MOVAX,[BX][DI]基址變址尋址方式6、INAX,28HI/O口傳送指令—設備信號讀入7、

OUT5,ALI/O口傳送指令—寫入設備8、

JCOPR有進位轉移到OPR9、JZOPR結果為零轉移到OPR10、JNZOPR結果非零轉移到OPR11、JMP

OPR無條件轉移到OPR12、MOVBX,OFFSETLIST

地址傳送指令13、ADCDX,BX帶進位加14、ABCDB39,250,?,0,?定義數據的偽指令15、SEGMENT……ENDS段定義偽指令105匯編語言程序的格式數據段名SEGMENT

;SEGMENT

段定義偽指令,與ENDS構成一對使用數據空間預置數據段名ENDS堆棧段名

SEGMENT

堆棧空間預置堆棧段名ENDS代碼段名SEGMENTASSUME

段地址說明START:

段地址裝填(除代碼段CS外,其它段均要裝填。CS段是系統在加載程序后自動裝填的,即由操作系統的任務管理程序自動完成裝填的,此項裝填不需要用戶管理。)主程序體

..代碼段名ENDS;代碼段結束

ENDSTART;全部程序結束106datasegment;數據段

arraydb32,43,56,8,65countequ$-arraysumdw?dataendsstacksegment;堆棧段

stakdb10dup(?)stackendscodesegment;代碼段

assumecs:code;段地址說明

ds:datass:stack;前面全是偽指令

start:movax,data;段地址裝填

movds,axmovax,stackmovss,ax;;;;代碼段不用裝填?。?/p>

movdi,offsetsum;有效地址

movbx,offsetarraymovcx,countmovax,0Lop:addal,[bx]adcah,0;帶進位加

incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart例:編一個程序,其功能是對5個數據求和,并將結果放入SUM單元。107

幾點易混淆的概念datasegmentarraydb32,43,56,8,65countequ$-arraysumdw?dataends

stacksegmentstakdb10dup(?)stackendscodesegmentassumecs:code,ds:datass:stackstart:movax,datamovds,ax;數據段賦值。注意1:;通過寄存器送ds是必;須的;注意2:data是;segment定義的特殊;符號,否則mov存的;將不是段。

movax,stackmovss,ax;堆棧段賦值

movdi,offsetsummovbx,offsetarray

;若寫成movbx,array;或寫成movbx,[array]??

movcx,countmovax,0Lop:addal,[bx]adcah,0;帶進位加

incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart108datasegment;數據段

x1db?maxdb?mixdb?dataendscodesegment;代碼段

assumecs:code;段地址說明

ds:datastart:movax,data;段地址裝填

movds,axmov

al,65cmpal,[x1];cmpal,x1也可

jcaaamovmax,65;

jmpbbb

aaa:movmax,[x1]jmpenddbbb:moval,8cmpal,[x1]jcenddmovmin,[x1]jmpcccendd:movmin,8ccc:movah,4chint21h;返回DOScodeendsendstart作業1:編一個程序,將6個數據32,43,56,8,65,x1的最大數放入MAX單元,將最小數放入MIN單元。注意:x1為放有數的字節單元(符號地址)。109作業2:編一個程序,將3個數據x1,x2,x3的最大數放入MAX單元,將最小數放入MIN單元。注意:x1,x2,x3為三個放有數的字節單元。解:datasegment;數據段

x1db?x2db?x3db?

溫馨提示

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

評論

0/150

提交評論