




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
講授:李泉溪
《接口技術(shù)》接口技術(shù)學什么?軟件方面硬件方面怎么連結(jié)?接口技術(shù)3計算機概述●二進制●數(shù)與碼●ASCII碼與奇偶校驗●Inter公司歷代微處理器典型產(chǎn)品Inter公司歷代微處理器典型產(chǎn)品第2章微處理器結(jié)構(gòu)圖1微型計算機結(jié)構(gòu)圖9第2章微處理器結(jié)構(gòu)102.116位微處理器80862.1.18086的編程結(jié)構(gòu)總線接口部件區(qū)
執(zhí)行部件區(qū)
標志內(nèi)容算數(shù)邏輯帶來流水線機制注:微處理器8088,與8086是姐妹產(chǎn)品,其特點是:
1.外部總線少8根數(shù)據(jù)線;2.指令隊列少兩個緩沖器注:將來實驗用的是8088.11EU控制器ALU暫存器標志寄存器8位隊列總線總線控制邏輯內(nèi)部總線16位地址加法器20位地址總線16位數(shù)據(jù)總線執(zhí)行部件EU總線接口部件BIU123456指令隊列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暫存器8086總線主存專用寄存器12
標志寄存器F唯一能按位操作的寄存器只定義了其中9位,另外7位未定義(不用)6位狀態(tài)標志:OF、SF、ZF、
PF、CF、AF3位控制標志:DF、IF、TFOFDFIFTFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0進位標志奇偶標志輔助進位標志零標志符號標志單步跟蹤標志中斷允許標志方向標志益處標志︻補碼運算用︼9.2013狀態(tài)標志反映指令對數(shù)據(jù)作用之后,結(jié)果的狀態(tài)(不是結(jié)果本身)。這些狀態(tài)將控制后續(xù)指令的執(zhí)行OF(OverflowFlag):溢出標志(指補碼),F(xiàn).11OF=1:在運算過程中,如操作數(shù)超過了機器表示的范圍稱為溢出。OF=0:在運算過程中,如操作數(shù)未超過了機器能表示的范圍稱為不溢出。字節(jié)允許范圍:-128—+127字允許范圍:-32768—+3276714狀態(tài)標志CF(CarryFlag):進位/借位標志,F(xiàn).0CF=1:最高位需要向前產(chǎn)生進位/借位。CF=0:最高位不會向前產(chǎn)生進位/借位。AF(AuxiliaryCarryFlag):輔助進位標志,F(xiàn).4AF=1:數(shù)據(jù)的第3位(半個字節(jié))需要向前產(chǎn)生進位/借位。AF=0:數(shù)據(jù)的第3位(半個字節(jié))不會向前產(chǎn)生進位/借位。15狀態(tài)標志SF(SignFlag):符號標志,F(xiàn).7SF=1:運算結(jié)果的最高位為1,如果為帶符號數(shù),則為負數(shù)。SF=0:運算結(jié)果的最高位為0,如果為帶符號數(shù),則為正數(shù)。帶符號數(shù)的最高位為符號位;而無符號數(shù)的最高位為數(shù)值位。ZF(ZeroFlag):全零標志,F(xiàn).6ZF=1:運算結(jié)果為全0。不包括進位的情況ZF=0:運算結(jié)果不為0。16狀態(tài)標志PF(ParityFlag):奇偶標志F.2PF=1:結(jié)果的低8位中有偶數(shù)個1。PF=0:結(jié)果的低8位中有奇數(shù)個1。有些運算操作將影響全部狀態(tài)標志,如加法、減法運算有些操作影響部分狀態(tài)標志,如移位操作有些指令的操作不影響任何狀態(tài)標志,如數(shù)據(jù)傳送指令(遠程傳送例外)17例:計算機執(zhí)行兩個數(shù)的加法
0010
0011
0100
0101
+
0011
0010
0001
10010101
0101
0101
1110分析:1.運算結(jié)果的最高位是0,所以符號標志SF=0
2.運算結(jié)果本身不為0,所以零標志ZF=0
3.運算結(jié)果低8位1的個數(shù)為奇數(shù),奇偶標志PF=0
4.運算最高位沒有產(chǎn)生進位,所以進位標志CF=0
5.第3位沒有往第4位進位,所以輔助進位標志AF=0
6.運算結(jié)果沒有超出有效范圍,所以溢出標志OF=0
18控制標志DFIFTF控制標志位的值不由數(shù)據(jù)運算的結(jié)果決定,而由指令直接賦值控制標志決定后續(xù)指令的執(zhí)行情況DF(DirectionFlag):方向控制標志位,F(xiàn).10用于串處理指令,控制從前往后、還是從后往前對字符串進行操作處理DF=1,每次串處理操作后使變址寄存器SI和DI的值遞減,使串處理從高地址向低地址方向處理。DF=0,每次串處理操作后使變址寄存器SI和DI的值遞增,使串處理從低地址向高地址方向處理。19控制標志DFIFTFIF(InteruptFlag):中斷允許/禁止標志位F.9IF=1,允許外部可屏蔽中斷。CPU可以響應可屏蔽中斷請求。IF=0,關閉中斷。CPU禁止響應可屏蔽中斷請求。IF的狀態(tài)對不可屏蔽中斷和內(nèi)部軟中斷沒有影響。TF(TrapFlag):跟蹤(陷阱)標志位F.8TF=1,每執(zhí)行一條指令后,自動產(chǎn)生一次內(nèi)部中斷,使CPU處于單步執(zhí)行指令工作方式,便于進行程序調(diào)試,用戶能檢查程序。TF=0,CPU正常工作,不產(chǎn)生陷阱。20控制標志與狀態(tài)標志的區(qū)別控制標志的值:由系統(tǒng)程序或用戶程序根據(jù)需要用指令設置。狀態(tài)信息:由中央處理器執(zhí)行運算指令,并根據(jù)運算結(jié)果而自動設置。X86CPU也提供了直接設置狀態(tài)標志之值的指令21AXBXCXDX8086的通用寄存器目的變址指針(DestinationIndex)DI源變址指針(SourceIndex)SI基址指針(BasePointer)BP堆棧指針(StackPointer)SP數(shù)據(jù)寄存器(Data)DLDHDX計數(shù)寄存器(Count)CLCHCX基址寄存器(Base)BLBHBX累加器(Accumulator)ALAHAX數(shù)據(jù)寄存器可分為兩個8位,主要用于數(shù)據(jù)操作地址指針主要用于地址操作16位8822通用寄存器的特殊用法(默認用法)寄存器特殊用法AX,AL乘法/除法指令,作累加器;I/O操作時,作數(shù)據(jù)寄存器AH在LAHF指令中用作目的寄存器((AH)←標志)AL在BCD碼及ASCII碼運算指令中作為累加器;在XLAT指令中作為累加器(AL)←((AL)+(BX))BX在間接尋址中作為基址寄存器和變址寄存器CX在循環(huán)程序中,作循環(huán)次數(shù)計數(shù)器CL在移位和循環(huán)移位指令中,作為移位位數(shù)和循環(huán)移位次數(shù)的計數(shù)寄存器(指令執(zhí)行后,(CL)不變)DXI/O指令間接尋址時,作為地址寄存器;在乘法指令中作為輔助累加器(當乘積或被除數(shù)為32位時,存放高16位數(shù))BP在間接尋址中,作為基址寄存器SP在堆棧操作中,作為堆棧指針SI間接尋址時,作為地址寄存器或變址寄存器;在串操作指令中作為源變址寄存器DI在間接尋址時,作為地址寄存器或變址寄存器;在串操作指令中作為目的變址寄存器23EU控制器ALU暫存器標志寄存器8位隊列總線總線控制邏輯內(nèi)部總線16位地址加法器20位地址總線16位數(shù)據(jù)總線執(zhí)行部件EU總線接口部件BIU123456指令隊列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暫存器8086總線討論:1.以算術(shù)邏輯單元ALU為中心
2.以主存為中心主存24標志寄存器標志寄存器(FlagRegister)共有16位,其中7位未用。標志寄存器內(nèi)容如圖2-2所示:(1)條件類標志:CFZFSFPFOFAF(2)控制類標志:DFIFTF條件標志分別為:進位CF、零ZF、符號SF、奇偶PF、溢出OF、輔助進位AF(半進位)控制標志意思如下:DF:方向標志,為0則串操作時地址增值IF:中斷標志,為0則中斷屏蔽TF:單步標志,為0則連續(xù)執(zhí)行程序25ORG10100H;偽指令:CS=1000h;IP=0100HMOVAX,0064H;數(shù)據(jù)傳送指令機器碼:B86400ADDAX,0100H;加法指令機器碼機器碼:050001MOV[2000],AX;數(shù)據(jù)傳送指令機器碼:A30020
;DS=1492H由操作系統(tǒng)安置;IP=2000H由指令安置注:CS—代碼段寄存器
DS—數(shù)據(jù)段寄存器注:物理地址需要合成產(chǎn)生
IP—指令指針寄存器微處理器8088執(zhí)行匯編語言程序過程演示268088的指令執(zhí)行過程段地址寄存器278086總線周期的概念CPU主存************程序時鐘外部存儲器硬盤接口DMA啟動程序288086總線周期的概念總線周期:4個時鐘周期組成,4個時鐘周期分別叫做:
T1狀態(tài)、T2狀態(tài)、T3狀態(tài)、T4狀態(tài)
問:你的電腦時鐘周期是多少?T1狀態(tài):CPU通過復用總線往存儲單元發(fā)地址T2狀態(tài):CPU撤銷地址信號T3狀態(tài):CPU啟動復用總線數(shù)據(jù)傳輸T4狀態(tài):總線周期結(jié)束Tw狀態(tài):存儲器或I/O口未準備好,要等待(要作解釋)TI狀態(tài):空閑周期,即非總線傳輸?shù)闹噶睿缰噶铌犃袧M了。返回27291.8086CPU的引腳信號2.最小工作模式3.最大工作模式2.1.28086的引腳信號
和工作模式30圖2.48086/8088的引腳信號(括號中為最大模式時的引腳名)(a)8086的引腳信號;(b)8088的引腳信號8086/8088CPU引腳返回5731
看圖要點1、40個管腳分3類2、很多管腳有多個功能32數(shù)據(jù)線(D0~D15)地址線(A0~A19)MN/MX最小/最大模式轉(zhuǎn)換BHE數(shù)據(jù)高8位允許信號ALE地址鎖存信號DEN使能信號[數(shù)據(jù)傳輸允許】DT/R數(shù)據(jù)傳輸方向控制M/IO內(nèi)存/外設控制READY準備好信號,控制Tw插入數(shù)RESET復位信號HOLD、HLDA總線控制INTR、INTA中斷控制NMI非屏蔽中斷331、8086的最小模式MN/MX最小/最大模式轉(zhuǎn)換BHE數(shù)據(jù)高8位允許信號ALE地址鎖存信號DEN使能信號[數(shù)據(jù)傳輸允許】DT/R數(shù)據(jù)傳輸方向控制M/IO內(nèi)存/外設控制READY準備好信號,控制Tw插入數(shù)。RESET復位信號HOLD、HLDA總線控制INTR、INTA中斷控制NMI非屏蔽中斷34地址信號的分離選通端,接ALE輸出允許端A0~A15AD0~AD153片8282的連法35數(shù)據(jù)信號的分離請看計算機讀寫數(shù)據(jù)的時序分析方向控制端輸出允許端AD0~AD7D0~D736CPU時鐘信號的獲得復位端準備好信號端EFI:外振源輸入端,無晶振時用372、8086的最大模式38最大模式下控制信號的產(chǎn)生2009-2-2639最大模式與最小模式比較共同點:1、時鐘及其產(chǎn)生電路是一樣的。
2、數(shù)據(jù)總線、地址總線的處理和連法是一樣的。不同點:1、控制信號的產(chǎn)生機理不一樣,控制信號的類型有所不同。
2、最小模式用一個CPU,最大模式用兩個CPU。一個專門做輔助計算。
402.1.38086的操作和時序
操作:
計算機在運行過程中,需要CPU執(zhí)行許多操作。8086的主要操作分為以下5種類型:①系統(tǒng)的啟動和復位操作;[后面專門講]②暫停操作;由暫停指令HLT(p134)產(chǎn)生,等待外中斷用③總線操作;
[總線讀寫操作時序圖]④中斷操作;[后面專門講]⑤總線控制(請求/允許,多主系統(tǒng)時)。418086的復位操作時序返回系統(tǒng)的復位42計算機復位時“強制”狀態(tài)計算機起步點:FFFF0,這是計算機最靠前的程序——主板BIOS(底層代碼)的第一條指令所在地址。43CPU從存儲器或I/O端口讀取數(shù)據(jù)的時序
MOVAL,[2000H];從存儲器2000H讀取數(shù)據(jù)INAL,20H;從I/O端口20H讀取數(shù)據(jù)返回數(shù)據(jù)收發(fā)控制返回到41448086寫周期的時序返回到2.1.3MOV[2000H],AL;往存儲器2000H寫數(shù)據(jù)OUT20H,AL;往I/O端口20H寫數(shù)據(jù)45中斷技術(shù)概念46中斷操作和中斷系統(tǒng)主程序中斷0中斷1中斷2中斷254中斷255斷點中斷號0中斷號255指令:INTn中斷表返回到4147中斷向量表名詞:中斷號—
類型嗎中斷服務程序首地址
——
中斷向量中斷表—
中斷向量表48中斷號的索取方式指令索取INTn,n為中斷號CPU指定如非屏蔽外中斷的類型碼為n=2.外設通過總線將中斷號n送入CPU498086/8088的中斷號配置注:0、1、2、3、4上述五個類型嗎為系統(tǒng)專用號,別人不得使用!2號指定一個范圍指定一個范圍0號1號4號3號50
256個中斷向量在中斷向量表中的位置計算第n個中斷向量所在位置的段地址:
0000H第n個中斷向量所在位置的偏移地址:中斷號×451256個中斷號的分配安排
中斷向量表位于主存的第0段,占0-3FFH區(qū)域,共1KB存儲空間。52
256個中斷向量在中斷向量表中的存放規(guī)則偏移地址在前段地址在后例如:將某向量
4030:2010存入表的0號位置:0000:0000100000:0001200000:0002300000:00034053
256個中斷向量在中斷向量表中的存放規(guī)則例如:將某向量
4030:2010存入表的40H號位置:0000:0100100000:0101200000:0102300000:01034054中斷向量和中斷向量表的計算
已知中斷類型號,找對應的中斷子程序位置:
假定類型號為20H,其所對應的中斷向量存放的位置:0000:0080H開始的4個單元中,如果0080H、0081H、0082H、0083H這4個單元中的值分別為10H20H30H40H,那么,在這個系統(tǒng)中,20H號中斷所對應的中斷向量為4030:2010。即對應的中斷子程序首地址為:4030:2010。
中斷類型號17H對應的中斷向量存放起點為0000:005CH,所以,0段005CH、005DH、005EH、005FH這4個單元中的值應當分別為90H、78H、45H、23H。(注:地址低位在前)
已知中斷向量為2345:7890,將其放在類型號17H處的向量中:55
中斷號的索取方式
(計算機進入中斷程序的原因)CPU執(zhí)行指令時產(chǎn)生異常前面講的益處中斷、除數(shù)為0中斷都是。環(huán)境產(chǎn)生異常前面講的可屏蔽中斷和非屏蔽中斷都是。3.程序執(zhí)行中斷調(diào)用指令INTn568086/8088對中斷響應過程的流程圖
注:TF為單步標志,也叫跟蹤標志;IF為中斷允許標志
TEMP為暫存單元非屏蔽請求可屏蔽請求保護斷點57
中斷子程序的調(diào)用附錄二常用DOS功能調(diào)用(INT21H)P307附錄三常用ROM--BIOS功能調(diào)用(P312)(INT10H、INT11H……INT1AH)
一個中斷功能號可以掛很多個不同的子功能號(裝入AH里),最多可以掛多少?58到此,中斷技術(shù)講述結(jié)束.下面講地址總線的管理.592.1.48086的存儲器編址和I/O編址00000FFFFF6FFFF60000I/O口使用統(tǒng)一編址00000FFFFF0000FFFFI/O口使用獨立編址M/~IO內(nèi)存/外設控制兩種編址方案
602.1.48086的存儲器編址和I/O編址
(1)編址方式統(tǒng)一編址:內(nèi)存和I/O口統(tǒng)一占用20根地址線其物理地址范圍:000000H~FFFFFH
存儲空間為:1MB獨立編址:內(nèi)存占用20根地址線,其物理地址范圍:000000H~FFFFFH
I/O口占用前16根地址線其物理地址范圍:0000H~FFFFH
存儲空間為:64KB注意:1MB貯存是分段管理的,
64KB口地址不分段。61計算機存儲器幾個典型區(qū)域的說明(1)00000~003FFH共1KB區(qū)域用來存放中斷向量,這一區(qū)域稱為中斷向量表。此表共可裝256個中斷向量。對一個具體系統(tǒng)來說,一般并不需要多達256個中斷類型,因此,實際系統(tǒng)中的中斷向量表的大部分區(qū)域是空白的。(2)B0000H~B0F9FH約4KB是單色顯示器的顯示緩沖區(qū),存放單色顯示器當前屏幕顯示字符所對應的ASCII碼和屬性。(3)B8000H~BF3FH約16KB是彩色顯示器的顯示緩沖區(qū),存放彩色顯示器當前屏幕像素所對應的代碼。(4)從FFFF0H開始到存儲器底部FFFFFH共16個字節(jié),一般用來存放一條無條件轉(zhuǎn)移指令,轉(zhuǎn)到系統(tǒng)的初始化程序處。系統(tǒng)在加電或者復位時,會自動轉(zhuǎn)到FFFF0H處開始程序運行。
注意1:系統(tǒng)BIOS代碼的起始地址即為FFFF0H。注意2:①②③都是操作系統(tǒng)給與的安排。
6200000FFFFF中斷向量表所在區(qū)域系統(tǒng)代碼啟動點彩色顯示器的顯示緩沖區(qū)單色顯示器的顯示緩沖區(qū)63
8086的I/O編址研究I/O端口地址用了8086地址總線的低16位:A0~A15.
解決地址重疊問題的辦法:硬件采取:利用CPU的第28管腳軟件采取:MOV/OUTIN指令
8086系統(tǒng)和外部設備之間都是通過I/O芯片來聯(lián)系的。每個I/O芯片都有一個端口或者幾個端口,一個端口往往對應了芯片內(nèi)部的一個寄存器或者一組寄存器。微型機系統(tǒng)要為每個端口分配一個地址,此地址叫端口號。當然,各個端口號不能重復。
8086允許有65536個8位的I/O端口,兩個編號相鄰的8位端口可以組合成一個16位端口。指令系統(tǒng)中既有訪問8位端口的輸入輸出指令,也有訪問16位端口的輸入輸出指令。INAL,200H;從外設端口(地址200H)輸入8位信號
INAX,200H;從外設端口(地址200H)輸入16位信號
OUT300H,AL;輸出(端口地址300H)64下面簡單介紹32位微型計算機系統(tǒng)
新技術(shù):1、虛擬存儲技術(shù)2、片內(nèi)存儲管理技術(shù)3、存儲體管理分段分頁保護技術(shù)。段的新概念:段基地址:32位段偏移量:32位662.232位微處理器803861985年10月,Inter公司推出了32位微處理器80386。80386特點:1.32位數(shù)據(jù)總線。
2.32位地址總線,直接尋址能力:4GB
3.時鐘頻率16MHz(8086為8MHz)
新技術(shù):虛擬存儲技術(shù),片內(nèi)存儲管理技術(shù),存儲體管理分段分頁保護技術(shù)。67虛擬存儲技術(shù)段的新概念:段基地址:32位段偏移量:32位最小段:1B
最大段:4GB
允許最多段數(shù):14k個總存儲空間(最大):14k×4GB=64T
注意:大多數(shù)空間是虛擬的6880386的寄存器
說明1、EIP32位指針寄存器
IP16位指針寄存器可以與8086兼容2、EFLAGS32位標志寄存器3、GDTR全局描述符表寄存器。(指出全局描述符表位置)4、IDTR中斷描述符表寄存器
。(指出中斷描述符表位置)5、LDTR局部描述符表寄存器。(指出局部描述符表位置)
6、CR0~CR3控制寄存器,保存各種全局性狀態(tài)。
7、DR0~DR7調(diào)試寄存器
8、TR6TR7測試寄存器6980386的標志寄存器狀態(tài)標志:CF,PF,AF,ZF,SF,OF,NT控制標志:DF,IF,IOPL系統(tǒng)方式標志:VM,RF說明:IOPL在保護方式下,用來限制I/O指令的使用特權(quán)級。
VM=1時,即進入虛擬8086方式。
RF用于調(diào)試失敗后,強迫程序恢復執(zhí)行。
8086的標志寄存器
7032位機的尋址方式發(fā)生了革命性的變化●引入了虛擬空間、虛擬地址的新概念●發(fā)展了段的概念,引進了段描述符表技術(shù)71從邏輯地址到線性地址的轉(zhuǎn)換72從邏輯地址到物理地址的轉(zhuǎn)換此偏移量為線性地址的低12位,高20位通過復雜換算產(chǎn)生頁表32位頁基地址73從段選擇子到段基址
段選擇子段描述符邏輯地址物理地址
RPL:定義此段使用的特權(quán)級別0-1-2-3共可裝入16K個段描述符段描述符(看下頁)TI=0為全局描述符表GDT表LDT表74存在P=0,則說明此段不在主存內(nèi),應從硬盤調(diào)入,這就是“訪問段異?!?5保護方式下段地址的產(chǎn)生
1、描述符表(段描述符表)包含大量描述符,指出段的屬性(位置、大小、類型[代碼段?堆棧段?數(shù)據(jù)段?])和保護特性。2、段描述符表共用三個。一個全局段描述符表,一個局部段描述符表,
一個中斷描述符表。
7680386的段描述符寄存器說明:20位段界限值,定義了該段的長度,計算單位有“粒度”定義,字節(jié)或頁(粒度=1則為頁,1頁=4KB)“存在”=1,說明此段已裝入主存;=0,說明還在磁盤中。從而完成實地址和虛地址的變換統(tǒng)一:執(zhí)行此段時發(fā)現(xiàn)為虛則立即從磁盤調(diào)入內(nèi)存!與段描述符表中的每一項的結(jié)構(gòu)完全一樣。從描述符表中取出的一項放入相應的寄存器中77從邏輯地址到物理地址的轉(zhuǎn)換此偏移量為線性地址的低12位,高20位通過復雜換算產(chǎn)生頁表32位頁基地址7880386的信號第3章
8086匯編語言指令系統(tǒng)
《微機原理與接口技術(shù)》80
本章主要內(nèi)容8086指令的格式常用匯編語言指令介紹匯編語言編程的格式(補)818086指令的格式
操作碼操作數(shù)…….操作數(shù)操作碼字段指示計算機要干什么?操作數(shù)字段指出在指令執(zhí)行操作的過程中所需要數(shù)據(jù)的來源。舉例:三條指令:MOVAX,0064H;數(shù)據(jù)傳送指令機器碼:B86400ADDAX,0100H;加法指令機器碼機器碼:050001MOV[2000],AX;數(shù)據(jù)傳送指令機器碼:A30020指令一般格式操作數(shù)字段的三種形式:
1、操作數(shù)本身(立即尋址方式)
2、操作數(shù)地址(直接尋址方式)
3、指向操作數(shù)地址的指針(間接尋址方式)3.18086的尋址方式一、數(shù)據(jù)尋址方式(二、程序?qū)ぶ贩绞剑?/p>
1、立即尋址方式例:MOVAL,08H2、寄存器尋址方式例:MOVAX,BX3、直接尋址方式例:MOVAX,[2000H];段地址在DS中,指令不用寫
4、寄存器間接尋址例:MOVAX,[BX]
如已知(DS)=2000H,(BX)=1000H,(21000H)=3050H
問:此指令執(zhí)行后,(AX)=?
二、程序?qū)ぶ贩绞?、段內(nèi)直接轉(zhuǎn)移
JMPNEARPTRPROGIA
;無條件轉(zhuǎn),16位跳轉(zhuǎn)范圍
JMPSHORTQUEST
;無條件轉(zhuǎn),08位跳轉(zhuǎn)范圍;PROGIA,QUEST
為符號地址
2、段間直接尋址方式
JMPFARPTRNEXT
;NEXT
為符號地址
3.28086的指令系統(tǒng)常用匯編指令: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無條件轉(zhuǎn)移到OPR9、JCOPR有進位轉(zhuǎn)移到OPR10、JZOPR結(jié)果為零轉(zhuǎn)移到OPR11、JNZOPR結(jié)果非零轉(zhuǎn)移到OPR12、MOVBX,OFFSETLIST地址傳送指令13、ADDAX,BX不帶進位加14、ADCAX,BX帶進位加15、INCAX;加1指令16、DECCX;減1指令17、INTN調(diào)用指令,N為中斷號18、IRET中斷服務返回指令85
I/O口傳送指令:外設輸入指令:
例1:INAX,28H;從端口28H輸入一字例2:MOVDX,3FCHINAX,DX;對16位地址必須借助;DX寄存器尋址
向外設輸出指令:
例1:OUT5,AL;向端口5輸出一字節(jié)例2:MOVDX,500HOUTDX,AL;對16位地址必須借助
;DX寄存器尋址注意:I/O大地址必須用DX寄存器尋址方式條件轉(zhuǎn)移指令的應用編程舉例:MOVCX,30MOVBX,0AGAIN:
INCBXDECCXJNZAGAINMOVAX,BX循環(huán)指令:LOOP
MOVCX,30
MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX簡單學習附錄1:8086指令系統(tǒng)一覽表87常用偽指令:1、等值偽指令:EQUmmequ56;定義后,mm就等于56
2、定義數(shù)據(jù)的偽指令:DB,DW
它們分別定義:1個字節(jié)、2個字節(jié)
ABCDB39,250,?,0,?;定義字節(jié)單元
DEFDW983,2358,?,?;定義字單元(像數(shù)組)3、地址計數(shù)器:$
arraydb32,43,56,8,65countequ$-array4、段定義偽指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS88匯編語言程序的格式數(shù)據(jù)段名SEGMENT
;SEGMENT
段定義偽指令,與ENDS構(gòu)成一對使用數(shù)據(jù)空間預置數(shù)據(jù)段名ENDS堆棧段名
SEGMENT
堆??臻g預置堆棧段名ENDS代碼段名SEGMENTASSUME
段地址說明START:
段地址裝填(除代碼段CS外,其它段均要裝填。CS段是系統(tǒng)在加載程序后自動裝填的,即由操作系統(tǒng)的任務管理程序自動完成裝填的,此項裝填不需要用戶管理。)主程序體
..代碼段名ENDS;代碼段結(jié)束
ENDSTART;全部程序結(jié)束89datasegment;數(shù)據(jù)段
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個數(shù)據(jù)求和,并將結(jié)果放入SUM單元。14、
ABCDB39,250,?,0,?
定義數(shù)據(jù)的偽指令15、SEGMENT……ENDS
段定義偽指令91常用匯編語言指令介紹一、數(shù)據(jù)尋址方式類指令(只講以后用到的主要指令)
2.
寄存器尋址方式
例3.4(a)MOVAX,BX;16位例3.4(b)MOVECX,EDX
;32位,80386機及以后才有
1.
立即尋址方式
例3.1MOVAL,8;(AL)=08H,08H是立即數(shù)例3.2MOVAX,1234H;(AX)=1234H例3.3MOVEAX,12345678H;(EAX)=12345678H.
注意:立即數(shù)長度應予目的操作數(shù)長度一致。923.
直接尋址方式
例3.5MOVAX,[2000H];注意2000H是偏移地址,也稱有效地址如(DS)=3000H,(32000H)=3050H,執(zhí)行結(jié)果為:(AX)=3050H。說明:該指令的有效地址為2000H,操作數(shù)的物理地址=數(shù)據(jù)段基地址*16+有效地址(2000H)注意:不要與立即尋址方式相混淆。(害怕混淆所以用了[])934.基址變址尋址方式
例:MOVAX,[BX][DI](或?qū)憺椋篗OVAX,[BX+DI])對于32位尋址方式可有:
MOVEDX,[EBX][EDI]
這種尋址方式適用于數(shù)組(一維、二維)或表格處理,其首地址可存放在基址寄存器中,而通過修改變址寄存器的內(nèi)容來訪問數(shù)組中的各個元素。一、數(shù)據(jù)尋址方式類指令[上面所講]二、程序?qū)ぶ贩绞筋愔噶頪程序跳轉(zhuǎn)]1、段內(nèi)無條件轉(zhuǎn)移指令:
JMPNEARPTRPP;近轉(zhuǎn)移(16/32)PP為符號地址
;NEARPTR
為操作符。;對8086轉(zhuǎn)移16位,對386及以后機型轉(zhuǎn)移32位
2、段間無條件遠轉(zhuǎn)移指令:
JMPWORDOTROPR
;OPR為符號地址●后面還要介紹有條件跳轉(zhuǎn)94
其他類型匯編語言指令補充1、PUSHAX;進棧指令2、POPAX;出棧指令3、PUSHF;標志寄存器內(nèi)容進棧4、POPF;標志寄存器內(nèi)容出棧
I/O口傳送指令:5、外設輸入指令:例1:INAX,28H;從端口28H輸入一字例2:MOVDX,3FCHINAX,DX;對16位地址必須借助;DX寄存器尋址6、向外設輸出指令:例1:OUT5,AL;向端口5輸出一字節(jié)例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
執(zhí)行的操作:(DST)←(DST)∧(SRC)
(2)TEST測試指令格式:TESTOPR1,OPR2
執(zhí)行的操作:(OPR1)∧(OPR2),兩個操作數(shù)相與的結(jié)果不保存,只改變相關標志位,如零標志。例:TESTAX,01H;測試AX的第0位
JZEVEN;為0轉(zhuǎn)移,條件轉(zhuǎn)移指令JZ,下面要講到例:TESTAX,01H;測試AX的第0位
JNZEVEN;為1轉(zhuǎn)移9710、條件轉(zhuǎn)移指令[程序何往?憑啥條件?]①JZOPR測試條件:ZF=1,結(jié)果為零轉(zhuǎn)移;②JNZOPR測試條件:ZF=0,結(jié)果不為零轉(zhuǎn)移;③JCOPR測試條件:CF=1,有借位(進位)轉(zhuǎn)移;
條件轉(zhuǎn)移指令的應用舉例:MOVCX,30MOVBX,0AGAIN:
INCBXDECCXJNZAGAINMOVAX,BX11、循環(huán)指令LOOP
MOVCX,30
MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX9812.比較指令CMPop1,op2;op1-op2有借位嗎?執(zhí)行后只改變借位標志注:op1是寄存器,op2是立即數(shù)或存儲器單元;此指令要配合條件轉(zhuǎn)移指令使用。例:x1x2為兩個字節(jié)單元,請按由小到大順序放入y1y2
字節(jié)單元。編程:moval,x1cmpal,x2jcminmovy2,al;如減法指令為SUB,將出錯!
movy1,x2endd:movah,4chint21h;返回DOSmin:movy1,almovy2,x2jmpendd;無條件轉(zhuǎn)移作業(yè):請按由大到小順序放入y1y2字節(jié)單元。9912、子程序的調(diào)用與返回指令
CALL調(diào)用指令
RET返回指令14、中斷的調(diào)用與返回指令
INTN調(diào)用指令,N為中斷號
IRET從中斷服務子程序中返回指令
注意:這里是軟件中斷的調(diào)用但無論是怎么進入的中斷服務子程序,子程序的最后結(jié)束句必須是IRET100常用偽指令:1、等值偽指令:EQUmmequ56;定義后,mm就等于56
2、定義數(shù)據(jù)的偽指令:DB,DW
它們分別定義:1個字節(jié)、2個字節(jié)
ABCDB39,250,?,0,?;定義字節(jié)單元
DEFDW983,2358,?,?;定義字單元(像數(shù)組)3、地址計數(shù)器:$
arraydb32,43,56,8,65countequ$-array4、段定義偽指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS第4章
匯編語言程序設計
《微機原理與接口技術(shù)》102
本章主要內(nèi)容匯編語言程序的格式簡單程序的編寫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有進位轉(zhuǎn)移到OPR9、JZOPR結(jié)果為零轉(zhuǎn)移到OPR10、JNZOPR結(jié)果非零轉(zhuǎn)移到OPR11、JMP
OPR無條件轉(zhuǎn)移到OPR12、MOVBX,OFFSETLIST
地址傳送指令13、ADCDX,BX帶進位加14、ABCDB39,250,?,0,?定義數(shù)據(jù)的偽指令15、SEGMENT……ENDS段定義偽指令105匯編語言程序的格式數(shù)據(jù)段名SEGMENT
;SEGMENT
段定義偽指令,與ENDS構(gòu)成一對使用數(shù)據(jù)空間預置數(shù)據(jù)段名ENDS堆棧段名
SEGMENT
堆??臻g預置堆棧段名ENDS代碼段名SEGMENTASSUME
段地址說明START:
段地址裝填(除代碼段CS外,其它段均要裝填。CS段是系統(tǒng)在加載程序后自動裝填的,即由操作系統(tǒng)的任務管理程序自動完成裝填的,此項裝填不需要用戶管理。)主程序體
..代碼段名ENDS;代碼段結(jié)束
ENDSTART;全部程序結(jié)束106datasegment;數(shù)據(jù)段
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個數(shù)據(jù)求和,并將結(jié)果放入SUM單元。107
幾點易混淆的概念datasegmentarraydb32,43,56,8,65countequ$-arraysumdw?dataends
stacksegmentstakdb10dup(?)stackendscodesegmentassumecs:code,ds:datass:stackstart:movax,datamovds,ax;數(shù)據(jù)段賦值。注意1:;通過寄存器送ds是必;須的;注意2:data是;segment定義的特殊;符號,否則mov存的;將不是段。
movax,stackmovss,ax;堆棧段賦值
movdi,offsetsummovbx,offsetarray
;若寫成movbx,array;或?qū)懗蒻ovbx,[array]??
movcx,countmovax,0Lop:addal,[bx]adcah,0;帶進位加
incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart108datasegment;數(shù)據(jù)段
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作業(yè)1:編一個程序,將6個數(shù)據(jù)32,43,56,8,65,x1的最大數(shù)放入MAX單元,將最小數(shù)放入MIN單元。注意:x1為放有數(shù)的字節(jié)單元(符號地址)。109作業(yè)2:編一個程序,將3個數(shù)據(jù)x1,x2,x3的最大數(shù)放入MAX單元,將最小數(shù)放入MIN單元。注意:x1,x2,x3為三個放有數(shù)的字節(jié)單元。解:datasegment;數(shù)據(jù)段
x1db?x2db?x3db?
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年虛擬現(xiàn)實在耳鼻喉科培訓中的應用效果評價報告
- 交通運輸行業(yè)人才需求報告:聚焦交通運輸行業(yè)綠色出行與共享交通人才培養(yǎng)
- 鉗工十項技能試題及答案
- 廣播媒體融合教育:2025年課程設計與教學方法研究報告
- 承臺及地梁磚胎膜施工方案
- 數(shù)字貨幣對貨幣政策傳導機制影響下的金融科技發(fā)展趨勢研究報告
- 業(yè)務員能力測試題及答案
- 富文本測試題及答案
- 文化與科技融合下的數(shù)字藝術(shù)產(chǎn)業(yè)投資機會分析報告
- 盲人托養(yǎng)服務合同協(xié)議書
- (新版)旅游接待業(yè)理論考試題庫(含各題型)
- 不符合工作處理記錄表
- 高管人員績效考核方案
- xx旅游股份有限公司財務管理制度
- DB32-T 4338-2022 高速公路橋梁支座安裝施工技術(shù)規(guī)范
- 直螺紋套筒進場檢查記錄
- Q∕GDW 12177-2021 供電服務記錄儀技術(shù)規(guī)范
- 形式發(fā)票--INVOICE(跨境-)
- 某路延伸段新建市政工程施工設計方案
- 110kV變電站操作規(guī)程
- 溫州市住房公積金補貼提取申請表
評論
0/150
提交評論