匯編語言程序設計(自學)_第1頁
匯編語言程序設計(自學)_第2頁
匯編語言程序設計(自學)_第3頁
匯編語言程序設計(自學)_第4頁
匯編語言程序設計(自學)_第5頁
已閱讀5頁,還剩40頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、匯編語言程序設計(自學)一、設置自學型課程的目的一、設置自學型課程的目的二、自學型課程的教學形式及教師的作用二、自學型課程的教學形式及教師的作用三、本課程教學目標及學習方法三、本課程教學目標及學習方法四、本課程教學內容及要求四、本課程教學內容及要求 五、課程考核五、課程考核方法一、設置自學型課程的目的一、設置自學型課程的目的 培養(yǎng)獨立學習新知識、新技能,發(fā)現問題、分析問題、解決問題的自主學習能力,適應科學技術和社會發(fā)展的要求。 二、自學型課程的教學形式及教師的作用二、自學型課程的教學形式及教師的作用不進行課堂講授,對自學課程提出學習要求,列出教材和參考書目,布置和批改課程作業(yè),進行輔導、答疑、

2、質疑,組織學生討論,分析總結和組織課程考核等工作。本課程討論采用網上(教育在線)和指定教室兩種方式進行答疑輔導, 通過本課程的學習,掌握匯編語言指令系統(tǒng)的功通過本課程的學習,掌握匯編語言指令系統(tǒng)的功能、格式及尋址方式等基本概念的基礎上,通過自能、格式及尋址方式等基本概念的基礎上,通過自修及老師的指導,學習利用匯編語言進行程序設計,修及老師的指導,學習利用匯編語言進行程序設計,為后續(xù)的微型計算機接口技術等相關課程的學習提為后續(xù)的微型計算機接口技術等相關課程的學習提供扎實的基礎供扎實的基礎 。 通過仔細閱讀教材及參考書,掌握匯編語言進通過仔細閱讀教材及參考書,掌握匯編語言進行程序設計的方法,同時采

3、用上機編程的形式對所行程序設計的方法,同時采用上機編程的形式對所學內容進行練習,即采用理論與實踐相結合的方法學內容進行練習,即采用理論與實踐相結合的方法學習。學習。三、本課程教學目標及學習方法三、本課程教學目標及學習方法四、本課程教學內容及要求四、本課程教學內容及要求 n1、匯編語言程序的開發(fā)過程n2、順序程序設計n3、分支程序設計n4、循環(huán)程序設計n5、子程序設計n6、系統(tǒng)功能子程序調用n7、匯編語言程序的調試1、匯編語言程序的開發(fā)過程、匯編語言程序的開發(fā)過程程序設計步驟1、分析問題,確定算法。2、選擇程序設計語言。3、編制程序流程。4、正確、合理使用存儲器和寄存器。5、編寫程序。6、調試程

4、序。2、順序程序設計要求:掌握一個完整的匯編語言程序的結構框架。指令1指令2指令n指令n+1 :例 9-1設在數據段中定義有三個變量X,Y, Z,請利用算術移位指令編寫程序,計算出下式的值: Z=10*(X+Y)源程序源程序: :; ;設置數據段設置數據段DATA SEGMENTDATA SEGMENT X DW 20H ; X DW 20H ;變量變量X X Y DW 12H ; Y DW 12H ;變量變量Y Y Z DW ? ; Z DW ? ;變量變量Z ZDATA ENDSDATA ENDS; ;設置堆棧段設置堆棧段STACK1 SEGMENT PARA STACKSTACK1 SE

5、GMENT PARA STACK DB 10H DUP(0) DB 10H DUP(0)STACK1 ENDS STACK1 ENDS ; ;設置代碼段設置代碼段CODE SEGMENTCODE SEGMENTASSUME CS: CODE, DS:DATAASSUME CS: CODE, DS:DATASTART:START: MOV AX, DATA MOV AX, DATA MOV DS, AX MOV DS, AX MOV AX, X MOV AX, X ADD AX, Y ADD AX, Y SAL AX, 1 SAL AX, 1 MOV BX, AX MOV BX, AX MOV

6、CL, 2 MOV CL, 2 SAL AX, CL SAL AX, CL ADD AX, BX ADD AX, BX MOV Z, AX MOV Z, AX MOV AH, 4CH MOV AH, 4CH INT 21H INT 21HCODE ENDSCODE ENDS END END STARTSTART3、分支程序設計條件滿足?語句1語句2YN條件滿足?語句YN條件滿足?u分支程序的基本概念。u利用比較/測試分支結構實現程序設計。u利用分支表結構實現程序設計。重點重點:掌握分支程序的設計方法。難點難點:利用比較/測試方法實現分支程序設計、利用分支表結構實現分支程序設計。3、分支程序設計

7、 學習程序設計過程中需要注意掌握轉移指令的運學習程序設計過程中需要注意掌握轉移指令的運用。用。分支程序主要包括:分支程序主要包括:u兩分支程序設計兩分支程序設計u多分支程序設計多分支程序設計n條件轉移法條件轉移法n地址表法地址表法n跳轉表法跳轉表法4、循環(huán)程序設計u循環(huán)程序的基本結構循環(huán)程序的基本結構u循環(huán)程序的控制方法循環(huán)程序的控制方法u多重循環(huán)程序設計多重循環(huán)程序設計重點:重點:掌握循環(huán)程序的設計方法。掌握循環(huán)程序的設計方法。難點:難點:循環(huán)程序的控制方法:循環(huán)程序的控制方法: 計數控制法和條件控制法;計數控制法和條件控制法; 多重循環(huán)程序設計。多重循環(huán)程序設計。循環(huán)程序結構初始化部分工作

8、部分修改部分循環(huán)結束結束處理部分YN循環(huán)結束工作部分修改部分結束處理部分初始化部分初始化部分Y控制部分控制部分N循環(huán)程序結構1、初始化部分n設置地址指針、計數器初值2、工作部分3、修改部分4、控制部分n用計數控制循環(huán)n用條件控制循環(huán)5、結束處理部分循環(huán)控制方法1、用計數控制循環(huán)n使用計數器,達到計數器預定值,循環(huán)結束。要求循環(huán)次數已知。n計數器可以遞增、遞減n可以選用寄存器、也可用存儲單元2、用條件控制循環(huán)n找出一個終止循環(huán)的條件,每循環(huán)一次,對條件進行一次檢測。滿足終止循環(huán)的條件,退出循環(huán),否則繼續(xù)。n通常選用條件轉移指令來控制循環(huán)是否結束。n分清內外循環(huán)的任務和要求,劃分內外循環(huán)中有規(guī)律變

9、化的參數:地址指針、計數器n確定內外循環(huán)的控制方法和具體實施。3、多重循環(huán)程序設計循環(huán)控制方法5、 子程序設計u子程序設計方法子程序設計方法u子程序的參數傳遞子程序的參數傳遞u子程序的嵌套與遞歸子程序的嵌套與遞歸重點:重點:掌握子程序的設計方法;掌握子程序的設計方法; 主程序現場的保護與恢復。主程序現場的保護與恢復。難點:難點:主程序和子程序之間的參數傳遞方法:主程序和子程序之間的參數傳遞方法: 寄存器傳遞參數法、存儲器傳遞參數法、地址寄存器傳遞參數法、存儲器傳遞參數法、地址表傳遞參數法和堆棧傳遞參數法;表傳遞參數法和堆棧傳遞參數法; 子程序的嵌套與遞歸。子程序的嵌套與遞歸。程序基本結構n過程

10、n主調過程(主程序)n被調過程(子程序)查找程序字符輸入串輸入查找結果輸出5、 子程序設計n過程定義n過程調用n過程返回需要掌握子程序設計方法1 1、適度地劃分并確定子程序功能、適度地劃分并確定子程序功能n具有獨立功能的程序作為一個模塊具有獨立功能的程序作為一個模塊n多次出現的程序段獨立出來多次出現的程序段獨立出來2 2、選擇適當的參量傳遞途徑、選擇適當的參量傳遞途徑寄存器傳遞、參數表傳遞、地址表傳遞、堆棧傳遞寄存器傳遞、參數表傳遞、地址表傳遞、堆棧傳遞3 3、信息的保存、信息的保存n在主程序中保存信息在主程序中保存信息n在子程序中保存信息在子程序中保存信息4 4、編寫子程序的文字說明、編寫子

11、程序的文字說明6、系統(tǒng)功能調用系統(tǒng)功能調用由OS提供的一組實現特殊功能的子程序供程序員在程序中調用,以減輕編程工作量。系統(tǒng)功能調用有兩種,一種稱為DOS功能調用,另一種稱為BIOS功能調用。應用程序外設硬件接口BIOSDOS系統(tǒng)功能調用采用軟中斷指令 INT n (其中:n為中斷類型碼) (1)PUSHF,TF、IF清0,CS、IP入棧 (2)按中斷類型碼n,從中斷向量表對應位置取出將要調用的功能子程序的入口地址CS,IP (3)功能子程序返回:IRETDOS功能調用調用方法:p 入口參數p 子程序編號送AHp INT 21HDOS功能調用基本I/O功能調用 功能 入口參數 出口參數 說明 鍵

12、盤輸入 AH = 1AL=字符ASCII碼字符顯示控制臺輸入 AH = 8同1號無顯示顯示輸出 AH = 2 DL = 字符ASCII碼打印輸出 AH = 5 DL = 字符ASCII碼直接控制臺 AH = 6 ZF=0,AL=字符ASCII碼輸入/輸出 DL = 0FFH/字符碼 ZF=1無鍵按下字符串輸出 AH = 9字符串須以$結束 DS:DX=串首址字符串輸入 AH = 0AH首先定義緩沖區(qū) (1) 從鍵盤輸入一個字符(功能號功能號=1=1) MOV AH,MOV AH,1 1 ;等待按鍵 INT 21H INT 21H ;字符回顯 AL (2) 從鍵盤輸入一個字符,無顯示(功能號功能

13、號=8=8) MOV AH,MOV AH,8 8 INT 21H INT 21H AL DOS功能調用 例:程序中有時需要用戶對提示做出應答 GET_KEY: MOV AH,1;等待鍵入字符 INT 21H;結果在AL中 CMP AL,Y ;是Y? JZ YES ;是,轉YES CMP AL,N ;是N? JZ NO ;是,轉NO JMP GET_KEY;否則繼續(xù)等待輸入 YES: NO: (3) 在顯示器上顯示一個字符(功能號=2) MOV DL, MOV AH, 2 INT 21H 例:在顯示器上顯示一個字符A MOV DL, A ;或MOV DL, 41H MOV AH, 2 INT 2

14、1HDOS功能調用(4)MOV DL,0FFH;鍵盤輸入 MOV AH,6 INT 21H MOV DL,24H;屏幕輸出 MOV AH,6 INT 21HDOS功能調用(5)顯示字符串(功能號功能號=9) LEA DX, MOV AH, 9 INT 21H注意:被顯示的字符串必須以注意:被顯示的字符串必須以$結束結束。DOS功能調用DATA SEGMENT BUF DB HOW DO YOU DO?$ .DATA ENDS.MOV AX,DATAMOV DS,AX.MOV DX,OFFSET BUFMOV AH,9INT 21H. 例:顯示一字符串(6)輸入字符串(功能號功能號=0AH) 此

15、功能調用從鍵盤輸入一串字符并把它存入用戶指定的緩沖區(qū)中。LEA DX, MOV AH, 0AHINT 21H DOS功能調用(預留的預留的N1個字節(jié)的存儲單元個字節(jié)的存儲單元) 0DHN2N1 N1: 緩沖區(qū)長度(最大鍵入字符數) N2: 實際鍵入的字符數(不包括回車符) 用戶定義的輸入字符串的緩沖區(qū)格式 DATA SEGMENT BUF DB 10;緩沖區(qū)長度 DB ?;實際輸入個數 DB 10 DUP(?) ;存儲空間DATA ENDS.MOV AX,DATAMOV DS,AX.LEA DX,BUFMOV AH,10INT 21H. 例:輸入字符串DOS功能調用基本I/O功能調用 功能 入

16、口參數 出口參數 說明 設置日期 AH = 2BHAL=0或AL=0FFH均為二進制數 CX=年號 DH=月,DL=日讀取日期 AH = 2AHCX=年號均為二進制數DH=月,DL=日設置時間 AH = 2DH CH=小時,CL=分AL=0或AL=0FFH均為二進制數 DH=秒,DL=百分秒讀取時間 AH = 2CHCH=小時,CL=分均為二進制數DH=秒,DL=百分秒MOV CX,1999MOV DH,5MOV DL,20MOV AH,2BH ;設置日期INT 21H;1999.5.20MOV AH,2AH ;取得日期INT 21H;cx:dx=1999.5.20MOV YEAR,CXMOV

17、 MONTH,DHMOV DAY,DLDOS功能調用(7)設置/讀出日期MOV CX,090FHMOV DX,0200HMOV AH,2DH ;設置時間INT 21H;9點15分2秒MOV AH,2CH ;取得時間INT 21H;cx:dxMOV HOURS, CHMOV MINUTES, CLMOV SECONDS, DHDOS功能調用(8)設置/讀出時間BIOS功能調用功能調用 BIOS調用通過多個軟中斷提供,調用方法為:MOV AH,INT BIOS中的幾個主要中斷類型如下:INT 10H屏幕顯示INT 13H磁盤操作INT 14H串行口操作INT 16H鍵盤操作INT 17H打印機操作

18、每類中斷由于包含許多子功能,調用時通過功能號指定。BIOS功能調用鍵盤輸入16H號功能調用功能 出口參數 說明 AH=0 AL=字符的ASCII碼從鍵盤讀一個字符 AH=1 ZF=1表示無鍵可讀判鍵盤是否有鍵可讀 ZF=0表示有鍵可讀AH=2 AL=功能鍵狀態(tài)字節(jié)取特殊功能鍵當前狀態(tài)BIOS功能調用打印輸出17H號功能調用 功能 入口參數 出口參數 說明 AH=0 AL=字符代碼打印一個字符 DX=打印機號AH=1 DX=打印機號初始化打印機AH=2 DX=打印機號AL=狀態(tài)字節(jié)取打印機狀態(tài)BIOS功能調用顯示輸出10H號功能調用 功能 入口參數 出口參數 說明 AH=0 AL=方式號設置顯示

19、方式AH=1 CH=光標開始行號置光標類型 CL=光標結束行號AH=2 DH=行號,DL=列號置光標位置 BH=頁號AH=3 BH=頁號 DH=行號,DL=列號讀光標位置 CX=當前光標大小AH=5 AL=頁號選擇當前顯示頁BIOS功能調用顯示輸出10H號功能調用 功能 入口參數 出口參數 說明向上滾屏 AH=6,AL=上滾行數,BH=空行屬性 CH、CL=滾動左上角行列號 DH、DL=滾動右下角行列號向下滾屏 AH=7 其余同6讀光標處 AH=8AL=字符字符和屬性 BH=頁號AH=屬性將字符和屬性 AH=9,AL=字符寫到光標處 BH=頁號, CX=個數 BL=字符屬性/顏色將字符寫到 A

20、H=0AH屬性不變光標位置 其余同9編輯程序源程序 文件宏匯編程序 MASM目標程序文件語法有錯?N鏈接程序 LINKYAB.ASM.OBJ.LST可執(zhí)行 文件調試程序DEBUG有錯嗎?N結束YAB.EXE.MAP7、匯編語言程序的調試1 1、編輯源程序、編輯源程序 用DOS下的文本編輯器EDIT編寫程序。C:EDIT Fibonacci.ASM (回車)2 2、產生目標文件、產生目標文件 對已經編輯好的.ASM文件,可以用宏匯編程序MASM進行匯編,匯編后生成二進制代碼的目標程序。C:MASM Fibonacci.ASM(回車) MASM在匯編源程序時,產生三個文件。目標文件、列表文件、交叉

21、引用符號表文件(CRF文件)3 3、連接產生可執(zhí)行文件、連接產生可執(zhí)行文件 匯編程序生成的目標文件,必須經過連接程序連接后,才可以得到在計算機上運行的可執(zhí)行程序。C:LINK Fibonacci(回車) 連接程序連接后,可以產生三個文件。 可執(zhí)行文件,清單文件、需要連接的庫文件 4、運行程序C:Fibonacci(回車)DOS下使用DEBUG調試 1 1、進入與退出命令、進入與退出命令nDEBUG DEBUG 文件名文件名 參數表參數表 n如果需要退出如果需要退出DEBUGDEBUG狀態(tài),返回操作系統(tǒng),可以使用狀態(tài),返回操作系統(tǒng),可以使用退出命令退出命令Q Q。2 2、顯示命令、顯示命令n顯示

22、寄存器內容顯示寄存器內容RR命令命令n顯示存儲器內容顯示存儲器內容DD命令命令n反匯編命令反匯編命令UU命令命令3 3、修改命令、修改命令n匯編指令匯編指令AA命令命令n修改寄存器內容修改寄存器內容RR命令命令n修改存儲單元內容修改存儲單元內容E E 命令命令4 4、程序運行命令、程序運行命令n連續(xù)運行命令連續(xù)運行命令GG命令命令n跟蹤運行命令跟蹤運行命令TT命令命令n執(zhí)行程序命令執(zhí)行程序命令PP命令命令五、課程考核五、課程考核方法 課內實驗主要是在掌握計算機硬件系統(tǒng)基本原理的基礎上,通過Intel 8086匯編語言內容的學習,進行匯編語言的上機編程,熟悉各種程序結構及DOS系統(tǒng)功能調用的使用

23、方法,最后提交規(guī)范的上機實驗報告。上機測試成績占50%,程序設計報告占50。編號編號名名 稱稱內內 容容1 1分支程序結構編程實踐分支程序結構編程實踐編寫、調試編寫、調試1 12 2道典型分支程序結道典型分支程序結構設計題目構設計題目2 2多重循環(huán)程序結構編程實多重循環(huán)程序結構編程實踐踐編寫、調試編寫、調試1 12 2道典型多重循環(huán)程道典型多重循環(huán)程序結構設計題目序結構設計題目3 3子程序結構編程實踐子程序結構編程實踐編寫、調試編寫、調試1 12 2道典型子程序結構道典型子程序結構設計題目設計題目4 4DOSDOS功能調用編程實踐功能調用編程實踐編寫、調試編寫、調試1 12 2道典型道典型DO

24、SDOS功能調功能調用題目用題目5 5綜合型程序結構編程實踐綜合型程序結構編程實踐編寫、調試編寫、調試1 13 3道綜合型程序結構道綜合型程序結構設計題目設計題目練習題(每一部分2選1)分支程序設計:分支程序設計:1 1、編寫程序,鍵入學生成績(百分制),按、編寫程序,鍵入學生成績(百分制),按A A、B B、C C、D D顯示在屏幕上。顯示在屏幕上。2 2、編寫一程序,比較兩個字符串所含字符是否相等,如果相等,在屏幕、編寫一程序,比較兩個字符串所含字符是否相等,如果相等,在屏幕 上顯示上顯示“Y Y”,反之顯示,反之顯示“N N”。循環(huán)程序設計:循環(huán)程序設計:1 1、設有一段文字,編寫一段程

25、序查找字母、設有一段文字,編寫一段程序查找字母a a出現的次數,并顯示在屏幕上。出現的次數,并顯示在屏幕上。2 2、編寫程序,求出、編寫程序,求出100100以內既能被以內既能被2 2整除又能被整除又能被3 3整除的數,并顯示在屏整除的數,并顯示在屏 幕上。幕上。子程序設計:子程序設計:1 1、編寫子程序,分別計算、編寫子程序,分別計算100100以內所有奇數之和與所有偶數之和,并顯示以內所有奇數之和與所有偶數之和,并顯示 在屏幕上。在屏幕上。2 2、給定一個數組存放、給定一個數組存放5 5個小寫字母,用地址表傳遞方法編寫子程序,將其個小寫字母,用地址表傳遞方法編寫子程序,將其 轉換成大寫字母,并顯示在屏幕上。轉換成大寫字母,并顯示在屏幕上。DOSDOS功能調用:功能調用:1 1、在圖形方式下,在屏幕中央繪制一個用、在圖形方式下,在屏幕中央繪制一個用“* *”表示的等腰三角形。表示的等腰三角形。2 2、在圖形方式下,在屏幕中

溫馨提示

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

評論

0/150

提交評論