版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、第五章 匯編語言程序設(shè)計,第五章 匯編語言程序設(shè)計 要求: 了解匯編語言的基本知識和特點。 熟悉匯編語言的程序結(jié)構(gòu)、段定義以及語句 的格式。 掌握匯編語言常用偽指令的使用方法。 熟練掌握匯編程序設(shè)計的基本方法:順序結(jié) 構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)和子程序結(jié)構(gòu)。 了解程序設(shè)計中常用的系統(tǒng)功能調(diào)用方法。,主要內(nèi)容: 一、匯編語言語法 1、匯編語言程序的格式 2、匯編語言指令格式 3、偽指令 4、匯編語言的運算符 二、匯編語言程序設(shè)計 1、匯編語言源程序的結(jié)構(gòu) 2、基本程序設(shè)計方法 順序程序設(shè)計 分支程序設(shè)計 循環(huán)程序設(shè)計 子程序 系統(tǒng)調(diào)用 3、匯編語言程序設(shè)計舉例,第五章 匯編語言程序設(shè)計,第五章 匯編
2、語言程序設(shè)計,二、匯編語言程序設(shè)計 1、匯編語言源程序的結(jié)構(gòu)概述 2、基本程序設(shè)計方法 順序程序設(shè)計 分支程序設(shè)計 循環(huán)程序設(shè)計 子程序 系統(tǒng)調(diào)用 3、匯編語言程序設(shè)計舉例,二、匯編語言程序設(shè)計 1、匯編語言源程序的結(jié)構(gòu) (1)代碼段、數(shù)據(jù)段、堆棧段、附加段 (2)舉例: STACK SEGMENT PARA STACKSTACK DB 500DUP(0) STACK ENDS DATA SEGMENT DATA ENDS ESDATA SEGMENT ESDATA ENDS,第五章 匯編語言程序設(shè)計,CODE SEGMENT MAIN ASSUME CS:CODE,DS:DATA, ES:E
3、SDATA,SS:STACK MOV AX,DATA MOV DS,AX MOV AX,ESDATA MOV ES,AX CODE ENDS END MAIN,(1)必須用ASSUME偽指令告訴匯編程序,哪一個段和哪一個段寄存器相對應(yīng),即某一段地址應(yīng)放入哪一個段寄存器。 (2)DOS的裝入程序在裝入執(zhí)行時,將把CS初始化為正確的代碼段地址,把SS初始化為正確的堆棧段地址,因此在源程序中不需要再對它們進行初始化,數(shù)據(jù)段要初始化。 MOV AX,DATA MOV DS,AX,第五章 匯編語言程序設(shè)計,第五章 匯編語言程序設(shè)計,2、基本程序設(shè)計方法 順序程序設(shè)計 順序程序結(jié)構(gòu)是指完全按指令存放順序逐
4、條執(zhí)行指令序列。 例10 將2個用ASCII碼表示的十進制數(shù)轉(zhuǎn)換為對應(yīng)的數(shù)值。 設(shè)2個數(shù)存放在存儲單元,轉(zhuǎn)換回存存儲單元。程序如下: DATA SEGMENT N DB 38H,32H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX AND N,BYTE PTR 0FH AND N+1,BYTE PTR 0FH,MOV AX, 4CH INT 21H CODE ENDS END START,第五章 匯編語言程序設(shè)計, 分支程序設(shè)計 分支程序的結(jié)構(gòu)形式 分支程序設(shè)計方法 程序的分支一般用條件轉(zhuǎn)移指
5、令實現(xiàn)。 例11 將一位用ASCII碼表示十六進制數(shù)轉(zhuǎn)換為對應(yīng)的數(shù)值。,圖5.5 分支結(jié)構(gòu)流程圖,第五章 匯編語言程序設(shè)計,DATA SEGMENT ACS DB 45H NUM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AL, ASC SUB AL, 48h CMP AL, 10,JC DONE SUB AL, 7 DONE: MOV NUM, AL MOV AX,4C00H INT 21H CODE ENDS END START,例 12 編寫符號函數(shù),即:,第五章
6、匯編語言程序設(shè)計,DATA SEGMENT X DB 12 Y DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX CMP X,BYTE PTR 0 JG GREAT JL LESS MOV AL,0 JMP DONE GREAT:MOV AL,1 JMP DONE,LESS:MOV AL,-1 DONE:MOV Y,AL MOV AX,4C00H INT 21H CODE ENDS END START,第五章 匯編語言程序設(shè)計, 循環(huán)程序設(shè)計 循環(huán)程序的結(jié)構(gòu)形式 循環(huán)程序的結(jié)束條件 循環(huán)
7、程序設(shè)計,例 14 統(tǒng)計字符串長度 設(shè)字符串存放在偏移地址從STR開始的連續(xù)存儲單元中,并以“$”作為結(jié)束符,字符串長度不包含結(jié)束符。程序流程如圖5.9所示。程序如下:,第五章 匯編語言程序設(shè)計,DATA SEGMENT STR DB Personal Computer, $ STRLEN DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV CL, 0 LEA BX, STR NEXT: MOV AL, BX CMP AL, $ JZ DONE,INC BX INC CL JMP
8、NEXT DONE: MOV STRLEN, CL MOV AX,4C00H INT 21H CODE ENDS END START,第五章 匯編語言程序設(shè)計,例16 二進制數(shù)轉(zhuǎn)換為BCD碼程序:將16位二進制數(shù)轉(zhuǎn)換為非壓縮BCD碼,存放到存儲單元中。 設(shè)16位二進制數(shù)存放在BX寄存器中,轉(zhuǎn)換的非壓縮BCD碼存放在以NBCD開始的存儲單元中。程序如下:,DSEG SEGMENT NBCD DB 5 DUP(?) DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV DS,AX MOV AX,BX MOV CX,L
9、ENGTH NBCD LEA SI,NBCD ADD SI,CX DEC SI,MOV CX,10 NEXT: CMP AX,10 JC DONE XOR DX,DX DIV CX MOV SI,DL DEC SI JMP NEXT DONE:MOV SI,AL MOV AX,4C00H INT 21H CSEG ENDS END START,第五章 匯編語言程序設(shè)計, 子程序,概述: 子程序定義:程序功能和結(jié)構(gòu)形式都相同,只是某些參數(shù)不同。 主程序定義:調(diào)用子程序的程序。 子程序可調(diào)用另外子程序,形成程序的調(diào)用嵌套。,第五章 匯編語言程序設(shè)計, 定義過程的偽指令PROC和ENDP 格式: 過
10、程名 PROC類型 ;過程體 RET 過程名 ENDP 舉例:DATASEG SEGMENT DB ? DATASEG ENDS CODESEG SEGMENT PROCEDURE_NAME PROC FAR ASSUME CS:CODESEG,DS:DATASEG START: PUSH DS,XOR AX, AX PUSH AX MOV AX,DATASEG MOV DS,AX RET PROCEDURE_NAME ENDP,第五章 匯編語言程序設(shè)計, 子程序設(shè)計 子程序會縮短整個源程序和目標(biāo)代碼的長度,但會由于調(diào)用子程序及從子程序返回而增加程序的執(zhí)行時間。 子程序設(shè)計要注意的問題: (1
11、)現(xiàn)場保護與恢復(fù)。 (2)參數(shù)傳遞。 (3)棧平衡。, 近(NEAR)調(diào)用:調(diào)用程序和被調(diào)用程序的子程序在同一個代碼段內(nèi)。,第五章 匯編語言程序設(shè)計,CODESEG SEGMENT MAIN_NAME PROC FAR ASSUME CS:CODESEG START:PUSH DS XOR AX, AX PUSH AX CALL SUB_NAME RET,MAIN_NAME ENDP SUB_NAME PROC NEAR RET SUB_N AME ENDP CODESEG ENDS END START,第五章 匯編語言程序設(shè)計,遠(FAR)調(diào)用:調(diào)用程序和被調(diào)用程序的子程序不在同一個代碼段。
12、,CODESEG1 SEGMENT PRO1_NAME PROC FAR ASSUME CS:CODESEG1 START:PUSH DS XOR AX, AX PUSH AX CALL PRO2_NAME RET PRO1_NAME ENDP CODESEG1 ENDS,CODESEG2 SEGMENT PRO2_NAME PROC FAR ASSUME CS:CODESEG2 BEGIN:PUSH DS XOR AX, AX PUSH AX RET PRO2_NAME ENDP CODESEG2 ENDS END START,第五章 匯編語言程序設(shè)計,例17 設(shè)計一個子程序:將一位十六進制
13、數(shù)轉(zhuǎn)換為對應(yīng)的ACSII碼。 將要轉(zhuǎn)換的十六進制數(shù)存放在DL中,子程序的入口參數(shù)為DL。這就是通過寄存器傳遞參數(shù)。,DTASC PROC ADD DL,30H CMP DL,39H JC FIN ADD DL,7 FIN :RET DTASC ENDP,例18 設(shè)計具有子程序調(diào)用的程序:調(diào)用子程序PROADD完成對長度為LEN的數(shù)組ARRAY的元素求和,并將和存放在存儲單元SUM中。 此程序主程序和子程序通過堆棧傳遞參數(shù)。程序設(shè)計如下:,第五章 匯編語言程序設(shè)計,MYDATA SEGMENT ARRAY DW 20 DUP(?) LEN DW ? SUM DW 2 DUP(?) MYDATA
14、ENDS MYCODE SEGMENT ASSUME CS:MYCODE,DS:MYDATA START: MOV AX,MYDATA MOV DS,AX MOV AX,OFFSET ARRAY PUSH AX MOV AX,OFFSET LEN PUSH AX,MOV AX,OFFSET SUM PUSH AX CALL FAR PTR PROADD MOV AX,4C00H INT 21H MYCODE ENDS,第五章 匯編語言程序設(shè)計,SUBCODE SEGMENT ASSUME CS:SUBCODE PORADD PROC FAR PUSH BP MOV BP,SP MOV SI,1
15、0BP MOV CX,8BP MOV DI,6BP OR AX,AX MOV DX,AX ADD AX,SI JNC NOCAY INC DX,NOCAY: INC SI INC SI LOOP NEXT MOV DI,AX MOV 2DI,DX POP BP RET 6 PROADD ENDP SUBCODE ENDS END START,第五章 匯編語言程序設(shè)計, 系統(tǒng)功能調(diào)用,系統(tǒng)提供兩種功能調(diào)用: DOS(Disk Operating System) BIOS (Base Input/Output System),系統(tǒng)功能調(diào)用和用戶程序的關(guān)系示意圖, DOS(Disk Operatin
16、g System)高級功能調(diào)用 作用:對輸入/輸出設(shè)備讀寫操作,檢查硬盤目錄,創(chuàng)建和刪除文件,讀寫文件中的記錄,設(shè)置和讀實時時鐘等 (1)調(diào)用格式 MOV AH ,功能號 對各寄存器設(shè)置調(diào)用參數(shù) INT 21H,第五章 匯編語言程序設(shè)計,(2)常用的一些功能調(diào)用,第五章 匯編語言程序設(shè)計,(3)DOS功能調(diào)用基本步驟: 1)設(shè)置功能號,并裝入AH。 2)設(shè)置調(diào)用(入口)參數(shù), 裝入指定的寄存器。 3)使用中斷指令I(lǐng)NT 21H。 4)檢查返回(出口)參數(shù)。 例5.22 從鍵盤輸入一個字符,保存到存儲單元。設(shè)存儲單元偏移地址為ASC,程序段,(3)DOS功能調(diào)用基本步驟: 1)設(shè)置功能號,并裝入
17、AH。 2)設(shè)置調(diào)用(入口)參數(shù), 裝入指定的寄存器。 3)使用中斷指令I(lǐng)NT 21H。 4)檢查返回(出口)參數(shù)。 例19 從鍵盤輸入一個字符,保存到存儲單元。設(shè)存儲單元偏移地址為ASC,程序段 MOV AH, 1 INT 21H MOV ASC, AL 例20 將存儲單元中的一串字符顯示在屏幕上。設(shè)串長為LEN(65536),串首地址偏移為STR。DOS的串顯示要求串要以字符$為結(jié)束符。,第五章 匯編語言程序設(shè)計,MOV AH,9 LDS DX, STR MOV CX, LEN MOV BX, DX ADD BX, CX MOV BYTE PTRBX, $ INT 21H BIOS (Base Input/Output System)低級功能調(diào)用 (1)調(diào)用格式 MOV AH ,功能類型 對各寄存器設(shè)置調(diào)用參數(shù) INT 中斷類型 (2)常用的一些BIOS功能調(diào)用。,第五章 匯編語言程序設(shè)計,第五章 匯編語言程序設(shè)計,(3)BIOS功能調(diào)用基本步驟: 1)設(shè)置功能號,并裝入AH
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 帶你認識什么是結(jié)構(gòu)化面試
- 化學(xué)反應(yīng)工程試卷
- 2024美容院美容院與養(yǎng)生館合作經(jīng)營協(xié)議范本3篇
- 2024年度現(xiàn)代農(nóng)業(yè)技術(shù)研發(fā)人員聘用合同模板3篇
- 2025年度酒店廚師團隊承包與客房服務(wù)一體化合同3篇
- 2025年度校園食堂食品安全培訓(xùn)及供餐服務(wù)協(xié)議3篇
- 馬鞍山師范高等專科學(xué)?!豆夥O(shè)備概論》2023-2024學(xué)年第一學(xué)期期末試卷
- 四川工商學(xué)院《英語聽說Ⅰ》2023-2024學(xué)年第一學(xué)期期末試卷
- 鄭州電子信息職業(yè)技術(shù)學(xué)院《微生物學(xué)實驗C》2023-2024學(xué)年第一學(xué)期期末試卷
- 天津財經(jīng)大學(xué)《橋牌與博弈論》2023-2024學(xué)年第一學(xué)期期末試卷
- 質(zhì)量安全總監(jiān)和質(zhì)量安全員考核獎懲制度
- 2024年白山客運資格證題庫
- 土地成片開發(fā)運營模式與案例
- 快樂讀書吧:中國民間故事(專項訓(xùn)練)-2023-2024學(xué)年五年級語文上冊(統(tǒng)編版)
- 機動車駕駛培訓(xùn)理論科目一考試題庫500題(含標(biāo)準(zhǔn)答案)
- 職業(yè)技術(shù)學(xué)院《工程力學(xué)》課程標(biāo)準(zhǔn)
- 新高考6選3選科指導(dǎo)與生涯規(guī)劃課件
- 科技成果技術(shù)成熟度評估規(guī)范
- 冠狀動脈微血管疾病診斷和治療中國專家共識(2023版)解讀
- 2024年全國職業(yè)院校技能大賽“新型電力系統(tǒng)與維護”賽項考試題庫-上(單選題)
- 《列那狐的故事》導(dǎo)讀課 教學(xué)設(shè)計-2024-2025學(xué)年統(tǒng)編版語文五年級上冊
評論
0/150
提交評論