




已閱讀5頁(yè),還剩34頁(yè)未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第4章 匯編語(yǔ)言程序設(shè)計(jì),本章主要教學(xué)內(nèi)容 l 匯編語(yǔ)言和匯編程序的基本概念 l 匯編源程序書寫規(guī)則、語(yǔ)句格式及程序分段 l 偽指令語(yǔ)句的格式、功能及應(yīng)用 l 匯編語(yǔ)言源程序的建立、匯編、連接、調(diào)試及運(yùn)行 。,第4章 匯編語(yǔ)言程序設(shè)計(jì),4.1 匯編語(yǔ)言和匯編程序的基本概念,4.2 匯編語(yǔ)言源程序書寫格式,4.3 8086匯編語(yǔ)言中標(biāo)識(shí)符、表達(dá)式和運(yùn)算符,4.5 匯編語(yǔ)言程序上機(jī)過(guò)程,4.4 偽指令語(yǔ)句,4.1 匯編語(yǔ)言和匯編程序的基本概念,4.1.1 匯編語(yǔ)言 面向CPU指令系統(tǒng)的程序設(shè)計(jì)語(yǔ)言 采用助記符表示操作碼和操作數(shù) 用符號(hào)地址表示操作數(shù)地址 用匯編語(yǔ)言編寫程序占用內(nèi)存空間少,執(zhí)行速度快,將匯編語(yǔ)言源程序翻譯成目標(biāo)程序的過(guò)程稱為匯編,所用的軟件稱為匯編程序。 宏匯編程序MASM 匯編產(chǎn)生目標(biāo)程序文件和源程序列表文件: 目標(biāo)程序文件經(jīng)連接定位后由計(jì)算機(jī)執(zhí)行 源程序列表文件將列出源程序、目標(biāo)程序的機(jī)器語(yǔ)言代碼及符號(hào)表,4.1.2 匯編程序,語(yǔ)句類型 8086宏匯編MASM使用的語(yǔ)句分成3種類型: 指令語(yǔ)句:能夠產(chǎn)生目標(biāo)代碼,CPU可執(zhí)行 偽指令語(yǔ)句:為匯編程序和連接程序提供的管理性語(yǔ)句,不產(chǎn)生目標(biāo)代碼 宏指令語(yǔ)句:可包括多條指令或偽指令,4.2 匯編語(yǔ)言語(yǔ)句的格式,一般情況下,匯編語(yǔ)言的語(yǔ)句可以由14部分組成: 名字 操作碼項(xiàng) 操作數(shù) ;注釋 名字(標(biāo)號(hào))項(xiàng)是一個(gè)符號(hào)。 操作碼項(xiàng)是一個(gè)操作碼的助記符,它可以是指令、偽操作或宏指令。 操作數(shù)項(xiàng)由一個(gè)或多個(gè)表達(dá)式組成,它提供為執(zhí)行所要求的操作而需要的信息。 注釋項(xiàng)用來(lái)說(shuō)明程序或語(yǔ)句的功能,分號(hào)(;)為識(shí)別注釋項(xiàng)的開始,也可以從一行的第一個(gè)字符開始,此時(shí)整行都是注釋,常用來(lái)說(shuō)明下面一段程序的功能。 其中帶方括號(hào)的部分表示任選項(xiàng),即可以選用,也可以不用。 下機(jī)分別說(shuō)明每一項(xiàng)的作用及表示方法。,4.2.1 名字項(xiàng),4.2.1 名字項(xiàng) 名字項(xiàng)可以是語(yǔ)句標(biāo)號(hào)或標(biāo)量。標(biāo)號(hào)是可執(zhí)行指令語(yǔ)句的符號(hào)地址,在代碼段中定義,用作轉(zhuǎn)移指令或調(diào)用指令的操作數(shù),表示轉(zhuǎn)移地址;變量通常是指存放數(shù)據(jù)的存儲(chǔ)器單元符號(hào)地址,它在除段碼段以外的其它段中定義,可以用作指令的操作數(shù)。名字和變量統(tǒng)稱為標(biāo)識(shí)符。,1組成名字的字符及規(guī)則,它是由字母打頭的字符串,可由下列字符組成: 字母 AZ,az。 數(shù)字 09。 專用字符 ?、。 除數(shù)字09外,其他字符都可以放在名字的第一個(gè)位置。字符“”只能出現(xiàn)在名字的第一個(gè)位置,其他位置不允許出現(xiàn)。名字最長(zhǎng)由31個(gè)字符組成。匯編程序?qū)?1個(gè)以后的字符不予理會(huì),所以,當(dāng)兩個(gè)名字的前31個(gè)字符完全相同而從第32個(gè)字符開始有不同字符時(shí),匯編程序?qū)⑺鼈円暈橥幻帧?2標(biāo)號(hào)和變量的區(qū)別,標(biāo)號(hào)是某條指令所存放單元的符號(hào)地址,而變量是某操作數(shù)據(jù)所存放單元的符號(hào)地址。在匯編語(yǔ)言程序中,指令語(yǔ)句中的名字一般采用標(biāo)號(hào),這個(gè)標(biāo)號(hào)可以是任選的,即可以不寫。標(biāo)號(hào)出現(xiàn)在代碼段,后面跟著冒號(hào)“:”。,3 變量和標(biāo)號(hào)的屬性,標(biāo)號(hào)和名字一經(jīng)定義便具有兩類三種屬性: 段值 標(biāo)號(hào)和名字對(duì)應(yīng)存儲(chǔ)單元的段地址 偏移值 標(biāo)號(hào)和名字對(duì)應(yīng)存儲(chǔ)單元的偏移地址 類型 標(biāo)號(hào)、子程序名的類型可以是NEAR(近)和FAR(遠(yuǎn)),分別表示段內(nèi)或段間 變量名的類型可以是BYTE(字節(jié))、WORD(字)和DWORD(雙字)等,4.2.3 操作數(shù)項(xiàng),操作數(shù)項(xiàng)是操作符的操作對(duì)象。 操作符在完成相應(yīng)的操作時(shí)要求有一系列的操作數(shù)。當(dāng)有兩個(gè)或兩個(gè)以上的操作數(shù)時(shí),各操作數(shù)之間用逗號(hào)隔開。對(duì)于指令語(yǔ)句,操作數(shù)項(xiàng)一般給出操作數(shù)地址,它們可能一個(gè)或多個(gè),或一個(gè)也沒有。對(duì)于偽指令和宏指令語(yǔ)句,操作數(shù)項(xiàng)則給出所要求的參數(shù)。 操作數(shù)一般有常數(shù)、寄存器、標(biāo)號(hào)、變量和表達(dá)式等幾種形式。,1常數(shù),常數(shù)是操作數(shù)位置出現(xiàn)的數(shù)值數(shù)據(jù)或字符型數(shù)據(jù),它的值在匯編時(shí)已完全確定,程序運(yùn)行過(guò)程中,不會(huì)發(fā)生變化。 在8086宏匯編中,允許有以下幾種常數(shù): 二進(jìn)制常數(shù):是一串0和1數(shù)字的組合,以字母B結(jié)尾。 八進(jìn)制常數(shù):由數(shù)字07組成,必須以字母O結(jié)尾。 十進(jìn)制常數(shù):這是最常用的一種常數(shù),后跟字母D或不跟任何字母。 十六進(jìn)制常數(shù):由數(shù)字09和字母AF組成,這類數(shù)據(jù)必須以字母H結(jié)尾。 字符串常數(shù):用單引號(hào)括起來(lái)的字符以及字符串,其各個(gè)字符的ASCII碼值構(gòu)成字符串常數(shù)。字符串常數(shù)可以和整數(shù)常數(shù)等價(jià)使用,但這些字符串常數(shù)的長(zhǎng)度必須為一個(gè)字節(jié)或一個(gè)字,以便與目標(biāo)操作數(shù)的長(zhǎng)度相匹配。 在指令中,常數(shù)通常被稱為立即數(shù),它只能用作源操作數(shù),不能作為目標(biāo)操作數(shù)。它的允許取值范圍由指令中的目標(biāo)操作數(shù)的形式自動(dòng)確定為8位或16位。,2 表達(dá)式和運(yùn)算符,指由運(yùn)算符連接的各種常數(shù)構(gòu)成的表達(dá)式 匯編過(guò)程中計(jì)算表達(dá)式得數(shù)值 程序運(yùn)行之前,已算出結(jié)果 增強(qiáng)程序可讀性,2、表達(dá)式和運(yùn)算符,(1)算術(shù)運(yùn)算符 + - * / MOD (2)邏輯運(yùn)算符 AND OR XOR NOT (3)移位運(yùn)算符 SHL SHR (4)關(guān)系運(yùn)算符 EQ NE GT LT GE LE (5)分析運(yùn)算符 HIGH LOW,(1)算術(shù)運(yùn)算符,實(shí)現(xiàn)加、減、乘、除、取余的算術(shù)運(yùn)算 MOV AX,3*4+5 ;等價(jià)于 MOV AX,17 其中MOD也稱為取模,它產(chǎn)生除法之后的余數(shù),如19 MOD 7 = 5 加+和減-運(yùn)算符還可以用于地址表達(dá)式 除加、減外,其他運(yùn)算符的參數(shù)必須是整數(shù),(2) 邏輯運(yùn)算符,實(shí)現(xiàn)按位相與、相或、異或、求反的邏輯運(yùn)算 OR AL,03H AND 45H ;等價(jià)于 OR AL,01H,(3) 移位運(yùn)算符,實(shí)現(xiàn)對(duì)數(shù)值的左移、右移的邏輯操作;移入低位或高位的是0 格式為: 數(shù)值表達(dá)式 SHL/SHR 移位次數(shù) MOV AL,0101B SHL (2*2) ;等價(jià)于 MOV AL,01010000B,(4) 關(guān)系運(yùn)算符,用于比較和測(cè)試符號(hào)數(shù)值 MASM用0FFFFH(補(bǔ)碼 -1)表示條件為真 MASM用0000H表示條件為假 MOV BX, PORT GE 5 ; PORT5時(shí),匯編結(jié)果為MOV BX,0FFFFH ;否則,匯編結(jié)果為MOV BX,0,(5) 分析運(yùn)算符,對(duì)存儲(chǔ)器地址進(jìn)行運(yùn)算的 5個(gè):SEG(求段基值)、OFFSET(求偏移量)、TYPE(求變量類型)、LENGTH(求變量長(zhǎng)度)和SIZE(求字節(jié)數(shù)) 例如: MOV BX,SEG ARR MOV ES,SEG DATA1,ORG $+10 ARRAY DB 45,45H MOV BX,OFFSET ARRAY ;等價(jià)于 LEA BX,ARRAY MOV CL,ARRAY+4 ;等效于 MOV CL,ARRAY4 MOV AX,ES:2000H,分析運(yùn)算符實(shí)例,屬性修改運(yùn)算符,用來(lái)建立和臨時(shí)改變變量或標(biāo)號(hào)的類型 6個(gè):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ùn)算符,運(yùn)算符的優(yōu)先級(jí),() LENGTH SIZE PTR OFFSET SEG TPYE THIS : HIGH LOW * / MOD SHL SHR + - EQ NE GT LT GE LE NOT AND OR XOR SHORT,建議采用圓括號(hào)“( )”顯式表達(dá),它可以極大地提高程序的可閱讀性,5.3 偽指令語(yǔ)句,給匯編程序(軟件)的命令, 在匯編過(guò)程中處理 5.3.1 數(shù)據(jù)定義偽指令 用來(lái)定義變量的類型 分配存儲(chǔ)單元,可賦值或不賦值 一般格式: 變量名 偽指令 操作數(shù) ,操作數(shù) ;注釋,2. 常用的數(shù)據(jù)定義偽指令 定義字節(jié)變量偽指令DB 定義字變量偽指令DW 定義雙字變量偽指令DD 定義四字變量偽指令DQ 定義十字節(jié)變量偽指令DT,變量定義偽指令最常使用,字節(jié)單元定義實(shí)例,DATA SEGMENT ;數(shù)據(jù)段 X DB A,-5 DB 2 DUP(100),? Y DB ABC DATA ENDS,應(yīng)用,指定復(fù)制次數(shù),用復(fù)制運(yùn)算符DUP復(fù)制操作數(shù),字單元定義實(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 符號(hào)定義偽指令 給符號(hào)重新命名或定義新的類型屬性 常用的有EQU、LABLE 5.4.3 段定義偽指令 定義邏輯段時(shí)指定段的名稱和范圍,并指明段的定位類型、組合類型及類別 常用SEGMENT、ENDS和ASSUME等,符號(hào)定義 DCHAR EQU 2 ENTER = 13 CALLDOS EQU 符號(hào)應(yīng)用(左邊程序段等價(jià)右側(cè)的符號(hào)形式) MOV AH,DCHAR ; MOV AH,2 MOV DL, ENTER ; MOV DL,13 CALLDOS ; INT 21H,符號(hào)常數(shù)實(shí)例,4.3.4 過(guò)程定義偽指令 將一些重復(fù)出現(xiàn)的語(yǔ)句組定義為子程序,又稱為過(guò)程,可以采用CALL指令來(lái)調(diào)用。 定義格式: 過(guò)程名 PROC NEAR/FAR (語(yǔ)句系列) RET (語(yǔ)句系列) 過(guò)程名 ENDP 2. 調(diào)用過(guò)程的格式:CALL 過(guò)程名,4.3.5 結(jié)構(gòu)定義偽指令 結(jié)構(gòu)是相互關(guān)聯(lián)的一組數(shù)據(jù)的組合形式。 用偽指令STRUC和ENDS把相關(guān)數(shù)據(jù)定義語(yǔ)句組合起來(lái),便構(gòu)成一個(gè)完整的結(jié)構(gòu)。 使用格式: 結(jié)構(gòu)名 STRUC (數(shù)據(jù)定義語(yǔ)句序列) 結(jié)構(gòu)名 ENDS,4.3.6 模塊定義與連接偽指令 編寫規(guī)模較大的匯編語(yǔ)言源程序時(shí),可將整個(gè)程序劃分為幾個(gè)獨(dú)立的源程序,稱之為模塊。 將各模塊分別進(jìn)行匯編,生成各自的目標(biāo)程序,最后連接成為一個(gè)完整的可執(zhí)行程序。 各模塊之間可以相互進(jìn)行符號(hào)訪問(wèn)。 為了進(jìn)行模塊間連接和相互訪問(wèn),通常使用偽指令NAME、END、PUBLIC、EXTRN,4.3.7 程序計(jì)數(shù)器$和ORG偽指令,1程序計(jì)數(shù)器$ 用在表達(dá)式里,為下一個(gè)能分配的存儲(chǔ)單元的偏移地址 2ORG偽指令 起始位置設(shè)定偽指令 用來(lái)指出源程序或數(shù)據(jù)塊的起點(diǎn) 可改變位置計(jì)數(shù)器的值,4.4 匯編語(yǔ)言程序的段結(jié)構(gòu),匯編語(yǔ)言源程序的分段結(jié)構(gòu) 若干個(gè)任意排序的邏輯段 每個(gè)邏輯段以SEGMENT語(yǔ)句開始,以ENDS語(yǔ)句結(jié)束 整個(gè)源程序以END語(yǔ)句結(jié)束,4.5 匯編語(yǔ)言程序上機(jī)過(guò)程,4.5.1 匯編語(yǔ)言的工作環(huán)境及上機(jī)步驟 1硬件環(huán)境 一般IBM PC/XT及其兼容機(jī)基本配置 2軟件環(huán)境 1)DOS操作系統(tǒng) 2)編輯程序 3)宏匯編程序MASM.EXE 4)連接程序LINK.EXE 5)調(diào)試程序DEBUG.COM,3運(yùn)行匯編語(yǔ)言程序的步驟,1)編輯匯編語(yǔ)言源程序,擴(kuò)展名為.ASM; 2)用MASM.EXE匯編成.OBJ目標(biāo)文件; 3)有語(yǔ)法錯(cuò),用編輯軟件重新調(diào)入修改。無(wú)錯(cuò)用LINK.EXE把.OBJ文件轉(zhuǎn)化成.EXE可執(zhí)行文件; 4)在DOS命令狀態(tài)下直接鍵入可執(zhí)行文件文件名執(zhí)行該文件。,編輯,文本編輯器,如 EDIT.COM,源程序:文件名.asm,匯編,匯編程序,如 ML.EXE,目標(biāo)模塊:文件名.obj,連接,連接程序,如 LINK.EXE,可執(zhí)行文件:文件名.exe,調(diào)試,調(diào)試程序,如 DEBUG.EXE,錯(cuò)誤,匯編語(yǔ)言程序的開發(fā)過(guò)程,本節(jié)教學(xué)要求,熟悉偽指令DB、DW、DD、SEGMENT/ENDS、ASSUME、END、$、ORG 、EQU和= 、PROC/ENDP 了解偽指令DQ / DT、S
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- T-ZJBS 001-2024 城市公共標(biāo)識(shí)系統(tǒng)設(shè)計(jì)規(guī)范
- T-ZSA 230-2024 虛擬數(shù)字人多模態(tài)交互信息規(guī)范
- 二零二五年度荒山土地流轉(zhuǎn)與林業(yè)碳匯項(xiàng)目合作合同
- 二零二五年度企業(yè)合規(guī)管理體系法律服務(wù)合同范本
- 二零二五年度離婚協(xié)議書模板及婚姻關(guān)系終止及財(cái)產(chǎn)分配
- 二零二五年度診所醫(yī)療事故處理及責(zé)任劃分合同
- 二零二五年度養(yǎng)老護(hù)理型住宅正規(guī)房屋出租合同
- 二零二五年度混凝土班組勞務(wù)合作施工安全責(zé)任合同
- 二零二五年度銷售信息保密管理承諾書
- 2025年度耕地租賃與農(nóng)業(yè)科技推廣合同
- 部編版小學(xué)(2024版)小學(xué)道德與法治一年級(jí)下冊(cè)《有個(gè)新目標(biāo)》-第一課時(shí)教學(xué)課件
- 稅法(第5版) 課件 第13章 印花稅
- 建加油站申請(qǐng)書
- 2024-2025學(xué)年廣州市高二語(yǔ)文上學(xué)期期末考試卷附答案解析
- 少年商學(xué)院《DeepSeek中小學(xué)生使用手冊(cè)》
- 2025年山東鋁業(yè)職業(yè)學(xué)院高職單招職業(yè)技能測(cè)試近5年??及鎱⒖碱}庫(kù)含答案解析
- 2024年教育公共基礎(chǔ)知識(shí)筆記
- 《銷售合同執(zhí)行》課件
- 深夜地鐵7號(hào)線施工方案
- 山東2024年山東經(jīng)貿(mào)職業(yè)學(xué)院第二批招聘102人歷年參考題庫(kù)(頻考版)含答案解析
- 宮腔球囊止血護(hù)理常規(guī)
評(píng)論
0/150
提交評(píng)論