安徽理工大學(xué)計算機匯編教程-基本程序設(shè)計課件_第1頁
安徽理工大學(xué)計算機匯編教程-基本程序設(shè)計課件_第2頁
安徽理工大學(xué)計算機匯編教程-基本程序設(shè)計課件_第3頁
安徽理工大學(xué)計算機匯編教程-基本程序設(shè)計課件_第4頁
安徽理工大學(xué)計算機匯編教程-基本程序設(shè)計課件_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

8086/8088和ARM核匯編語言程序設(shè)計第5章基本程序設(shè)計

4/18/20231第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1程序設(shè)計方法概述

5.2流程圖5.3結(jié)構(gòu)化程序設(shè)計第5章基本程序設(shè)計

5.4順序結(jié)構(gòu)的程序設(shè)計4/18/20232第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計匯編語言同BASIC或C等高級語言一樣,都是一些語句和指令的集合,這些語句決定計算機將做什么,它們的不同之處在于如何指示計算機完成相應(yīng)的任務(wù)。高級語言給出一般性命令,而匯編語言給出具體的命令。匯編語言指令集中的語句直接涉及到計算機的硬件部分,提供給計算機更詳細的命令,直接對硬件進行操作,如“置32于AX寄存器中”,“將CL寄存器的內(nèi)容傳送到DL寄存器中”,“存儲DL寄存器中數(shù)到內(nèi)存3456地址處”等。5.1程序設(shè)計方法概述

使用匯編語言是在計算機能夠理解的基礎(chǔ)上編寫程序,但又不必死記機器代碼。采用像英文縮寫一樣的指令,然后運行匯編程序(將匯編語言編寫的程序翻譯成機器代碼)將它們轉(zhuǎn)化為機器代碼。用匯編指令寫的程序稱為匯編語言源程序。微處理器可執(zhí)行的機器代碼形式稱為目標程序。

4/18/20233第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1.2判斷程序質(zhì)量的標準5.1程序設(shè)計方法概述

一個良好的程序應(yīng)符合以下標準:(1)程序可讀性強。(2)程序執(zhí)行的時間短(效率高)。(3)程序所占用的內(nèi)存少。(4)程序的語句行數(shù)少。4/18/20235第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1.3匯編語言程序的開發(fā)過程5.1程序設(shè)計方法概述

一般來說,開發(fā)匯編語言程序有以下面5個步驟:(1)設(shè)計(2)編輯(3)匯編(4)連接(5)調(diào)試4/18/20236第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1.3匯編語言程序的開發(fā)過程5.1程序設(shè)計方法概述

(1)設(shè)計根據(jù)所需完成的任務(wù)要求、設(shè)計程序結(jié)構(gòu),確定應(yīng)用算法,并按使用的寄存器從程序段、數(shù)據(jù)段和堆棧段制定內(nèi)存分配方案,畫出程序流程圖。4/18/20237第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1.3匯編語言程序的開發(fā)過程5.1程序設(shè)計方法概述

(2)編輯根據(jù)設(shè)計方案及程序流程圖創(chuàng)建匯編語言源程序。該源程序是按照匯編語言語法規(guī)則編寫的文本文件,定義為后綴是.ASM的文件。它由程序員通過文本編輯器來完成。文本編輯器是任何流行的字處理器或編輯器,只要它們可以產(chǎn)生純ASCII碼文本文件,不帶有任何特殊控制碼和格式碼。DOS下常用的有Edit、PE2等。Windows下常用的有Word等,但文件存儲格式必須為(.TXT)文本格式,且擴展名必須為.ASM。4/18/20238第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1.3匯編語言程序的開發(fā)過程5.1程序設(shè)計方法概述

(4)連接DOS運行一個可執(zhí)行程序時,先要在內(nèi)存中為該程序開辟一塊或幾塊存儲空間,然后在此加載并運行該程序。該存儲空間是由系統(tǒng)當時的運行狀態(tài)決定的,是不固定的,這就要求可執(zhí)行程序是可重定位的,即它可以在內(nèi)存的不同位置運行。匯編后生成的目標程序雖然加載了CPU可識別的機器代碼,但它缺少系統(tǒng)所需要的重定位信息,所以并不能直接運行。目標程序必須經(jīng)過連接程序的連接,生成附帶重定位信息的可執(zhí)行程序(后綴為.COM或.EXE的文件)才能運行。

連接程序的第一個任務(wù)就是從目標模塊中產(chǎn)生一個運行模塊,并使其具有可重定位性。連接程序的第二個任務(wù)是可將幾個目標模塊連接成一個可執(zhí)行的模塊,并同樣使其具有可重定位性。這樣就可以將一個程序的幾部分分別編寫,匯編成幾個目標模塊,再通過連接程序?qū)讉€目標模塊連接,生成一個完整的運行模塊。

連接程序可以發(fā)現(xiàn)源程序中的連接錯誤,如段的溢出或覆蓋、匹配的模塊、不存在或不匹配的標號、變量等。DOS下常用的連接程序有Link、Tlink等。

4/18/202310第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1.3匯編語言程序的開發(fā)過程5.1程序設(shè)計方法概述

(5)調(diào)試完成設(shè)計、編輯、匯編、連接后得到的可執(zhí)行目標程序中可能存在一些錯誤,這些錯誤可能是設(shè)計缺陷或編輯時的筆誤,它們可能使程序運行出現(xiàn)結(jié)果錯誤、死機甚至其他無法預(yù)測的后果。這類錯誤被稱為邏輯錯誤,它們是匯編程序和連接程序都無法發(fā)現(xiàn)的。這類錯誤只能靠程序員憑借調(diào)試程序和經(jīng)驗對可執(zhí)行程序進耐心細致的跟蹤調(diào)試,才能逐一排除。DOS下常用的調(diào)試程序有Debug、Tdebug等。4/18/202311第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1.4完整的匯編語言程序框架5.1程序設(shè)計方法概述

STACKSEGMENTPARASTACK‘STACK‘;定義堆棧段DB1024DUP(?)STACKENDSDATASEGMENTPARA‘DATA’;定義數(shù)據(jù)段HELLODB‘WelcometoBEIJING!’,0dh,0ah,’$’DATAENDSCODESEGMENTPARA‘CODE’;定義代碼段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKMAINPROCFARSTART:PUSHDSXORAX,AX PUSHAX MOVAX,DATALEADX,HELLOMOVAH,9INT21HRETMAINENDPCODEENDS

ENDSTART以下是一個例子,說明8086/8088匯編語言的基本框架結(jié)構(gòu)。該程序在屏幕上顯示一句問候語:“WelcometoBEIJING!”。4/18/202313第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1程序設(shè)計方法概述

5.3結(jié)構(gòu)化程序設(shè)計第5章基本程序設(shè)計

5.4順序結(jié)構(gòu)的程序設(shè)計5.2流程圖4/18/202314第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.2.1流程圖的功能及意義5.2流程圖

流程圖是程序員進行程序設(shè)計的工具。

畫流程圖是在確定算法之后編寫程序之前、其目的是準確地表示算法,因此流程圖應(yīng)當是邏輯的,而不是物理的。無論在哪種機器上使用哪種語言,同一個問題的同一個算法的流程圖應(yīng)當是唯一的。4/18/202315第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1程序設(shè)計方法概述

第5章基本程序設(shè)計

5.4順序結(jié)構(gòu)的程序設(shè)計5.2流程圖5.3結(jié)構(gòu)化程序設(shè)計4/18/202317第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.3結(jié)構(gòu)化程序設(shè)計(1)三種程序構(gòu)件

4/18/202318第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計(2)逐步求精的設(shè)計方法5.3結(jié)構(gòu)化程序設(shè)計

簡言之,這是一種先全局后局部、先整體后細節(jié)、先抽象后具體的自頂向下的設(shè)計方法。對于復(fù)雜的問題,我們不可能立刻精確地給出求解的詳細步驟,但是可以從問題的描述開始,首先得到求解的大致步驟,并表示成三種基本結(jié)構(gòu)之一,然后再將上一結(jié)構(gòu)中的處理框進一步分解、加細,仍然代之以三種基本結(jié)構(gòu)之一,如此繼續(xù)直到最后的流程圖已經(jīng)細致到可以編程的程度為止。4/18/202319第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.1程序設(shè)計方法概述

第5章基本程序設(shè)計

5.2流程圖5.3結(jié)構(gòu)化程序設(shè)計5.4順序結(jié)構(gòu)的程序設(shè)計4/18/202321第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.4順序結(jié)構(gòu)的程序設(shè)計順序結(jié)構(gòu)的程序從開始執(zhí)行到結(jié)束,一直是按指令序列在存儲器中的存放順序來執(zhí)行指令的,這個執(zhí)行順序由CS:IP提供的指令地址來控制。在程序執(zhí)行前,系統(tǒng)將要執(zhí)行的第一條指令的地址裝入CS和IP中,然后CPU按CS:IP中的地址從存儲器取指令到指令隊列準備執(zhí)行,同時修改IP內(nèi)容指向下一條指令,本條指令執(zhí)行結(jié)束,就接著執(zhí)行下一條指令……這樣逐條執(zhí)行指令直到程序結(jié)束。順序程序的流程圖除了起止框外,就是一個接一個的處理框、無判斷框,如圖5—2所示。順序程序一般為簡單程序,如計算表達式程序、查表程序。4/18/202322第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.4順序結(jié)構(gòu)的程序設(shè)計設(shè)X、Y的值存放在字變量VARX、VARY中,結(jié)果存放在VARZ中。程序的流程圖如圖5—2所示。源程序編寫如下:

TITLEEQUATION

COMPUTEDATASEGMENTVARXDW15VARYDW10VARZDW?DATAENDSSTACKlSEGMENTPARASTACKDW20HDUP(0)STACK1ENDS例5.1試編寫一程序計算以下表達式:Z=(3X十Y-5)/24/18/202323第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計5.4順序結(jié)構(gòu)的程序設(shè)計查表的結(jié)果放在變量MATH中。編寫的源程序如下:

TITLETABLELOOK—UPDATASEGMENTTABLEDB81,78,90,64,85,76,93,82,57,80DB73,62,87,77,74.86,95,91,82,71NUMDB8MATHDB?DATAENDSSTACKlSEGMENTPARASTACKDW20HDUP(0)STACK1ENDS例5.2利用學(xué)號查該學(xué)生的數(shù)學(xué)成績。首先在數(shù)據(jù)段中建立一個成績表TABLE,在表中按學(xué)號從小到大的順序存放分數(shù)。要查的學(xué)號存放在變量NUM中。4/18/202325第1章匯編語言基礎(chǔ)知識5章基本程序設(shè)計CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1START:MOVAX,DATAMOVDS,AXMOVBX,OFFSETTABLE;BX指向表首址XORAH,AH5.4順序結(jié)構(gòu)的程序設(shè)計MOVAL,NUMDECALADDBX,AX;BX加上學(xué)號指向要查的成績MOVAL,[BX];查到成績

溫馨提示

  • 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)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論