版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
學(xué)習(xí)機(jī)簡介微型計算機(jī)結(jié)構(gòu)匯編語言程序設(shè)計指令格式尋址方式指令系統(tǒng)第1節(jié)
微型計算機(jī)結(jié)構(gòu)概念:微型計算機(jī)結(jié)構(gòu)是指微型計算機(jī)主要部件的特性布局及連接,是程序設(shè)計者必須了解的硬件資源及其資源部件,如地址空間、寄存器組、尋址方式、指令系統(tǒng)等。典型的微型計算機(jī)結(jié)構(gòu)包括微處理器、存儲器、輸入/輸出三個主要部分,通過系統(tǒng)總線連接。
1.Intel8086處理器的結(jié)構(gòu)
2.寄存器結(jié)構(gòu)
8086微處理器內(nèi)部共有14個16位的寄存器,所有寄存器可分為四組:數(shù)據(jù)寄存器AX、BX、CX、DX,指針及變址寄存器SP、BP、SI、DI,段寄存器CS、DS、SS、ES與控制寄存器IP、FLAGS。
(1)數(shù)據(jù)寄存器
數(shù)據(jù)寄存器是用來寄存運(yùn)算中的數(shù)據(jù)。它包括:
a.AX(Accumulator)是累加器,是算術(shù)運(yùn)算中主要寄存器。
b.BX(Base),是基址寄存器,常對應(yīng)于數(shù)據(jù)段,用于間接尋址及基址變址尋址。
c.CX(Count),是計數(shù)寄存器,在循環(huán)指令和串處理指令中用作隱含的計數(shù)器,移位指令中使用CL作為計數(shù)器。
d.DX(Data),是數(shù)據(jù)寄存器,在雙字運(yùn)算時與AX組合,作為AX的擴(kuò)展,存放高位字,AX存放低位字。
(2)指針及變址寄存器
指針及變址寄存器SP、BP、SI、DI,除SP外,可像數(shù)據(jù)寄存器一樣,作為存放操作數(shù)的通用寄存器,更經(jīng)常、更主要的用途是存放地址,提供尋址時的偏移地址。
a.SP(StackPointer)是堆棧指針寄存器,用來指示棧頂?shù)钠频刂贰?/p>
b.BP(BasePointer)是基址指針寄存器,對應(yīng)于堆棧段。
c.SI(SourceIndex)和DI(DestinationIndex),是源變址寄存器和目的的變址寄存器,用來形成間接地址,實(shí)現(xiàn)基址加變址尋址。
(3)段寄存器
段寄存器是用來存放當(dāng)前段的段地址。
a.CS(CodeSegment),代碼段寄存器,用于存入代碼段的段地址。
b.DS(DataSegment),數(shù)據(jù)段寄存器,用于存放數(shù)據(jù)段的段地址。
c.SS(StackSegment),堆棧段寄存器,用于存放堆棧段的段地址。
d.ES(ExtraSegment),附加數(shù)據(jù)段寄存器,用于存放附加數(shù)據(jù)段的段地址。
(4)控制寄存器
控制寄存器用以存放與程序執(zhí)行有關(guān)的信息,寄存的內(nèi)容將影響或改變程序的執(zhí)行流程。
a.IP(InstructionPointer),指令指針寄存器,又稱程序計數(shù)器,是一個專用寄存器,用于存放當(dāng)前要執(zhí)行指令的地址。
b.OF(OverflowFlag),溢出標(biāo)志位。
c.SF(SignFlag),符號標(biāo)志位。
d.ZF(ZeroFlag),零標(biāo)志位。
e.AF(AuxiliartyFlag),輔助進(jìn)位標(biāo)志位。
f.PF(ParityFlag),奇偶標(biāo)志位。
g.CF(CarryFlag),進(jìn)位標(biāo)志位。
h.DF(DirectionFlag),方向標(biāo)志位。
i.IF(InterruptFlag),中斷標(biāo)志位。
j.TF(TrapFlag),陷阱標(biāo)志位。
3.內(nèi)存組織
(1).內(nèi)存地址
內(nèi)存的基本單元為8位組成的一個字節(jié),每個內(nèi)存單元分配了一個唯一地址,從0開始編址。1MB內(nèi)存地址從00000H到FFFFFH。
8086微機(jī)字長為16位,16位稱為1個字(Word),字被存儲在連續(xù)2個字節(jié)中。雙字(DoubleWord)被存儲在連續(xù)4個字節(jié)中,如用寄存器存放,則需一對寄存器。如DX:AX。
(2)段式存儲管理
8086微外理器內(nèi)部的EU部件使用16位地址,只能進(jìn)行16位運(yùn)算,為解決與存儲器20位地址的矛盾,對存儲空間引入邏輯地址,分成許多邏輯段,采用段式存儲管理。
采用段式存儲管理,段地址與偏移地址都可直接放在16位寄存器中,段地址放段寄存器中,偏移地址可以放通用寄存器中,雖然指令使用16位地址,但尋址范圍達(dá)到1M字節(jié)。
(3)邏輯地址與物理地址
邏輯地址是編寫程序時使用的地址,由段地址與偏移地址構(gòu)成。
邏輯地址常用格式“段地址:偏移地址”表示。
物理地址是內(nèi)存的實(shí)際20位地址,是存儲空間的絕對地址,和存儲單元一一對應(yīng),采用5位十六進(jìn)制數(shù)表示。
物理地址只有被轉(zhuǎn)換成物理地址才能訪問內(nèi)存。
物理地址=段地址X16+偏移地址。
也就是說,將段地址左移4位,加上偏移地址,即可得到物理地址。轉(zhuǎn)換工作由總線接口部件的地址加法器完成。
(4)I/O空間是微處理器另一塊獨(dú)立的64KB大小的物理地址空間,用地址總線的低16位作為8位I/O端口的尋址線。
4.堆棧技術(shù)
(1)堆棧描述
堆棧是內(nèi)存中一塊特定區(qū)域,是一片先進(jìn)后出、后進(jìn)先出的存儲空間,堆棧段中數(shù)據(jù)由高地址到低地址順序存放。
堆棧一端是固定的,另一端是浮動的,固定的一端稱為堆棧棧底,浮動的一端稱為堆棧棧頂,是堆棧的操作端。由堆棧段寄存器SS指示堆棧段地址,堆棧棧底及堆棧長度由椎棧指針寄存器SP的初值指出,堆棧棧頂也由堆棧指針寄存器SP的值指出。
堆棧為空時,棧頂與棧底相同。
(2)堆棧操作
堆棧操作遵循“先進(jìn)后出、后進(jìn)先出”的原則,包括壓入操作(PUSH)和彈出操作(POP)。堆棧操作過程中,SP的值不斷變化,但總是指向堆棧棧頂位置。
堆棧操作總是對字?jǐn)?shù)據(jù)進(jìn)行。
壓入操作用于數(shù)據(jù)進(jìn)棧,保存信息。
彈出操作用于數(shù)據(jù)出棧,恢復(fù)信息。
堆棧操作有專用的指令完成,也可以由子程序調(diào)用指令實(shí)現(xiàn)。
第2節(jié)
匯編語言程序設(shè)計
1.開發(fā)環(huán)境
典型的匯編語言開發(fā)環(huán)境包括編輯程序、匯編程序、連接程序及調(diào)試程序。
a.編輯程序用于建立匯編程序,可用任何字處理軟件完成。
b.匯編程序用于將匯編程序匯編成目標(biāo)代碼程序,常用的有Mricrosoft公司的MASM5.0與MASM6.0,目標(biāo)代碼程序文件擴(kuò)展名為OBJ。
c.連接程序用于將目標(biāo)代碼程序連接裝配成可執(zhí)行程序,目標(biāo)代碼程序既可以是匯編程序產(chǎn)生的,也可以是其他編譯程序產(chǎn)生的,常用的是Microsoft公司的LINK程序。執(zhí)行程序文件擴(kuò)展名為EXE。
d.調(diào)試程序用于跟蹤程序的執(zhí)行情況,查找程序中的邏輯錯誤,Microsoft公司的DEBUG、CodeView與Borland公司的TurboAssembler都是不錯的調(diào)度工具。
2.一般過程
進(jìn)行程序設(shè)計實(shí)際要做兩件事,一是對數(shù)據(jù)進(jìn)行描述,二是對操作進(jìn)行描述。
程序設(shè)計的過程應(yīng)嚴(yán)格遵循軟件工程的規(guī)范,匯編語言程序設(shè)計的一般過程可簡化為分析問題、設(shè)計算法、編制程序、分析結(jié)果四步,如下圖所示:
3.基本方法
程序設(shè)計的基本方法是結(jié)構(gòu)化程序設(shè)計方法。
結(jié)構(gòu)化程序由順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)三種基本結(jié)構(gòu)組成。
結(jié)構(gòu)化程序設(shè)計方法的基本思想是“自頂向下、逐步求精”。在設(shè)計階段,合理分解;在編碼階段,讀者至上。
結(jié)構(gòu)化程序設(shè)計方法就是模塊化程序設(shè)計。
第3節(jié)
指令格式1.機(jī)器語言指令格式
機(jī)器語言中使用二進(jìn)制代碼指令,為了滿足不同的功能要求,減少指令長度,提高指令的使用效率,8086指令系統(tǒng)采用1~6個字節(jié)組成的變字長指令格式,由操作碼、尋址方式、操作數(shù)三部分組成,如下圖所示:
通常指令的第1字節(jié)為操作碼,規(guī)定指令的操作類型。第2字節(jié)為操作數(shù),規(guī)定操作數(shù)的尋址方式。第3~6字節(jié)是可變字節(jié),指出存儲器操作數(shù)地址的位移量或產(chǎn)即數(shù)。
W位,指示操作數(shù)的類型。
D位,指示操作數(shù)的傳送方向。
REG字段,指定一個寄存器操作數(shù),見下表。它作為源操作數(shù)還是作為目的操作數(shù)同D位規(guī)定。
MOD字段,用來指定另一個操作數(shù)的尋址方式。
R/M字段,受MOD字段控制。
2.匯編語言指令格式
匯編語言以機(jī)器語言指令作為基礎(chǔ),使用與機(jī)器語言指令基本相對應(yīng)的符號助記指令。
符號助記指令由操作助記符和若干操作數(shù)組成。
操作數(shù)分為數(shù)據(jù)操作數(shù)與轉(zhuǎn)移地址操作數(shù)兩大類。
數(shù)據(jù)操作數(shù)包括立即操作數(shù)、寄存器操作數(shù)、存儲器操作數(shù)、I/O操作數(shù)四種。數(shù)據(jù)操作數(shù)通常有兩個,一個為源操作數(shù),一個為目的操作數(shù)。
匯編語言指令的基本格式:
a.操作助記符
b.目的操作數(shù),源操作數(shù)
第4節(jié)
尋址方式概念:尋址方式給出操作數(shù)或操作數(shù)地址的計算方法,對轉(zhuǎn)移指令形成程序的轉(zhuǎn)移地址。根據(jù)尋址方式計算出操作數(shù)地址存取操作數(shù)的過程稱為尋址操作。
1.數(shù)據(jù)尋址方式
數(shù)據(jù)尋址包括立即尋址、寄存器尋址、直接尋址、寄存器間接尋址、寄存器相對尋址、基址變址尋址、基址變址相對尋址等方式。
(1)立即尋址
立即尋址指的是操作數(shù)直接包括在指令中。
這樣的操作數(shù)稱為立即數(shù),可以是8位的,也可以是16位的。
(2)寄存器尋址
寄存器尋址指的是操作數(shù)放在指令指定的寄存中。
(3)直接尋址
直接尋址指的是操作數(shù)的偏移地址直接出現(xiàn)在指令中,書寫時加上中括號以表示是偏移地址。默認(rèn)段寄存器DS,允許段超越。
(4)寄存器間接尋址
寄存器間接尋址指的是操作數(shù)的偏移地址在基址寄存器BX、BP,或變址寄存器SI、DI中。使用BX、SI、DI,默認(rèn)段寄存器DS;使用BP,默認(rèn)段寄存器SS。允許段超越。
(5)寄存器相對尋址
寄存器相對尋址指的是操作數(shù)的偏移地址是一個基址寄存器或變址寄存器的內(nèi)容加上指令中給出的8位或16位位移量。
(6)基址變址尋址
基址變址尋址指的是操作數(shù)的偏移地址是一個基址寄存器內(nèi)容加上一個變址寄存器的內(nèi)容。
(7)基址變址相對尋址
基址變址相對尋址指的是操作數(shù)的偏移
第5節(jié)
指令系統(tǒng)每臺計算機(jī)都擁用自己的指令系統(tǒng),指令系統(tǒng)是程序的底層支撐。不同類型計算機(jī)提供的指令數(shù)量、格式、功能不盡相同。
大多數(shù)指令必須遵守以下基本規(guī)則:
(1)目的操作數(shù)與源操作數(shù)的類型必須匹配,一般8位對8位,16位對16位。
(2)目的操作數(shù)不能立即操作數(shù)
(3)目的操作數(shù)與源操作數(shù)不能同時為存儲器操作數(shù)。串操作指令除外
(4)目的操作數(shù)與源操作數(shù)不能同時為段寄存器。
1.通用數(shù)據(jù)傳送指令
(1)數(shù)據(jù)傳送指令MOV
格式:MOVDOPD,SOPD
功能:將一個字節(jié)或字操作數(shù)從SOPD傳送至DOPD。
說明:
a.CS不能作為目的的操作數(shù),立即數(shù)不能直接傳送到段寄存器中,SOPD、DOPD不能同時為存儲器操作數(shù),不能在段寄存器之間直接傳送。
b.不影響標(biāo)志寄存器。
(2)數(shù)據(jù)交換指令XCHG
格式:XCHGDOPD,SOPD
功能:交換DOPD與SOPD內(nèi)容
說明:不影響標(biāo)志寄存器
(3)查表轉(zhuǎn)換指令XLAT
格式:XLAT[OPD]
功能:從BX作為表頭的表中找到序號為AL的字節(jié)數(shù)據(jù)送AL中,[BX+AL]--AL。
說明:XLAT指令可以很方便地將一種代碼轉(zhuǎn)換成另一種代碼。
(4)堆棧操作指令PUSH和POP
格式:PUSHSOPD
POPDOPD
功能:對字?jǐn)?shù)據(jù)進(jìn)行操作,PUSH指令將數(shù)據(jù)壓入堆棧,POP指令將數(shù)據(jù)彈出堆棧。
說明:
(1)操作數(shù)可以是立即數(shù)以外的尋址方式,POP指令不可以使用CS,不影響標(biāo)志位。
(2)壓入時SP-2-SP,彈出時SP+2--SP。
(3)PUSH指令和POP指令一般要成對使用,進(jìn)棧必須出棧,堆棧指針必須保持平衡與穩(wěn)定,這是使用堆棧的一個重要原則。
2.地址傳送指令
(1)傳送偏移地址指令LEA
格式:LEAREG16,MEM
功能:將MEM的偏移地址傳送至指定寄存器中。
說明:該指令通常用來設(shè)置偏移地址初值,以便從此地址開始存取多個數(shù)據(jù)。
(2)傳送偏移地址與數(shù)據(jù)段地址指令LDS
格式:LDSREG16,MEM32
功能:將MEM32中低字內(nèi)容送REG16,高字內(nèi)容送DS。
說明:
a.MEM32存放的雙字一般是某個程序或變量的邏輯地址。
b.該指令為訪問非當(dāng)前數(shù)據(jù)段作地址準(zhǔn)備,常指定SI寄存器。
(3)傳送偏移地址與數(shù)據(jù)段地址指令LES
格式:LESREG16,MEM32
功能:與LDS指令完全類似,只是將高字內(nèi)容送ES。
說明:該指令為訪問附加數(shù)據(jù)段作地址并準(zhǔn)備。
3.標(biāo)志傳送指令
(1)取標(biāo)志指令LAHF
格式:LAHF
功能:將FLAGS的低字節(jié)送AH,即取SF、ZF、AF、PF及CF等5個狀態(tài)位送入AH對應(yīng)位中。
(2)置標(biāo)志指令SAHF
格式:SAHF
功能:將AH內(nèi)容送FLAGS的低字節(jié),即以AH對應(yīng)內(nèi)容修改SF、ZF、AF、PF及CF等5個狀態(tài)位。
(3)標(biāo)志壓入堆棧指令PUSHF
格式:PUSHF
功能:將FLAGS內(nèi)容壓入堆棧,該指令不影響狀態(tài)標(biāo)志位。
(4)標(biāo)志彈出堆棧指令POPF
格式:POPF
功
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年個人房屋租賃的合同(2篇)
- 2025年個人房屋買賣協(xié)議參考模板(2篇)
- 2025年二手房轉(zhuǎn)讓房產(chǎn)協(xié)議范文(2篇)
- 2025年五年級上班隊(duì)工作總結(jié)(二篇)
- 2025年主要農(nóng)作物新品種展示示范協(xié)議(6篇)
- 大型機(jī)械拆卸運(yùn)輸合同
- 兒童樂園對公裝修合同
- 鐵路熱熔標(biāo)線施工方案
- 賓館改造瓦工單包合同
- 化妝品快遞配送合同范本
- 行政區(qū)域代碼表Excel
- 少兒財商教育少兒篇
- GB 1886.114-2015食品安全國家標(biāo)準(zhǔn)食品添加劑紫膠(又名蟲膠)
- 初二上冊期末數(shù)學(xué)試卷含答案
- envi二次開發(fā)素材包-idl培訓(xùn)
- 2022年上海市初中語文課程終結(jié)性評價指南
- 西門子starter軟件簡易使用手冊
- 隧道施工監(jiān)控量測方案及措施
- 桂花-作文ppt-PPT課件(共14張)
- 配電房日常檢查記錄表.docx
- 高一數(shù)學(xué)概率部分知識點(diǎn)總結(jié)及典型例題解析 新課標(biāo) 人教版 必修
評論
0/150
提交評論