匯編語言程序設計東大函授.ppt_第1頁
匯編語言程序設計東大函授.ppt_第2頁
匯編語言程序設計東大函授.ppt_第3頁
匯編語言程序設計東大函授.ppt_第4頁
匯編語言程序設計東大函授.ppt_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、內(nèi)容簡介,自學內(nèi)容: 第一章概述 第二章計算機運算基礎 第九章條件匯編與宏命令 第十章算術(shù)運算與代碼運算 第十一章列表與字符串操作 第十七章通信程序設計 第十八章8087/80287/80387程序設計 第十九章MMX的程序設計,函授內(nèi)容: 第三章微型計算機的結(jié)構(gòu) 第四章匯編語言 第五章順序結(jié)構(gòu)程序 第六章分支結(jié)構(gòu)程序 第七章循環(huán)結(jié)構(gòu)程序 第八章子程序設計 第十二章輸入輸出與中斷 第十三章顯示程序設計 第十四章鍵盤程序設計 第十五章打印程序設計 第十六章定時及音響程序設計,內(nèi)容簡介,第三章微型計算機的結(jié)構(gòu),3.1微處理機的結(jié)構(gòu) (一)8086微型處理機結(jié)構(gòu) 8086微處理器邏輯框圖:分EU與B

2、IU兩部分: 執(zhí)行部件(EU):由ALU、通用寄存器組、狀態(tài)寄存器及操作控制器電路組成。 總線接口部件(BIU):由專用寄存器、指令隊列緩沖器、地址加法器等功能部件組成。形成對外總線,與存儲器、I/O接口電路進行數(shù)據(jù)傳輸。 EU 與 BIU的流水線操作: EU 與 BIU可獨立工作,BIU在保證EU與片外傳送操作數(shù)前提下,可進行指令預取,與EU可重疊操作。,1. 指令執(zhí)行部件EU,由算術(shù)邏輯單元(ALU)、標志寄存器、通用寄存器組和EU控制器等部件組成。 主要功能是執(zhí)行指令: 一般順序執(zhí)行,EU不斷地從指令隊列中取指令連續(xù)執(zhí)行,而省去訪問存儲器取指令的時間。 需要訪問存儲器取操作數(shù)時,EU將訪

3、問地址送給BIU后,將要等待操作數(shù)到來后才能繼續(xù)操作; 遇到轉(zhuǎn)移類指令時,要將指令隊列中的后續(xù)指令作廢,等待BIU重新從存儲器取出目標地址中的指令代碼進入指令隊列后,EU才能繼續(xù)執(zhí)行指令。,完成16位或8位的二進制運算; 16位暫存寄存器用來暫存參加運算的操作數(shù)。 運算結(jié)果通過內(nèi)部總線送到通用寄存器組或BIU的內(nèi)部寄存器中等待寫入存儲器。 經(jīng)ALU運算后的結(jié)果特征置入標志寄存器中保存。,算術(shù)邏輯單元(ALU),負責從BIU的指令隊列中取指令,并對指令譯碼; 根據(jù)指令要求向EU內(nèi)部各部件發(fā)出控制命令以完成各條指令的功能。,EU控制器,通用及標志寄存器,由地址加法器、專用寄存器組、指令隊列緩沖器和

4、總線控制電路等部件組成; 主要功能是形成訪問存儲器的物理地址,負責與外部(存儲器或I/O接口)打交道。 正常情況下,BIU通過地址加法器形成指令的物理地址,從給定存儲器地址中取出指令代碼送指令隊列緩沖器中等待執(zhí)行(指令隊列緩沖器中出現(xiàn)一個空字節(jié),BIU將自動進行讀指令的操作填滿隊列) 收到EU送來的操作數(shù)地址,BIU將立即形成操作數(shù)的物理地址,完成讀/寫操作數(shù)或運算結(jié)果功能。遇到轉(zhuǎn)移類指令,BIU將指令隊列緩沖器中的尚存指令作廢,重新從存儲器目標地址中取指令送指令緩沖器中。,2. 總線接口部件BIU,可存放6字節(jié)的指令代碼。一般情況下指令隊列中總是填滿指令,使EU可不斷地得到執(zhí)行的指令。,指令

5、隊列,16位地址加法器,專門用來完成由邏輯地址變換成物理地址的功能。實際上是進行一次地址加法,將兩個16位的邏輯地址轉(zhuǎn)換為20位的物理地址,以達到可尋址1M字節(jié)的存儲空間。,將8086CPU的內(nèi)部總線與外部總線相連,是8086CPU與外部交換數(shù)據(jù)的必經(jīng)之路。包括16條數(shù)據(jù)總線、20條地址總線和若干條控制總線。,總線控制電路,3.8086內(nèi)部寄存器,通用寄存器(8個)可分為兩組: 數(shù)據(jù)寄存器(4個); 地址指針和變址寄存器(4個)。,通用寄存器組,(1)數(shù)據(jù)寄存器 通用寄存器AX、BX、CX和DX稱為數(shù)據(jù)寄存器,可用來存放16位的數(shù)據(jù)或地址。也可把它們當作八個8位寄存器(AH、AL、BH、BL、

6、CH、CL、DH、DL)來使用,這時只能存放8位數(shù)據(jù),而不能用來存放地址。,(2)地址指針和變址寄存器 包括SP、BP、SI、DI四個16位寄存器。 可以在運算過程中存放操作數(shù),但只能以字(16位)為單位使用。 常用在段內(nèi)尋址時提供偏移地址: SP(Stack Pointer)稱為堆棧指針寄存器,BP(Base Pointer)稱為基址指針寄存器,它們都可以與SS寄存器聯(lián)用確定堆棧段中的某一存儲單元的地址。SP用來指示棧頂?shù)钠频刂罚珺P可作為堆棧區(qū)中的一個基地址以便訪問堆棧。 SI(Source Index)源變址寄存器和DI(Destination Index)目的變址寄存器:它們一般與D

7、S聯(lián)用,用來確定數(shù)據(jù)段中某一存儲單元的地址。,8086CPU的BIU中設置4個16位段寄存器: 代碼段寄存器CS(Code Segment) 數(shù)據(jù)段寄存器DS(Data Segment) 附加數(shù)據(jù)段寄存器ES(Extra Segment) 堆棧段寄存器SS(Stack Segment),段寄存器組,由于8086CPU可直接尋址的存儲器空間是1M字節(jié),需要20位地址碼。而CPU所有的內(nèi)部寄存器都只有16位,用這些寄存器只能直接尋址64K字節(jié)。 為此把1M字節(jié)的存儲空間分成許多邏輯段,每段最長為64k字節(jié),這些邏輯段可在整個存儲空間中浮動。于是用段寄存器給定各個邏輯段的首地址的高16位,被稱為段地

8、址。,設置段寄存器的原因:,總之,匯編程序一般將源程序分成四個邏輯段,即代碼段CS、數(shù)據(jù)段DS、堆棧段SS和附加段ES。,CS:存放代碼段的段基地址。 DS:存放數(shù)據(jù)段的段基地址。 SS:存放堆棧段的段基地址。 ES:存放附加段的段基地址。,(1)指令指針寄存器IP(Instruction Pointer) 8086CPU中設置一個16位指令指針寄存器IP,用來存放將要取出的下一條指令在代碼段中的偏移地址。 在程序運行過程中,BIU可修改IP中的內(nèi)容,使它始終指向?qū)⒁〕龅南乱粭l指令。,控制寄存器組,注意: IP與CS聯(lián)用, 表示代碼段中要處理的指令的邏輯地址; IP和CS由系統(tǒng)執(zhí)行,用戶一般

9、不能使用或修改。,(2)標志寄存器FLAGS 8086CPU中設立一個兩字節(jié)的標志寄存器FLAGS(又稱PSW、FR),有9個標志位: 6個狀態(tài)標志位,表示運算結(jié)果的狀態(tài),包括CF、PF、AF、ZF、SF和OF; 3個控制標志位,用來控制CPU的操作,包括IF、DF和TF。,80286:16位結(jié)構(gòu),16MB尋址空間,支持保護方式,可執(zhí)行多任務,速度比8086快。 80386:32位結(jié)構(gòu),4GB尋址空間,支持保護方式,可執(zhí)行多任務,性能大大優(yōu)于16位結(jié)構(gòu)。 80486: 32位結(jié)構(gòu),比80386有很大改進, 片內(nèi)FPU,片內(nèi)Cache,速度比80386塊很多。,(二)80286、80386及80

10、486微處理器,3.2存儲器,1. 存儲器的分段 8086微處理器有20根地址線,可訪問存儲器的最大容量為1M字節(jié)。而8086內(nèi)部所有的寄存器都只有16位,只能尋址64K字節(jié)。因此在8086系統(tǒng)中, 把整個存儲空間分成許多邏輯段,每個邏輯段的容量64K字節(jié),允許它們在整個存儲空間中浮動,各個邏輯段之間可以緊密相連,也可以相互重疊(完全重疊或部分重疊)。,3.2.1 8086存儲器管理,在8086存儲空間中,各邏輯段的起始地址必須是能被16整除的地址,即段的起始地址的低4位二進制碼必須是0。 段的起始地址的高16位被稱為該段的段地址,把它存放在相應的段寄存器中,而段內(nèi)的相對地址可用系統(tǒng)中的16位

11、通用寄存器來存放,被稱為偏移地址。,若已知當前有效的代碼段、數(shù)據(jù)段、附加數(shù)據(jù)段和堆棧段的段地址分別為1055H、250AH、8FFBH和EFF0H,那么它們在存儲器中的分布情況如圖所示。每個段可以獨立地占用64K存儲區(qū)。,各個邏輯段允許重疊 例如,如果代碼段中的程序占有8KB(2000H)存儲區(qū),數(shù)據(jù)段占有2KB(800H)存儲區(qū),堆棧段占有256個字節(jié)的存儲區(qū)。此時分段情況如圖所示。,代碼段的區(qū)域本可為02000H11FFFH(64KB),由于程序區(qū)只需要8KB,所以程序區(qū)結(jié)束后的地址就可作為數(shù)據(jù)段的起始地址(04000H),注意:這里所謂的重疊只是指每個區(qū)段的大小允許根據(jù)實際情況分配,而不

12、一定非要占有64KB的最大段空間。,2. 存儲器中的邏輯地址和物理地址 采用分段結(jié)構(gòu)的存儲器中,任何一個邏輯地址由段地址和偏移地址兩個部分構(gòu)成。它們都是無符號的16位二進制數(shù)。 任何一個存儲單元對應一個20位的物理地址,它由邏輯地址變換得來,地址運算如下: 物理地址(PA)=段地址16+偏移地址(EA),由BIU中地址加法器中完成的,如果訪問存儲器要求讀/寫操作數(shù),則通常由DS給出段地址(必要時可修改為CS、ES或SS),而其偏移地址要由CPU的指令執(zhí)行部件根據(jù)指令中所給定的尋址方式來進行計算,通常將這樣計算得到的偏移地址稱為有效地址(EA)。,如果所采用的尋址方式是通過基址指針BP尋址,則段

13、地址要由SS提供(必要時可以修改為CS、DS或ES)。,程序設計過程中必須遵守的系統(tǒng)內(nèi)部約定:,如果執(zhí)行的是串處理指令,當取源串時,段地址由數(shù)據(jù)段寄存器DS提供(必要時可修改為CS、ES和SS),偏移地址必須由源變址寄存器SI提供。當取目標串時,段地址必須由附加段寄存器ES提供,偏移地址必須由目標變址寄存器DI提供。,如果對存儲器中的堆棧進行操作,則段地址來源于SS,偏移地址來源于SP。,約定的邏輯地址來源, 8086/8088的尋址方式類型: 1立即數(shù)尋址方式 2寄存器尋址方式 3直接尋址方式 4寄存器間接尋址方式 5寄存器相對尋址方式(直接變址尋址方式) 6基址變址尋址方式 7相對基址變址

14、尋址方式 8. 隱含尋址,3.3 80868088的尋址方式, 立即數(shù)尋址方式: 指令操作數(shù)部分自接給出指令的操作數(shù)(立即數(shù))它與指令操作碼相接。順序存放代代碼段中。立即數(shù)有8位和16位之分。 注意:(1)立即數(shù)尋址方式只能用于源操作數(shù),主要用于給寄存器賦值。 (2)立即數(shù)尋址方式不執(zhí)行總線周期,執(zhí)行速度快。 (3)立即數(shù)為16位時,低位字節(jié)存放在存儲器低地址單元,高位字節(jié)存放在存儲器高地址單元。 (4)不能直接給段寄存器和標志寄存器賦予立即數(shù)。, 立即數(shù)尋址方式: 例: MOV AX,1234H ; AX 1234H 執(zhí)行后,(AH) = 12H,(AL) = 34H,B8H,34H,12H

15、,12H,寄存器尋址方式: 此方式的操作數(shù)放在寄存器內(nèi),由指令直接給出某個寄存器的名字,以寄存器的內(nèi)容作為操作數(shù)。寄存器可以是16位的AX、BX、CX、DX、SI、DI、SP、BP寄存器,也可以是8位的AH、AL、BH、BL、CH、CL、DH、DL寄存器。 注意:(1)寄存器尋址方式的指令操作在CPU內(nèi)部執(zhí)行,不需要執(zhí)行總線周期,執(zhí)行速度快。 (2)寄存器尋址方式既適用于指令的源操作數(shù),也適用于目的操作數(shù),并且可同時用于源操作數(shù)和目的操作數(shù)。 (3)源寄存器和目的寄存器的位數(shù)必須一致。,寄存器尋址方式: 例: MOV AX,BX ; AX (BX) 執(zhí)行后,(AH) = 56H,(AL) =

16、78H,直接尋址方式: 此方式的操作數(shù)在存儲器中,指令中直接給出操作數(shù)所在存儲單元的有效地址。有效地址(EA)也稱為偏移地址,它代表操作數(shù)所在存儲單元距離段首址的字節(jié)數(shù)。有效地址是一個無符號的16位二進制數(shù)。 EA(有效地址) D 物理地址16X(DS)+D 注意:(1)直接尋址方式的操作數(shù)所在存儲單元的段地址一般在數(shù)據(jù)段寄存器DS中。 (2)如果操作數(shù)在其他段,則需要在指令中用段超越前綴指出相應的段寄存器名。 (3)AUGEND是一種符號表示法,此內(nèi)容將在偽指令中給予講解。,直接尋址方式: 例:已知:(DS)3000H,(32000H)0EEH MOV AX,2000H ; AL (3200

17、0H) AH (32001H),D,0,32001H,寄存器間接尋址方式: 此方式的操作數(shù)在存儲器中,指令中寄存器的內(nèi)容作為操作數(shù)所在存儲單元的有效地址。寄存器可以是某個基址寄存器BX、BP,或某個變址寄存器SI、DI。 EA(有效地址) BX (BP、SI、DI) 當使用寄存器BX、SI、DI時:則操作數(shù)在數(shù)據(jù)段中 物理地址16X(DS)+(BX) (SI、DI) 當使用寄存器BP時:則操作數(shù)在堆棧段中 物理地址16X(SS)+(BP) 注意:如果操作數(shù)所在存儲單元不在數(shù)據(jù)段中,需要在指令中用段超越前綴表明其所在段的段名。,寄存器間接尋址方式: 例:已知:(DS)3000H,(DI)=200

18、0H,(32000H)0EEH MOV AL,DI ; AL (32000H),寄存器相對尋址方式(直接變址尋址方式): 此方式的操作數(shù)在存儲器內(nèi),指令中寄存器的內(nèi)容與指令指定的位移量(DISP)之和作為操作數(shù)所在存儲單元的有效地址。寄存器可以是基址寄存器BX、BP,也可以是變址寄存器SI、DI。位移量是一個8位(DISP8)或16位(DISPl6)的帶符號二進制數(shù)。 EA(有效地址)=BX+D (BP、SI、DI) 當使用寄存器BX、SI、DI時: 物理地址16X(DS)+(BX)+D (SI、DI) 當使用寄存器BP時: 物理地址16X(SS)+(BP),寄存器相對尋址方式(直接變址尋址方

19、式) : 例:已知:(DS)3000H,(DI)=1000H,(32000H)0EEH MOV AL,DI+1000H ; AL (32000H),AH,AL,EEH,12H,基址變址尋址方式: 此方式中的操作數(shù)在存儲器內(nèi),指令將基址寄存器(BX或BP)與變址寄存器(SI或DI)內(nèi)容之和作為操作數(shù)所在存儲單元的有效地址EA。 EA(有效地址)=BX(BP) +SI (DI) 當使用寄存器BX時: 物理地址16X(DS)+(BX)+SI (SI、DI) 當使用寄存器BP時: 物理地址16X(SS)+(BP)+SI (SI、DI),基址變址尋址方式: 例:已知:(DS)3000H,(BX)=1000H,(DI)=1000H,(32000H)=0EEH MOV AL,BX+DI ; AL (32000H),相對基址變址尋址方式: 此方式的操作數(shù)在存儲器內(nèi)。指令將基址寄存器(BX或BP)與變址寄存器(SI或DI)的內(nèi)容

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論