教參匯編語(yǔ)言程序設(shè)計(jì).ppt_第1頁(yè)
教參匯編語(yǔ)言程序設(shè)計(jì).ppt_第2頁(yè)
教參匯編語(yǔ)言程序設(shè)計(jì).ppt_第3頁(yè)
教參匯編語(yǔ)言程序設(shè)計(jì).ppt_第4頁(yè)
教參匯編語(yǔ)言程序設(shè)計(jì).ppt_第5頁(yè)
已閱讀5頁(yè),還剩67頁(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)介

1 第4章匯編語(yǔ)言程序設(shè)計(jì) 2 主要內(nèi)容 匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言語(yǔ)句格式偽指令功能調(diào)用匯編語(yǔ)言程序設(shè)計(jì) 3 4 1匯編語(yǔ)言源程序 了解 匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言語(yǔ)句類(lèi)型及格式 4 一 匯編語(yǔ)言源程序結(jié)構(gòu) 5 1 匯編語(yǔ)言源程序與匯編程序 匯編語(yǔ)言源程序匯編程序 用助記符編寫(xiě) 匯編程序 匯編語(yǔ)言源程序 機(jī)器語(yǔ)言目標(biāo)程序 源程序的編譯程序 6 2 匯編語(yǔ)言程序設(shè)計(jì)與執(zhí)行過(guò)程 輸入?yún)R編語(yǔ)言源程序 EDIT 匯編 MASM 鏈接 LINK 調(diào)試 TD 源文件 ASM 目標(biāo)文件 OBJ 可執(zhí)行文件 EXE 最終程序 7 3 匯編語(yǔ)言源程序結(jié)構(gòu) 數(shù)據(jù)段名SEGMENT 數(shù)據(jù)段名ENDS附加段名SEGMENT 附加段名ENDS 堆棧段名SEGMENT 堆棧段名ENDS代碼段名SEGMENT 代碼段名ENDSEND 8 二 匯編語(yǔ)言語(yǔ)句類(lèi)型及格式 9 1 匯編語(yǔ)言語(yǔ)句類(lèi)型 指令性語(yǔ)句指示性語(yǔ)句 CPU執(zhí)行的語(yǔ)句 能夠生成目標(biāo)代碼 CPU不執(zhí)行 而由匯編程序執(zhí)行的語(yǔ)句 不生成目標(biāo)代碼 10 2 匯編語(yǔ)言語(yǔ)句格式 指令性語(yǔ)句 標(biāo)號(hào) 前綴 助記符 操作數(shù) 操作數(shù) 注釋 指令的符號(hào)地址標(biāo)號(hào)后要有冒號(hào) 操作碼 注釋前加分號(hào) 11 指示性語(yǔ)句格式 名字 偽指令助記符操作數(shù) 操作數(shù) 注釋 變量的符號(hào)地址其后不加冒號(hào) 指示性語(yǔ)句中至少有一個(gè)操作數(shù) 12 3 標(biāo)號(hào) 名字 標(biāo)號(hào)后有冒號(hào) 在指令性語(yǔ)句前 名字后不加冒號(hào) 在指示性語(yǔ)句前 英文字母 數(shù)字及專(zhuān)用字符組成 最大長(zhǎng)度不能超過(guò)31個(gè) 且不能由數(shù)字打頭 不能用保留字 如寄存器名 指令助記符 偽指令 13 4 操作碼 指令碼偽指令助記符指示匯編程序要完成的操作 作用 定義變量分配存儲(chǔ)單元指示程序開(kāi)始和結(jié)束等 命令CPU要完成的操作 14 5 注釋 用分號(hào)作為注釋的開(kāi)始 用于說(shuō)明程序或語(yǔ)句的功能 以便于閱讀和理解 15 6 操作數(shù) 寄存器存儲(chǔ)器單元常量變量或標(biāo)號(hào)表達(dá)式 16 常量 數(shù)字常量字符串常量例 A MOVAL A 例 ABCD 匯編時(shí)被譯成對(duì)應(yīng)的ASCII碼41H 42H 43H 44H 用單引號(hào)引起的字符或字符串 17 變量 代表內(nèi)存中的數(shù)據(jù)區(qū) 程序中視為存儲(chǔ)器操作數(shù)變量的屬性 變量所在段的段地址變量單元地址與段首地址之間的位移量 字節(jié)型 字型和雙字型 段值 偏移量 類(lèi)型 18 表達(dá)式 算術(shù)運(yùn)算邏輯運(yùn)算關(guān)系運(yùn)算取值運(yùn)算和屬性運(yùn)算其它運(yùn)算 19 算術(shù)運(yùn)算和邏輯運(yùn)算符 算術(shù)運(yùn)算符 MOD邏輯運(yùn)算符AND OR NOT XOR例 MOVAL 8AND4MOVAL 8 4 1 20 關(guān)系運(yùn)算符 表示關(guān)系是否成立的運(yùn)算符參與關(guān)系運(yùn)算的必須是兩個(gè)數(shù)值關(guān)系成立 結(jié)果 FFFFH關(guān)系不成立 結(jié)果 0 運(yùn)算符 EQ NE LT GT LE GE 例 MOVAL 3LT4 21 取值運(yùn)算符 取得其后變量或標(biāo)號(hào)的偏移地址取得其后變量或標(biāo)號(hào)的段地址 TYPE取變量的類(lèi)型LENGTH取所定義存儲(chǔ)區(qū)的長(zhǎng)度SIZE取所定義存儲(chǔ)區(qū)的字節(jié)數(shù) 用于分析存儲(chǔ)器操作數(shù)的屬性 OFFSET SEG 22 取值運(yùn)算符例 MOVAX SEGDATAMOVDS AXMOVBX OFFSETDATALEABX DATA 等價(jià)于 23 取值運(yùn)算符例 若BUFFER存儲(chǔ)區(qū)用如下偽指令定義 BUFFERDW200DUP 0 則 TYPEBUFFER等于2LENGTHBUFFER等于200SIZEBUFFER等于400 24 屬性運(yùn)算符 用于指定其后存儲(chǔ)器操作數(shù)的類(lèi)型運(yùn)算符 PTR例 MOVBYTRPTR BX 12H 25 其它運(yùn)算符 方括號(hào) 段重設(shè)符段寄存器名 方括號(hào)中內(nèi)容為操作數(shù)的偏移地址 用于修改默認(rèn)的段基地址 26 4 2偽指令 掌握 偽指令的格式及實(shí)現(xiàn)的操作偽指令的應(yīng)用 27 偽指令 由匯編程序執(zhí)行的 指令系統(tǒng) 作用 定義變量 分配存儲(chǔ)區(qū)定義邏輯段 指示程序開(kāi)始和結(jié)束 定義過(guò)程等 28 常用偽指令 數(shù)據(jù)定義偽指令符號(hào)定義偽指令段定義偽指令結(jié)束偽指令過(guò)程定義偽指令宏命令偽指令 29 一 數(shù)據(jù)定義偽指令 用于定義數(shù)據(jù)區(qū)中變量的類(lèi)型及大小格式 變量名 偽指令助記符操作數(shù) 注釋 表示符號(hào)地址 定義變量類(lèi)型 定義變量值及區(qū)域大小 30 1 數(shù)據(jù)定義偽指令助記符 DB定義的變量為字節(jié)型DW定義的變量為字類(lèi)型 雙字節(jié) DD定義的變量為雙字型 4字節(jié) DQ定義的變量為4字型 8字節(jié) DT定義的變量為10字節(jié)型 31 數(shù)據(jù)定義偽指令例 DATA1DB11H 22H 33H 44HDATA2DW11H 22H 3344HDATA3DD11H 2 22H 33445566H 以上變量在內(nèi)存中的存放形式 32 數(shù)據(jù)定義偽指令的幾點(diǎn)說(shuō)明 偽指令的性質(zhì)決定所定義變量的屬性 定義字符串必須用DB偽指令例 DATA1DB ABCD 66H A B C D 41H 42H 43H 44H 66H 33 2 重復(fù)操作符 作用 為一個(gè)數(shù)據(jù)區(qū)的各單元設(shè)置相同的初值目的 常用于聲明一個(gè)數(shù)據(jù)區(qū)格式 變量名 偽指令助記符nDUP 初值 例 BW20DUP 0 34 3 的作用 表示隨機(jī)值 用于預(yù)留存儲(chǔ)空間MEM1DB34H A DW20DUP 預(yù)留40個(gè)字節(jié)單元 每單元為隨機(jī)值 隨機(jī)數(shù)占1個(gè)字節(jié)單元 35 數(shù)據(jù)定義偽指令例 M1DB Howareyou M2DW3DUP 11H 3344HDB4DUP M3DB3DUP 22H 11H 變量在內(nèi)存中的分區(qū) 36 數(shù)據(jù)定義偽指令例 M1 H o w a M2 11H 11H 00H 44H 33H r e y o u 11H 00H 00H 隨機(jī)數(shù) M3 11H 22H 11H 22H 11H 22H XX XX XX XX XX XX XX 37 二 符號(hào)定義偽指令 格式 符號(hào)名EQU表達(dá)式操作 用符號(hào)名取代后邊的表達(dá)式 不可重新定義例 CONSTANTEQU100VAREQU30H 99H EQU說(shuō)明的表達(dá)式不占用內(nèi)存空間 38 三 段定義偽指令 說(shuō)明邏輯段的起始和結(jié)束 說(shuō)明不同程序模塊中同類(lèi)邏輯段之間的聯(lián)系形態(tài) 39 段定義偽指令格式 段名SEGMENT 定位類(lèi)型 組合類(lèi)型 類(lèi)別 段名ENDS 說(shuō)明邏輯段的起點(diǎn) 說(shuō)明不同模塊中同名段的組和連接方式 40 定位類(lèi)型 PARA 段的起點(diǎn)從節(jié)邊界開(kāi)始 16個(gè)字節(jié)為1節(jié) BYTE 段的起點(diǎn)從存儲(chǔ)器任何地址開(kāi)始WORD 段的起點(diǎn)從偶地址開(kāi)始PAGE 段的起點(diǎn)從頁(yè)邊界開(kāi)始 256個(gè)字節(jié)為1頁(yè) 41 組合類(lèi)型 與其它模塊中的同名段在滿足定位類(lèi)型的前提下具有的組合方式 NONE 不組合PUBLIC 依次連接 順序由LINK程序確定 COMMON 覆蓋連接STACK 堆棧段的依次連接AT表達(dá)式 段定義在表達(dá)式值為段基的節(jié)邊界MEMORY 相應(yīng)段在同名段的最高地址處 42 類(lèi)別 不同模塊連接時(shí)將相同類(lèi)別的段放在連續(xù)的內(nèi)存區(qū)域中 43 段定義偽指令例 DATASEGMENTPUBLIC CODE MEM1DB11H 22HDATAENDS 44 四 設(shè)定段寄存器偽指令 說(shuō)明所定義邏輯段的性質(zhì)格式 ASSUME段寄存器名 段名 段寄存器名 段名 45 五 結(jié)束偽指令 表示源程序結(jié)束格式 END 標(biāo)號(hào) 46 一個(gè)完整源程序結(jié)構(gòu)例 DSEGSEGMENTDATA1DB1 2 DATA2DW1234HDSEGENDSESEGSEGMENTDB20DUP ESEGENDSSSEGSEGMENTSTACK STACK DB200DUP SSEGENDS 47 一個(gè)完整源程序結(jié)構(gòu)例 CSEGSEGMENTASSUMECS CSEG DS DSEG ES ESEG SS SSEGSTART MOVAX DSEGMOVDS AXMOVAX ESEGMOVES AXMOVAX SSEGMOVSS AX CSEGENDSENDSTART 源程序代碼 48 六 過(guò)程定義偽指令 用于定義一個(gè)過(guò)程體格式 過(guò)程名PROC NEAR FAR RET過(guò)程名ENDP P162例 過(guò)程入口的符號(hào)地址 49 七 宏命令偽指令 源程序中由匯編程序識(shí)別的具有獨(dú)立功能的一段程序代碼格式 宏命令名MACRO ENDM 宏體 P163例 宏 50 八 其它偽指令 段內(nèi)程序代碼或變量的起始偏移地址格式 ORG表達(dá)式例 ORG2000H 計(jì)算值為非負(fù)常數(shù) ORG 51 其它偽指令 NAME 為目標(biāo)程序設(shè)定一個(gè)名字格式 NAME模塊名TITLE 為程序清單指定打印標(biāo)題格式 TITLE標(biāo)題名 可以缺省 52 4 3功能調(diào)用 DOS功能調(diào)用BIOS功能調(diào)用 53 DOS功能調(diào)用 包含多個(gè)子功能的功能包 用軟中斷指令調(diào)用 中斷類(lèi)型碼固定為21H 各子功能采用功能號(hào)來(lái)區(qū)分 附錄D 54 DOS功能調(diào)用 設(shè)備管理目錄管理文件管理其它 55 DOS功能調(diào)用 調(diào)用格式 MOVAH 功能號(hào)INT21H 56 一 單字符輸入 調(diào)用方法 MOVAH 01INT21H輸入的字符在AL中 57 單字符輸入例 GET KEY MOVAH 1INT21HCMPAL Y JZYESCMPAL N JZNOJNZGET KEYYES NO 交互式應(yīng)答程序 58 二 字符串輸入 注意問(wèn)題 調(diào)用格式字符輸入緩沖區(qū)的定義 59 1 調(diào)用格式 功能號(hào)OAH字符串在內(nèi)存中的存放地址INT21H AH DS DX 60 2 定義字符緩沖區(qū) 用戶自定義緩沖區(qū)格式 0DH N1 N2 整個(gè)緩沖區(qū) 最大可鍵入字符數(shù) 實(shí)際鍵入字符數(shù) 存放鍵入的字符 存放字符個(gè)數(shù) 65533 61 輸入字符串程序段 DAT1DB20 20DUP LEADX DAT1MOVAH 0AHINT21H 在數(shù)據(jù)段中定義 62 輸入緩沖區(qū) 14H 20個(gè)字節(jié) 定義后的輸入緩沖區(qū)初始狀態(tài) 63 三 單字符顯示輸出 功能號(hào)O2H待輸出字符INT21H AH DL 64 單字符顯示輸出例 MOVAH 02MOVDL 41HINT21H 執(zhí)行結(jié)果 屏幕顯示A 65 四 字符串輸出顯示 功能號(hào)O9H待輸出字符串的偏移地址INT21H AH DS DX 66 字符串輸出顯示 被顯示的字符串必須以 結(jié)束 且所顯示的內(nèi)容不應(yīng)出現(xiàn)非可見(jiàn)的ASCII碼 67 字符串輸出顯示例 DATASEGMENTMESS1DB InputString 0DH 0AH DATAENDSCODESEGMENT MOVAH 09MOVDX OFFSETMESS1INT21H 68 4 4匯編語(yǔ)言程序設(shè)計(jì) 設(shè)計(jì)步驟 根據(jù)實(shí)際問(wèn)題抽象出數(shù)學(xué)模型確定算法畫(huà)程序流程圖

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論