![微機原理與接口技術(shù)(樓順天)-第4章1.ppt_第1頁](http://file1.renrendoc.com/fileroot2/2020-1/21/f08c092c-2b48-4d16-bb9c-a63feaea1e39/f08c092c-2b48-4d16-bb9c-a63feaea1e391.gif)
![微機原理與接口技術(shù)(樓順天)-第4章1.ppt_第2頁](http://file1.renrendoc.com/fileroot2/2020-1/21/f08c092c-2b48-4d16-bb9c-a63feaea1e39/f08c092c-2b48-4d16-bb9c-a63feaea1e392.gif)
![微機原理與接口技術(shù)(樓順天)-第4章1.ppt_第3頁](http://file1.renrendoc.com/fileroot2/2020-1/21/f08c092c-2b48-4d16-bb9c-a63feaea1e39/f08c092c-2b48-4d16-bb9c-a63feaea1e393.gif)
![微機原理與接口技術(shù)(樓順天)-第4章1.ppt_第4頁](http://file1.renrendoc.com/fileroot2/2020-1/21/f08c092c-2b48-4d16-bb9c-a63feaea1e39/f08c092c-2b48-4d16-bb9c-a63feaea1e394.gif)
![微機原理與接口技術(shù)(樓順天)-第4章1.ppt_第5頁](http://file1.renrendoc.com/fileroot2/2020-1/21/f08c092c-2b48-4d16-bb9c-a63feaea1e39/f08c092c-2b48-4d16-bb9c-a63feaea1e395.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、第4章 匯編語言程序設(shè)計,本章要點: 匯編語言程序設(shè)計基礎(chǔ) 源程序的匯編、連接與調(diào)試 分支程序設(shè)計技術(shù) 循環(huán)程序設(shè)計技術(shù) 子程序設(shè)計技術(shù) 綜合程序設(shè)計示例,本教案內(nèi)容,第4章 匯編語言程序設(shè)計 匯編語言程序設(shè)計基礎(chǔ) 源程序的匯編、連接與調(diào)試 分支程序設(shè)計技術(shù) 循環(huán)程序設(shè)計技術(shù) 子程序設(shè)計技術(shù) 綜合程序設(shè)計示例,匯編語言程序設(shè)計,算法,所謂算法,簡單地說就是計算機能夠?qū)崿F(xiàn)的有限的解題步驟。我們知道,計算機只能進行最基本的算術(shù)運算和邏輯運算,要完成較為復(fù)雜的運算和控制操作,必須選擇合適的算法,這是正確編程的基礎(chǔ)。,若題目涉及到某種運算,則必須寫出適合程序設(shè)計的正確算法,若題目要完成的功能未涉及到運
2、算,也要寫出編程思想。,匯編語言程序設(shè)計,設(shè)計流程,將提出的算法或編程思想用流程圖的方式畫出來。圖4.1給出了流程圖中較為通用的幾種符號。,匯編語言程序設(shè)計,起始和終止框,執(zhí)行框,判斷框,連接框,匯編語言程序設(shè)計,圖4.1 流程圖符號,根據(jù)流程圖編寫程序,編寫程序是采用程序設(shè)計語言來實現(xiàn)上面已確定的算法,此過程有些書上稱為編碼。本書所介紹的是采用匯編語言編寫程序。采用匯編語言編寫程序應(yīng)注意以下幾個問題:,匯編語言程序設(shè)計,(1)必須詳細(xì)了解CPU的編程模型、指令系統(tǒng)、尋址方式及相關(guān)偽指令;,(2)必須進行存儲空間和工作單元的合理分配;,(3)多次使用的程序段可采用子程序或宏指令;,(4)盡可能
3、用標(biāo)號或變量來代替絕對地址和常數(shù);,匯編語言程序設(shè)計,程序的檢驗,程序編寫好以后,必須經(jīng)過書面檢查和上機調(diào)試,以便說明程序是否正確。檢驗時,應(yīng)預(yù)先選擇典型數(shù)據(jù),檢查是否可以得到預(yù)期結(jié)果。,匯編語言程序設(shè)計,編寫說明文件,一個完整的軟件應(yīng)有相應(yīng)的說明文件,這不僅便于用戶使用,也便于對程序的維護和擴充。說明文件主要應(yīng)包括程序的功能和使用方法,程序的基本結(jié)構(gòu)和所采用的主要算法以及程序必要說明和注意事項等。,匯編語言程序設(shè)計,我們知道,8086/8088 CPU的地址空間是分段結(jié)構(gòu)的,程序中出現(xiàn)的數(shù)據(jù)與代碼以及程序中用到的堆棧都必須納入某個段中。那么,如何告訴匯編程序,源程序中的哪些內(nèi)容屬于數(shù)據(jù)段,哪
4、些屬于代碼段呢?這自然是由匯編系統(tǒng)中提供的偽指令來實現(xiàn)的。下面我們首先介紹構(gòu)成完整程序的有關(guān)偽指令。,匯編語言程序設(shè)計基礎(chǔ),1.段定義偽指令,格式: 段名 SEGMENT 定位類型組合類型類型 ;段定義開始偽指令 指令語句或偽指令語句組成的段的實體 段名 ENDS ;段定義結(jié)束偽指令,匯編語言程序設(shè)計基礎(chǔ),段名: 段名是所定義的段的名稱,其構(gòu) 成規(guī)則與語句的名稱一樣。,段名一但定義,就具備了以下5個屬性。,匯編語言程序設(shè)計基礎(chǔ),其中,格式中的定位類型、組合類型和類別外面的方括號不是語法符號,它表示該項是可以省略的。,匯編語言程序設(shè)計基礎(chǔ),在段定義時,SEGMENT與ENDS必 須成對出現(xiàn)。,S
5、EGMENT與ENDS左邊的段名必須一致。,匯編語言程序設(shè)計基礎(chǔ),定位類型: 告訴匯編程序(MASM.EXE)對 該段匯編時,該段的起始邊界的要 求。其類型有PAGE、PARA、WORD、 BYTE四種。這四種類型的邊界地址 的要求如下:,匯編語言程序設(shè)計基礎(chǔ),PAGE=XXXX XXXX XXXX 0000 0000 PARA=XXXX XXXX XXXX XXXX 0000 (缺省型) WORD=XXXX XXXX XXXX XXXX XXX0 BYTE=XXXX XXXX XXXX XXXX XXXX,即它們的邊界地址(20位地址)應(yīng)分別可以被256、16、2、1除盡,分別稱為以頁、節(jié)、
6、字、字節(jié)為邊界。,匯編語言程序設(shè)計基礎(chǔ),在實際應(yīng)用中,每個段的定位類型常選PARA(節(jié))型。因為若選PAGE(頁)型,將會使相鄰的段間有較大空間的浪費;而選WORD或BYTE型,又很難做到使一個段的偏移地址從0000H開始。,匯編語言程序設(shè)計基礎(chǔ),組合類型: 告訴連接程序(LINK.EXE)在進行多模塊目標(biāo)程序連接時,該段與其它段連接的有關(guān)信息,如本段與其它段是否組合為同一段;組合后,本段信息與其他段信息的關(guān)系如何等。組合類型有以下6種不同的類型:,匯編語言程序設(shè)計基礎(chǔ),NONE型:表示本段與不同模塊中的其它段在邏輯上不發(fā)生關(guān)系。連接后各模塊中的各段都有自己的段地址(也稱基地址)。,STACK
7、型:組合后的這個段用作堆棧。當(dāng)段定義中指明了STACK類型后,說明堆棧段已經(jīng)確定,所以,在可執(zhí)行文件裝入內(nèi)存后段寄存器SS中已是該段的段地址,堆棧指針SP已指向堆棧底。,匯編語言程序設(shè)計基礎(chǔ),PUBLIC型,COMMON型,AT表達(dá)式型,MEMORY型,匯編語言程序設(shè)計基礎(chǔ),類別: 類別可以使任何一個合法的名稱,但必須用單引號括起來。在多模塊程序設(shè)計中,連接時,將把不同模塊中相同類別的各段在物理上相鄰地連接在一起,其順序亦與LINK時提供的各模塊順序一致。當(dāng)類別相同的各段的段名不同時,它們連接后雖在同一物理段內(nèi),但,匯編語言程序設(shè)計基礎(chǔ),它們?nèi)圆粚儆谕欢?,也就是它們的段基址不相同。這樣做的一
8、個好處是便于程序的固化。在編程時,它們都是獨立的代碼段,各段有各自的段基址,但連接后,他們卻在同一物理段,從而可以固化在一起。,在單模塊程序設(shè)計中,類別可有可無。若有,它只是告知程序閱讀者本段信息的含義。,匯編語言程序設(shè)計基礎(chǔ),2.匯編語言源程序的完整結(jié)構(gòu),STACK SEGMENT STACK DB 256 DUP(?) TOP LABEL WORD STACK ENDS DATA1 SEGMENT DATA1 ENDS,用DB、DW等偽指令定義的段的實體,匯編語言程序設(shè)計基礎(chǔ),DATA2 SEGMENT DATA2 ENDS CODE SEGMENT ASSUME CS:CODE , DS
9、:DATA1 ASSUME ES:DATA2 , SS:STACK START: MOV AX , DATA1 MOV DS , AX ;DS初始化 MOV AX , DATA2 MOV ES , AX ;ES初始化,用DB、DW等偽指令定義的段的實體,匯編語言程序設(shè)計基礎(chǔ),MOV AX , STACK MOV SS , AX ;SS初始化 MOV SP , OFFSET TOP MOV AH,4CH INT 21H ;程序結(jié)束,返回DOS操作系統(tǒng) CODE ENDS ;代碼段定義結(jié)束 END START ;整個程序結(jié)束,.,用指令語句編寫的完成某一功能的程序體。,匯編語言程序設(shè)計基礎(chǔ),3.L
10、ABEL偽指令,格式中的類型有BYTE、WORD、DWORD、結(jié)構(gòu)名、記錄名、NEAR、FAR共7種。前5種屬于變量的類型,后兩種是屬于標(biāo)號的類型。結(jié)構(gòu)和記錄是由偽指令定義的兩種數(shù)據(jù)類型(關(guān)于這兩種數(shù)據(jù)類型的定義在此就不在敘述,請參閱有關(guān)資料)。,格式: 名稱 LABEL 類型,匯編語言程序設(shè)計基礎(chǔ),格式中的名稱就是語句的名稱,為一標(biāo)識符,若后面的類型是前5種之一,那么該名稱就是變量名;當(dāng)類型為后兩種時,該名稱就是標(biāo)號。我們已經(jīng)知道,變量與標(biāo)號除具有類型屬性外,還具有段地址和偏移地址的屬性,名稱的這兩個屬性就是匯編程序匯編到該語句時語句所在的段地址和偏移地址。,匯編語言程序設(shè)計基礎(chǔ),如前面定義
11、的堆棧段:,STACK SEGMENT STACK DB 256 DUP(?) TOP LABEL WORD STACK ENDS,由于STACK段內(nèi)的偏移地址開始為0000H,段內(nèi)留出了256個字節(jié)作為堆棧區(qū),因此匯編到TOP處時,偏移地址為0100H。,匯編語言程序設(shè)計基礎(chǔ),匯編情況如下圖所示:,256B堆棧區(qū),SS:0000H,TOP,SS:00FFH,0100H,TOP具有該單元的偏移地址屬性,但不占用該單元。,匯編語言程序設(shè)計基礎(chǔ),由于堆棧指針SP初始化后要指向棧底+1單元,所以上述程序段中有:,匯編語言程序設(shè)計基礎(chǔ),又由于前面介紹組合類型時,介紹了若某段定義時,其組合類型選為STA
12、CK型,系統(tǒng)默認(rèn)該段為堆棧段。所以,在可執(zhí)行文件裝入內(nèi)存后,段寄存器SS中已是該段的段基址,堆棧指針SP已指向堆棧底+1單元的偏移地址。因此,在程序設(shè)計時,程序段就不用給SS、SP 初始化了。,匯編語言程序設(shè)計基礎(chǔ),MOV AX , STACK MOV SS , AX MOV SP , OFFSET TOP,這段程序可以缺省。,即:,匯編語言程序設(shè)計基礎(chǔ),LABEL偽指令的功能是定義某變量名或標(biāo)號的類型的。它雖具有段地址與偏移地址的屬性,但它不占內(nèi)存單元。 例如: BARRAY LABEL BYTE AARRAY DW 100 DUP(?),匯編語言程序設(shè)計基礎(chǔ),上面定義了兩種類型的變量,BA
13、RRAY為字節(jié)類型,AARRAY為字類型,它們的段和偏移地址屬性完全相同,都是下面保留的100個字空間的首地址,其目的是為了程序中可以對這100個字空間作兩種不同類型的操作。這一點上,LABEL的作用與前面介紹的PTR操作符的作用相類似。,匯編語言程序設(shè)計基礎(chǔ),匯編語言程序設(shè)計基礎(chǔ),當(dāng)需要對該100個字空間進行字操作時,可利用AARRAY字變量。如下面指令格式是正確的。 MOV AX,ARRAY,匯編語言程序設(shè)計基礎(chǔ),當(dāng)需要對該100個字空間進行字節(jié)操作時,可利用BRRAY字節(jié)變量。如下面指令格式是正確的。 MOV AL,BRRAY MOV AL ,BYTE PTR ARRAY,等效于,匯編語
14、言程序設(shè)計基礎(chǔ),4.ASSUME偽指令,ASSUME偽指令告訴匯編程序(MASM.EXE)在對源程序匯編時,源程序中的段名與哪個段寄存器建立關(guān)系。這種關(guān)系只是一種承諾關(guān)系,匯編程序?qū)υ闯绦騾R編時,承認(rèn)這種關(guān)系,但段寄存器的值并未確定,用戶必須在代碼段一開始用MOV指令對DS、ES、SS初始化。,匯編語言程序設(shè)計基礎(chǔ),START:MOV AX,DATA1 MOV DS,AX ;對DS初始化 MOV AX,DATA2 MOV ES,AX ;對ES初始化 MOV AX,STACK MOV SS,AX ;對SS初始化,如前面完整結(jié)構(gòu)程序中的下段程序:,匯編語言程序設(shè)計基礎(chǔ),因為CS不能做DST,所以用
15、戶不能對CS初始化,CS和IP的初始化是系統(tǒng)賦給的,其方法見下面的END偽指令介紹。,匯編語言程序設(shè)計基礎(chǔ),5.END偽指令,格式: END 表達(dá)式 該偽指令標(biāo)志整個源程序的結(jié)束。它告訴匯編程序匯編到此結(jié)束。所以,每個單獨匯編的源程序的結(jié)尾必須有END偽指令。格式中的表達(dá)式是該程序運行時的啟動地址,它通常是可執(zhí)行語句的標(biāo)號。,匯編語言程序設(shè)計基礎(chǔ),如前面完整結(jié)構(gòu)程序中的最后有:,MOV AH,4CH INT 21H CODE ENDS END START,總匯編結(jié)束,起始地址表達(dá)式,匯編語言程序設(shè)計基礎(chǔ),6.=偽指令和EQU偽指令,格式: 名稱 = 表達(dá)式 名稱 EQU 表達(dá)式 功能:將表達(dá)式的值賦給左邊的名 稱,但表達(dá)式的值不能超過 65535。,匯編語言程序設(shè)計基礎(chǔ),偽指令本身不占內(nèi)存空間。它的功能是 為格式中的表達(dá)式部分賦一個名稱。在編寫 源程序時,凡用到表達(dá)式值的地方都可以用 名稱(符號常量)來代替。但匯編時,在出 現(xiàn)名稱的地方又用表達(dá)式的值取代了該名稱,例如是一個變量名,那么它將被這個變量名 取代。,匯編語言程序設(shè)計基礎(chǔ),EQU偽指令定義的名稱在程序中只能定義一次,而用 = 偽指令定義的名稱可以重新定義。,COUNT EQU 5*8 BPT = BYTE
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 現(xiàn)代辦公模式下的軟件盜版防范策略研究
- 國慶節(jié)活動團購活動方案
- 生態(tài)旅游規(guī)劃的核心策略案例研究報告
- Unit 2 My family(Period 4)(說課稿)-2024-2025學(xué)年人教大同版(2024)英語三年級上冊
- 12 盤古開天地 (說課稿)-2024-2025學(xué)年統(tǒng)編版語文四年級上冊
- 21三黑和土地 (說課稿)-2024-2025學(xué)年六年級上冊語文統(tǒng)編版
- 14文言文二則《兩小兒辯日》(說課稿)-2023-2024學(xué)年統(tǒng)編版語文六年級下冊
- 2024年五年級數(shù)學(xué)上冊 5 簡易方程第16課時 實際問題與方程(5)配套說課稿 新人教版
- 2024-2025學(xué)年高中物理 第10章 熱力學(xué)定律 4 熱力學(xué)第二定律說課稿1 新人教版選修3-3
- 2025道路綠化養(yǎng)護委托合同
- 餐飲行業(yè)品牌介紹商務(wù)宣傳PPT模板
- 關(guān)于中小企業(yè)人才流失的調(diào)查分析報告畢業(yè)論文
- 東南大學(xué)宣講介紹
- 2023年菏澤醫(yī)學(xué)專科學(xué)校單招綜合素質(zhì)題庫及答案解析
- 九年級下冊-2023年中考?xì)v史總復(fù)習(xí)知識點速查速記(部編版)
- GB/T 18103-2022實木復(fù)合地板
- 釀酒工藝教案
- 地形圖的識別及應(yīng)用涉密地圖的保密管理課件
- 小學(xué)四年級語文閱讀理解專項訓(xùn)練
- 輔導(dǎo)班合伙人合同范本(2篇)
- 2021年嘉興市法院書記員招聘考試試題及答案解析
評論
0/150
提交評論