匯編語言程序設(shè)計(47).ppt_第1頁
匯編語言程序設(shè)計(47).ppt_第2頁
匯編語言程序設(shè)計(47).ppt_第3頁
匯編語言程序設(shè)計(47).ppt_第4頁
匯編語言程序設(shè)計(47).ppt_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第4章 匯編語言程序設(shè)計,本章主要教學內(nèi)容 l 匯編語言和匯編程序的基本概念 l 匯編源程序書寫規(guī)則、語句格式及程序分段 l 偽指令語句的格式、功能及應(yīng)用 l 匯編語言源程序的建立、匯編、連接、調(diào)試及運行 。,第4章 匯編語言程序設(shè)計,4.1 匯編語言和匯編程序的基本概念,4.2 匯編語言源程序書寫格式,4.3 8086匯編語言中標識符、表達式和運算符,4.5 匯編語言程序上機過程,4.4 偽指令語句,4.1 匯編語言和匯編程序的基本概念,4.1.1 匯編語言 面向CPU指令系統(tǒng)的程序設(shè)計語言 采用助記符表示操作碼和操作數(shù) 用符號地址表示操作數(shù)地址 用匯編語言編寫程序占用內(nèi)存空間少,執(zhí)行速度快,將匯編語言源程序翻譯成目標程序的過程稱為匯編,所用的軟件稱為匯編程序。 宏匯編程序MASM 匯編產(chǎn)生目標程序文件和源程序列表文件: 目標程序文件經(jīng)連接定位后由計算機執(zhí)行 源程序列表文件將列出源程序、目標程序的機器語言代碼及符號表,4.1.2 匯編程序,語句類型 8086宏匯編MASM使用的語句分成3種類型: 指令語句:能夠產(chǎn)生目標代碼,CPU可執(zhí)行 偽指令語句:為匯編程序和連接程序提供的管理性語句,不產(chǎn)生目標代碼 宏指令語句:可包括多條指令或偽指令,4.2 匯編語言語句的格式,一般情況下,匯編語言的語句可以由14部分組成: 名字 操作碼項 操作數(shù) ;注釋 名字(標號)項是一個符號。 操作碼項是一個操作碼的助記符,它可以是指令、偽操作或宏指令。 操作數(shù)項由一個或多個表達式組成,它提供為執(zhí)行所要求的操作而需要的信息。 注釋項用來說明程序或語句的功能,分號(;)為識別注釋項的開始,也可以從一行的第一個字符開始,此時整行都是注釋,常用來說明下面一段程序的功能。 其中帶方括號的部分表示任選項,即可以選用,也可以不用。 下機分別說明每一項的作用及表示方法。,4.2.1 名字項,4.2.1 名字項 名字項可以是語句標號或標量。標號是可執(zhí)行指令語句的符號地址,在代碼段中定義,用作轉(zhuǎn)移指令或調(diào)用指令的操作數(shù),表示轉(zhuǎn)移地址;變量通常是指存放數(shù)據(jù)的存儲器單元符號地址,它在除段碼段以外的其它段中定義,可以用作指令的操作數(shù)。名字和變量統(tǒng)稱為標識符。,1組成名字的字符及規(guī)則,它是由字母打頭的字符串,可由下列字符組成: 字母 AZ,az。 數(shù)字 09。 專用字符 ?、。 除數(shù)字09外,其他字符都可以放在名字的第一個位置。字符“”只能出現(xiàn)在名字的第一個位置,其他位置不允許出現(xiàn)。名字最長由31個字符組成。匯編程序?qū)?1個以后的字符不予理會,所以,當兩個名字的前31個字符完全相同而從第32個字符開始有不同字符時,匯編程序?qū)⑺鼈円暈橥幻帧?2標號和變量的區(qū)別,標號是某條指令所存放單元的符號地址,而變量是某操作數(shù)據(jù)所存放單元的符號地址。在匯編語言程序中,指令語句中的名字一般采用標號,這個標號可以是任選的,即可以不寫。標號出現(xiàn)在代碼段,后面跟著冒號“:”。,3 變量和標號的屬性,標號和名字一經(jīng)定義便具有兩類三種屬性: 段值 標號和名字對應(yīng)存儲單元的段地址 偏移值 標號和名字對應(yīng)存儲單元的偏移地址 類型 標號、子程序名的類型可以是NEAR(近)和FAR(遠),分別表示段內(nèi)或段間 變量名的類型可以是BYTE(字節(jié))、WORD(字)和DWORD(雙字)等,4.2.3 操作數(shù)項,操作數(shù)項是操作符的操作對象。 操作符在完成相應(yīng)的操作時要求有一系列的操作數(shù)。當有兩個或兩個以上的操作數(shù)時,各操作數(shù)之間用逗號隔開。對于指令語句,操作數(shù)項一般給出操作數(shù)地址,它們可能一個或多個,或一個也沒有。對于偽指令和宏指令語句,操作數(shù)項則給出所要求的參數(shù)。 操作數(shù)一般有常數(shù)、寄存器、標號、變量和表達式等幾種形式。,1常數(shù),常數(shù)是操作數(shù)位置出現(xiàn)的數(shù)值數(shù)據(jù)或字符型數(shù)據(jù),它的值在匯編時已完全確定,程序運行過程中,不會發(fā)生變化。 在8086宏匯編中,允許有以下幾種常數(shù): 二進制常數(shù):是一串0和1數(shù)字的組合,以字母B結(jié)尾。 八進制常數(shù):由數(shù)字07組成,必須以字母O結(jié)尾。 十進制常數(shù):這是最常用的一種常數(shù),后跟字母D或不跟任何字母。 十六進制常數(shù):由數(shù)字09和字母AF組成,這類數(shù)據(jù)必須以字母H結(jié)尾。 字符串常數(shù):用單引號括起來的字符以及字符串,其各個字符的ASCII碼值構(gòu)成字符串常數(shù)。字符串常數(shù)可以和整數(shù)常數(shù)等價使用,但這些字符串常數(shù)的長度必須為一個字節(jié)或一個字,以便與目標操作數(shù)的長度相匹配。 在指令中,常數(shù)通常被稱為立即數(shù),它只能用作源操作數(shù),不能作為目標操作數(shù)。它的允許取值范圍由指令中的目標操作數(shù)的形式自動確定為8位或16位。,2 表達式和運算符,指由運算符連接的各種常數(shù)構(gòu)成的表達式 匯編過程中計算表達式得數(shù)值 程序運行之前,已算出結(jié)果 增強程序可讀性,2、表達式和運算符,(1)算術(shù)運算符 + - * / MOD (2)邏輯運算符 AND OR XOR NOT (3)移位運算符 SHL SHR (4)關(guān)系運算符 EQ NE GT LT GE LE (5)分析運算符 HIGH LOW,(1)算術(shù)運算符,實現(xiàn)加、減、乘、除、取余的算術(shù)運算 MOV AX,3*4+5 ;等價于 MOV AX,17 其中MOD也稱為取模,它產(chǎn)生除法之后的余數(shù),如19 MOD 7 = 5 加+和減-運算符還可以用于地址表達式 除加、減外,其他運算符的參數(shù)必須是整數(shù),(2) 邏輯運算符,實現(xiàn)按位相與、相或、異或、求反的邏輯運算 OR AL,03H AND 45H ;等價于 OR AL,01H,(3) 移位運算符,實現(xiàn)對數(shù)值的左移、右移的邏輯操作;移入低位或高位的是0 格式為: 數(shù)值表達式 SHL/SHR 移位次數(shù) MOV AL,0101B SHL (2*2) ;等價于 MOV AL,01010000B,(4) 關(guān)系運算符,用于比較和測試符號數(shù)值 MASM用0FFFFH(補碼 -1)表示條件為真 MASM用0000H表示條件為假 MOV BX, PORT GE 5 ; PORT5時,匯編結(jié)果為MOV BX,0FFFFH ;否則,匯編結(jié)果為MOV BX,0,(5) 分析運算符,對存儲器地址進行運算的 5個:SEG(求段基值)、OFFSET(求偏移量)、TYPE(求變量類型)、LENGTH(求變量長度)和SIZE(求字節(jié)數(shù)) 例如: MOV BX,SEG ARR MOV ES,SEG DATA1,ORG $+10 ARRAY DB 45,45H MOV BX,OFFSET ARRAY ;等價于 LEA BX,ARRAY MOV CL,ARRAY+4 ;等效于 MOV CL,ARRAY4 MOV AX,ES:2000H,分析運算符實例,屬性修改運算符,用來建立和臨時改變變量或標號的類型 6個:PTR、段屬性前綴、SHORT、THIS 例如: MOV BX,OFFSET ARR ;等同于 LEA BX,ARR MOV AX,ES:DATA1 MOV CX,WORD PTR BX MOV DX,HIGH DATA1,(6) 綜合運算符,運算符的優(yōu)先級,() LENGTH SIZE PTR OFFSET SEG TPYE THIS : HIGH LOW * / MOD SHL SHR + - EQ NE GT LT GE LE NOT AND OR XOR SHORT,建議采用圓括號“( )”顯式表達,它可以極大地提高程序的可閱讀性,5.3 偽指令語句,給匯編程序(軟件)的命令, 在匯編過程中處理 5.3.1 數(shù)據(jù)定義偽指令 用來定義變量的類型 分配存儲單元,可賦值或不賦值 一般格式: 變量名 偽指令 操作數(shù) ,操作數(shù) ;注釋,2. 常用的數(shù)據(jù)定義偽指令 定義字節(jié)變量偽指令DB 定義字變量偽指令DW 定義雙字變量偽指令DD 定義四字變量偽指令DQ 定義十字節(jié)變量偽指令DT,變量定義偽指令最常使用,字節(jié)單元定義實例,DATA SEGMENT ;數(shù)據(jù)段 X DB A,-5 DB 2 DUP(100),? Y DB ABC DATA ENDS,應(yīng)用,指定復制次數(shù),用復制運算符DUP復制操作數(shù),字單元定義實例,DATA SEGMENT ;數(shù)據(jù)段 COUNT DW 8000H,?,AB MAXINT EQU 64H NUMBER DW MAXINT ARRAY DW MAXINT DUP(0) DATA ENDS,應(yīng)用,4.3.2 符號定義偽指令 給符號重新命名或定義新的類型屬性 常用的有EQU、LABLE 5.4.3 段定義偽指令 定義邏輯段時指定段的名稱和范圍,并指明段的定位類型、組合類型及類別 常用SEGMENT、ENDS和ASSUME等,符號定義 DCHAR EQU 2 ENTER = 13 CALLDOS EQU 符號應(yīng)用(左邊程序段等價右側(cè)的符號形式) MOV AH,DCHAR ; MOV AH,2 MOV DL, ENTER ; MOV DL,13 CALLDOS ; INT 21H,符號常數(shù)實例,4.3.4 過程定義偽指令 將一些重復出現(xiàn)的語句組定義為子程序,又稱為過程,可以采用CALL指令來調(diào)用。 定義格式: 過程名 PROC NEAR/FAR (語句系列) RET (語句系列) 過程名 ENDP 2. 調(diào)用過程的格式:CALL 過程名,4.3.5 結(jié)構(gòu)定義偽指令 結(jié)構(gòu)是相互關(guān)聯(lián)的一組數(shù)據(jù)的組合形式。 用偽指令STRUC和ENDS把相關(guān)數(shù)據(jù)定義語句組合起來,便構(gòu)成一個完整的結(jié)構(gòu)。 使用格式: 結(jié)構(gòu)名 STRUC (數(shù)據(jù)定義語句序列) 結(jié)構(gòu)名 ENDS,4.3.6 模塊定義與連接偽指令 編寫規(guī)模較大的匯編語言源程序時,可將整個程序劃分為幾個獨立的源程序,稱之為模塊。 將各模塊分別進行匯編,生成各自的目標程序,最后連接成為一個完整的可執(zhí)行程序。 各模塊之間可以相互進行符號訪問。 為了進行模塊間連接和相互訪問,通常使用偽指令NAME、END、PUBLIC、EXTRN,4.3.7 程序計數(shù)器$和ORG偽指令,1程序計數(shù)器$ 用在表達式里,為下一個能分配的存儲單元的偏移地址 2ORG偽指令 起始位置設(shè)定偽指令 用來指出源程序或數(shù)據(jù)塊的起點 可改變位置計數(shù)器的值,4.4 匯編語言程序的段結(jié)構(gòu),匯編語言源程序的分段結(jié)構(gòu) 若干個任意排序的邏輯段 每個邏輯段以SEGMENT語句開始,以ENDS語句結(jié)束 整個源程序以END語句結(jié)束,4.5 匯編語言程序上機過程,4.5.1 匯編語言的工作環(huán)境及上機步驟 1硬件環(huán)境 一般IBM PC/XT及其兼容機基本配置 2軟件環(huán)境 1)DOS操作系統(tǒng) 2)編輯程序 3)宏匯編程序MASM.EXE 4)連接程序LINK.EXE 5)調(diào)試程序DEBUG.COM,3運行匯編語言程序的步驟,1)編輯匯編語言源程序,擴展名為.ASM; 2)用MASM.EXE匯編成.OBJ目標文件; 3)有語法錯,用編輯軟件重新調(diào)入修改。無錯用LINK.EXE把.OBJ文件轉(zhuǎn)化成.EXE可執(zhí)行文件; 4)在DOS命令狀態(tài)下直接鍵入可執(zhí)行文件文件名執(zhí)行該文件。,編輯,文本編輯器,如 EDIT.COM,源程序:文件名.asm,匯編,匯編程序,如 ML.EXE,目標模塊:文件名.obj,連接,連接程序,如 LINK.EXE,可執(zhí)行文件:文件名.exe,調(diào)試,調(diào)試程序,如 DEBUG.EXE,錯誤,匯編語言程序的開發(fā)過程,本節(jié)教學要求,熟悉偽指令DB、DW、DD、SEGMENT/ENDS、ASSUME、END、$、ORG 、EQU和= 、PROC/ENDP 了解偽指令DQ / DT、S

溫馨提示

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

評論

0/150

提交評論