匯編語言程序設計-第5章-基本程序設計_第1頁
匯編語言程序設計-第5章-基本程序設計_第2頁
匯編語言程序設計-第5章-基本程序設計_第3頁
匯編語言程序設計-第5章-基本程序設計_第4頁
匯編語言程序設計-第5章-基本程序設計_第5頁
已閱讀5頁,還剩30頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 1 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 2 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 3 匯編語言同匯編語言同BASICBASIC或或C C等高級語言一樣,都是一些語句和等高級語言一樣,都是一些語句和指令的集合,這些語句決定計算機將做什么,它們的不同之處指令的集合,這些語句決定計算機將做什么,它們的不同之處在于如何指

2、示計算機完成相應的任務。在于如何指示計算機完成相應的任務。如如“置置3232于于AXAX寄存器中寄存器中”,“將將CLCL寄存寄存器的內容傳送到器的內容傳送到DLDL寄存器中寄存器中”,“存儲存儲DLDL寄存器中數(shù)到內存寄存器中數(shù)到內存34563456地址處地址處”等。等。 使用匯編語言是在計算機能夠理解的基礎上編寫程序,但使用匯編語言是在計算機能夠理解的基礎上編寫程序,但又不必死記機器代碼。采用像英文縮寫一樣的指令,然后運又不必死記機器代碼。采用像英文縮寫一樣的指令,然后運行匯編程序(將匯編語言編寫的程序翻譯成機器代碼)將它行匯編程序(將匯編語言編寫的程序翻譯成機器代碼)將它們轉化為機器代碼

3、。們轉化為機器代碼。 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 4一般說來,編制一個匯編語言程序需要完成以下步驟:一般說來,編制一個匯編語言程序需要完成以下步驟:(1)(1) 分析題意,建立數(shù)學模型,確定數(shù)據(jù)結構及算法。這一分析題意,建立數(shù)學模型,確定數(shù)據(jù)結構及算法。這一步是能否編制出高質量程序的關鍵,因此不應該一拿到題目就步是能否編制出高質量程序的關鍵,因此不應該一拿到題目就急于寫程序,而是應該仔細地分析和理解題意,找出合理的算急于寫程序,而是應該仔細地分析和理解題意,找出合理的算法及適當?shù)臄?shù)據(jù)結構。法及適當?shù)臄?shù)據(jù)

4、結構。(2)(2) 根據(jù)算法畫出程序流程圖。這一步對初學者尤其重要,根據(jù)算法畫出程序流程圖。這一步對初學者尤其重要,這樣做可以減少出錯的可能性。畫流程圖時可以從粗到細把算這樣做可以減少出錯的可能性。畫流程圖時可以從粗到細把算法逐步地具體化。法逐步地具體化。(3)(3) 根據(jù)算法及數(shù)據(jù)結構分配內存單元和寄存器。根據(jù)算法及數(shù)據(jù)結構分配內存單元和寄存器。(4)(4) 編寫匯編語言源程序。編寫匯編語言源程序。(5)(5) 使用匯編程序調試工具上機調試程序。使用匯編程序調試工具上機調試程序。 5.1.15.1.1編寫匯編語言程序的步驟編寫匯編語言程序的步驟 安徽工業(yè)大學4/7/2022整理課件整理課件1

5、章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 55.1.25.1.2判斷程序質量的標準判斷程序質量的標準 一個良好的程序應符合以下標準:一個良好的程序應符合以下標準:(1 1)程序可讀性強。程序可讀性強。(2 2)程序執(zhí)行的時間短(效率高)。程序執(zhí)行的時間短(效率高)。(3 3)程序所占用的內存少。程序所占用的內存少。(4 4)程序的語句行數(shù)少。程序的語句行數(shù)少。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 65.1.35.1.3匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程 一般來說,開發(fā)匯編

6、語言程序有以下面一般來說,開發(fā)匯編語言程序有以下面5 5個步驟:個步驟:(1 1)設計)設計(2 2)編輯)編輯(3 3)匯編)匯編(4 4)連接)連接(5 5)調試)調試安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 7 5.1.3 5.1.3匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程 根據(jù)所需完成的任務要求、設計程序結構,確定應用根據(jù)所需完成的任務要求、設計程序結構,確定應用算法,算法,畫出程序流程圖。畫出程序流程圖。 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本

7、程序設計基本程序設計 8 5.1.3 5.1.3匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程 根據(jù)設計方案及程序流程圖創(chuàng)建匯編語言源程序。該根據(jù)設計方案及程序流程圖創(chuàng)建匯編語言源程序。該源程序是按照匯編語言語法規(guī)則編寫的文本文件,定義為后源程序是按照匯編語言語法規(guī)則編寫的文本文件,定義為后綴是綴是.ASM.ASM的文件。它由程序員通過文本編輯器來完成。的文件。它由程序員通過文本編輯器來完成。 DOSDOS下常用的有下常用的有EditEdit、PE2PE2等。等。 WindowsWindows下常用的有下常用的有WordWord等,但文件存儲格式必須為等,但文件存儲格式必須為(.TXT.TXT)

8、文本格式,且擴展名必須為)文本格式,且擴展名必須為.ASM.ASM。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 9 5.1.3 5.1.3匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程 一旦發(fā)現(xiàn)錯誤,匯編程序會提示程序員對一旦發(fā)現(xiàn)錯誤,匯編程序會提示程序員對源程序加以修改,并重新匯編。源程序加以修改,并重新匯編。 匯編程序主要包括以下幾方面的功能:匯編程序主要包括以下幾方面的功能: DOSDOS下常用的匯編程序有下常用的匯編程序有等。等。 。 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎

9、知識識 5章章 基本程序設計基本程序設計 10 5.1.3 5.1.3匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程 DOSDOS運行一個可執(zhí)行程序時,先要在內存中為該程序開辟一運行一個可執(zhí)行程序時,先要在內存中為該程序開辟一塊或幾塊存儲空間,然后在此加載并運行該程序。塊或幾塊存儲空間,然后在此加載并運行該程序。匯編后生成匯編后生成的目標程序雖然加載了的目標程序雖然加載了CPUCPU可識別的機器代碼,但它缺少系統(tǒng)所可識別的機器代碼,但它缺少系統(tǒng)所需要的重定位信息,所以并不能直接運行。需要的重定位信息,所以并不能直接運行。 這這樣就可以將樣就可以將一一個程序的幾部分分別編寫,匯編成幾個目標模塊,個

10、程序的幾部分分別編寫,匯編成幾個目標模塊,再通過連接程序將幾個目標模塊連接,生成一個完整的運行模塊。再通過連接程序將幾個目標模塊連接,生成一個完整的運行模塊。 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 11 5.1.3 5.1.3匯編語言程序的開發(fā)過程匯編語言程序的開發(fā)過程 完成設計、編輯、匯編、連接后得到的可執(zhí)行目標程完成設計、編輯、匯編、連接后得到的可執(zhí)行目標程序中可能存在一些錯誤,這些錯誤可能是設計缺陷或編輯序中可能存在一些錯誤,這些錯誤可能是設計缺陷或編輯時的筆誤,它們可能使程序運行出現(xiàn)結果錯誤、死機甚至時的

11、筆誤,它們可能使程序運行出現(xiàn)結果錯誤、死機甚至其他無法預測的后果。這類錯誤被稱為其他無法預測的后果。這類錯誤被稱為邏輯錯誤,它們是邏輯錯誤,它們是匯編程序和連接程序都無法發(fā)現(xiàn)的。匯編程序和連接程序都無法發(fā)現(xiàn)的。 DOSDOS下常用的調試程序有下常用的調試程序有DebugDebug、TdebugTdebug等。等。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 125.1.45.1.4完整的匯編語言程序框架完整的匯編語言程序框架 源程序的一般格式為:源程序的一般格式為: 標號:標號: 匯編語言語句序列匯編語言語句序列 ;標號

12、指示程序入口;標號指示程序入口 標號:標號: 匯編語言語句序列匯編語言語句序列 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 135.1.45.1.4完整的匯編語言程序框架完整的匯編語言程序框架 以下是一個例子,說明以下是一個例子,說明8086/80888086/8088匯編語言的基本框架結構。該程序在匯編語言的基本框架結構。該程序在屏幕上顯示一句問候語:屏幕上顯示一句問候語:“Welcome to BEIJING!”Welcome to BEIJING!”。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基

13、礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 14 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 155.2.15.2.1流程圖的功能及意義流程圖的功能及意義 流程圖是程序員進行程序設計的工具。流程圖是程序員進行程序設計的工具。 畫流程圖是在確定算法之后編寫程序之前、其目的畫流程圖是在確定算法之后編寫程序之前、其目的是準確地表示算法,因此是準確地表示算法,因此無論在哪種機器上使用哪種語言,同一個問題無論在哪種機器上使用哪種語言,同一個問題的同一個算法的流程圖應當是唯一的。的同一個算法的流程圖應當是唯一的。 安

14、徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 165.2.25.2.2流程圖的畫法規(guī)定流程圖的畫法規(guī)定 開始開始處處 理理判斷?判斷?安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 17 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 18 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 19 簡言之,這是一種

15、先全局后局部、先整體后細節(jié)、先抽象簡言之,這是一種先全局后局部、先整體后細節(jié)、先抽象后具體的自頂向下的設計方法。對于復雜的問題,我們不可后具體的自頂向下的設計方法。對于復雜的問題,我們不可能立刻精確地給出求解的詳細步驟,但是可以從問題的描述能立刻精確地給出求解的詳細步驟,但是可以從問題的描述開始,首先得到求解的大致步驟,并表示成三種基本結構之開始,首先得到求解的大致步驟,并表示成三種基本結構之一,然后再將上一結構中的處理框進一步分解、加細,仍然一,然后再將上一結構中的處理框進一步分解、加細,仍然代之以三種基本結構之一,如此繼續(xù)直到最后的流程圖已經代之以三種基本結構之一,如此繼續(xù)直到最后的流程圖

16、已經細致到可以編程的程度為止。細致到可以編程的程度為止。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 20 問題規(guī)模愈大,求解程序的尺寸也愈大,編寫和排錯問題規(guī)模愈大,求解程序的尺寸也愈大,編寫和排錯也就愈加困難。模塊化設計主張,在解決一個規(guī)模較大的也就愈加困難。模塊化設計主張,在解決一個規(guī)模較大的問題時,把求解程序按功能分成若干模塊、每個模塊有自問題時,把求解程序按功能分成若干模塊、每個模塊有自己的相對獨立的功能,尺寸較小,通常不超過一頁(己的相對獨立的功能,尺寸較小,通常不超過一頁(6060多多行)。這里的行)。這里

17、的安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 21 安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 22的程序從開始執(zhí)行到結束,一的程序從開始執(zhí)行到結束,一直是按指令序列在存儲器中的存放順序直是按指令序列在存儲器中的存放順序來執(zhí)行指令的,來執(zhí)行指令的,在程序執(zhí)行前,在程序執(zhí)行前,系統(tǒng)將要執(zhí)行的第一條指令的地址裝入系統(tǒng)將要執(zhí)行的第一條指令的地址裝入CSCS和和IPIP中,然后中,然后CPUCPU按按CSCS:IPIP中的地址中的地址從存儲器取指令到指

18、令隊列準備執(zhí)行,從存儲器取指令到指令隊列準備執(zhí)行,同時修改同時修改IPIP內容指向下一條指令,本條內容指向下一條指令,本條指令執(zhí)行結束,就接著執(zhí)行下一條指指令執(zhí)行結束,就接著執(zhí)行下一條指令令這樣逐條執(zhí)行指令直到程序結束。這樣逐條執(zhí)行指令直到程序結束。的流程圖除了起止框外,就是的流程圖除了起止框外,就是,如圖,如圖5252所示。順序程序一般為簡單程序,所示。順序程序一般為簡單程序,如計算表達式程序、查表程序。如計算表達式程序、查表程序。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 23設設X X、Y Y的值存放在字變量的值

19、存放在字變量VARXVARX、VARYVARY中,結果存放在中,結果存放在VARZVARZ中。程序的流中。程序的流程圖如圖程圖如圖5252所示。源程序編寫如下:所示。源程序編寫如下: DATA SEGMENTDATA SEGMENT VARX DW 15 VARX DW 15 VARY DW 10 VARY DW 10 VARZ DW ? VARZ DW ?DATA ENDSDATA ENDS安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 24 ASSUME CS: CODE, DS: DATA ASSUME CS: CO

20、DE, DS: DATAStart:MOV AX, DATA Start:MOV AX, DATA ;初始化;初始化DSDS MOV DS, AX MOV DS, AX MOV AX, VARX MOV AX, VARX ;AXXAXX SHL AX, 1 SHL AX, 1 ;AX2XAX2X ADD AX, VARX ADD AX, VARX ;AX3XAX3X ADD AX, VARY ADD AX, VARY ;AX3X+YAX3X+Y SUB AX, 5 SUB AX, 5 ;AX3X+YAX3X+Y5 5 SAR AX, 1 SAR AX, 1 ;AX(3X+YAX(3X+Y5)/

21、25)/2 MOV VARZ, AX MOV VARZ, AX ;存結果;存結果 mov ah,4chmov ah,4ch int 21h int 21h ;返回;返回DOSDOSEND startEND start安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 25查表的結果放在變量查表的結果放在變量MATHMATH中。編寫的源程序如下:中。編寫的源程序如下: TITLE TABLE LOOKUPTITLE TABLE LOOKUPTABLE DB 81TABLE DB 81,7878,9090,6464,8585,76

22、76,9393,8282,5757,8080 DB 73 DB 73,6262,8787,7777,74748686,9595,9191,8282,7171NUM DB 8NUM DB 8MATH DB ?MATH DB ? 利用學號查該學生的數(shù)學成績。首先在數(shù)據(jù)段中建立一利用學號查該學生的數(shù)學成績。首先在數(shù)據(jù)段中建立一個成績表個成績表TABLETABLE,在表中按學號從小到大的順序存放分數(shù)。要,在表中按學號從小到大的順序存放分數(shù)。要查的學號存放在變量查的學號存放在變量NUMNUM中。中。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計

23、基本程序設計 26 ASSUME CS: CODE, DS: DATA ASSUME CS: CODE, DS: DATA: MOV AX, DATA: MOV AX, DATA MOV DS, AX MOV DS, AX MOV BX, OFFSET TABLE MOV BX, OFFSET TABLE ;BXBX指向表首址指向表首址 XOR AH, AHXOR AH, AH MOV AL, NUM MOV AL, NUM DEC AL DEC AL ADD BX, AX ADD BX, AX ;BXBX加上學號指向要查的成績加上學號指向要查的成績 MOV AL, BX MOV AL, BX

24、 ;查到成績;查到成績 MOV MATH, AL MOV MATH, AL ;存結果;存結果 MOV AH, 4CH MOV AH, 4CH ;返回;返回DOSDOS INT 21H INT 21H END END 上述程序中,學號上述程序中,學號NUMNUM是從是從1 1開始,因此需將學號減開始,因此需將學號減1 1以獲得成績在表以獲得成績在表中的偏移量(開始)。如果程序使用換碼指令中的偏移量(開始)。如果程序使用換碼指令XLATXLAT,則長度還可縮短。,則長度還可縮短??商鎿Q成:XLAT安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 27安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 28例 用查表方法將hex單元中低4位16進制數(shù)轉化為相應的ASCII并顯示。安徽工業(yè)大學4/7/2022整理課件整理課件1章章 匯編語言基礎知匯編語言基礎知識識 5章章 基本程序設計基本程序設計 29例 將HEX單元的內容拆成2段,每段4位,將其存入result,result+1兩個單元。data segmenthex db 7AHresult db ?,?data endscode segment assume cs:code,ds:data

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論