學(xué)習(xí)機(jī)簡介課件_第1頁
學(xué)習(xí)機(jī)簡介課件_第2頁
學(xué)習(xí)機(jī)簡介課件_第3頁
學(xué)習(xí)機(jī)簡介課件_第4頁
學(xué)習(xí)機(jī)簡介課件_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論