版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第四章宏匯編語言程序設(shè)計第1頁,課件共54頁,創(chuàng)作于2023年2月本章內(nèi)容匯編語言程序格式MASM中的表達(dá)式偽指令語句DOS系統(tǒng)功能調(diào)用BIOS中斷調(diào)用第2頁,課件共54頁,創(chuàng)作于2023年2月概述匯編語言利用指令的助記符、符號地址、標(biāo)號來編寫的語句匯編語言源原程序用匯編語言編寫的程序匯編程序連接程序匯編語言源程序目標(biāo)程序可執(zhí)行程序第3頁,課件共54頁,創(chuàng)作于2023年2月一個例子程序Page124,例4-1程序由段的描述組成指令語句/偽指令語句構(gòu)成第4頁,課件共54頁,創(chuàng)作于2023年2月§4-1匯編語言程序格式指令性語句偽指令語句數(shù)據(jù)項(xiàng)第5頁,課件共54頁,創(chuàng)作于2023年2月匯編語言程序格式——指令語句對象CPU與機(jī)器碼相對應(yīng),要求CPU執(zhí)行的操作格式
[標(biāo)號:]指令助記符
[[操作數(shù)],操作數(shù)][;注釋]第6頁,課件共54頁,創(chuàng)作于2023年2月匯編語言程序格式——偽指令語句對象匯編程序通知編譯器,如何生成目標(biāo)碼。本身不產(chǎn)生機(jī)器目標(biāo)嗎格式
[名字]偽指令助記符
[[操作數(shù)],操作數(shù)...][;注釋]第7頁,課件共54頁,創(chuàng)作于2023年2月匯編語言程序格式——數(shù)據(jù)項(xiàng)常數(shù)確定的數(shù)據(jù),有固定值,沒有屬性變量存放在存儲單元中的值在程序中以變量名的形式出現(xiàn),代表存放數(shù)據(jù)的存儲單元的符號地址三屬性段屬性/段內(nèi)偏移量屬性/類型屬性第8頁,課件共54頁,創(chuàng)作于2023年2月匯編語言程序格式——數(shù)據(jù)項(xiàng)標(biāo)號可執(zhí)行指令語句的首字節(jié)地址的符號表示被JMP/CALL/LOOP等所使用三屬性段屬性/段內(nèi)偏移量屬性/類型(距離)屬性第9頁,課件共54頁,創(chuàng)作于2023年2月§4-2MASM中的表達(dá)式指令操作數(shù)形式常數(shù)、變量、標(biāo)號、表達(dá)式、關(guān)鍵字表達(dá)式的構(gòu)成運(yùn)算符運(yùn)算對象:常數(shù)、變量、標(biāo)號結(jié)果為常數(shù)、地址在匯編時求值六大類運(yùn)算第10頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——算術(shù)運(yùn)算加、減、乘、除、模、左移、右移運(yùn)算對象、結(jié)果整數(shù)禁忌地址相加無法求值第11頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——算術(shù)運(yùn)算例:abc equ 35hvar1 db 10hvar2 db 0ahmov ax,abcshr4mov ax,abcshl4mov cx,var2-var1mov bx,abc-5第12頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——邏輯運(yùn)算與、或、非、異或——按位運(yùn)算運(yùn)算對象、結(jié)果常數(shù)禁忌變量名第13頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——邏輯運(yùn)算例:abc = 10habc1 equ 2ahv1 db 3ahmov ax,abcand0fhmov ax,abcorabc1mov ax,v1andabc第14頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——關(guān)系運(yùn)算EQ、NE、LT、GT、LE、GE對象數(shù)據(jù)同段內(nèi)的偏移地址結(jié)果真:全1假:全0第15頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——關(guān)系運(yùn)算例:abc equ 10hmov ax,abceq10mov ax,abclt10mov ax,abcgt10第16頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——數(shù)值返回運(yùn)算Offset、seg、type、length、size對象變量、標(biāo)號結(jié)果值第17頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——數(shù)值返回運(yùn)算Offset變量、標(biāo)號的段內(nèi)偏移地址與LEA的差異???Seg變量、標(biāo)號的段地址第18頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——數(shù)值返回運(yùn)算Type變量、標(biāo)號的類型屬性Length外層DUP的單元個數(shù)無DUP則返回1第19頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——數(shù)值返回運(yùn)算Sizesize=length*type第20頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——屬性修改運(yùn)算Ptr臨時改變變量、標(biāo)號的類型屬性mov wordptr[bx],0jmp farptrsub1This給變量、標(biāo)號賦予類型first equthisbytetable dw2000h第21頁,課件共54頁,創(chuàng)作于2023年2月表達(dá)式——屬性修改運(yùn)算High/Low字節(jié)分離常數(shù)、常數(shù)表達(dá)式mov al,low(offsetda1)第22頁,課件共54頁,創(chuàng)作于2023年2月§4-3偽指令語句不生成機(jī)器碼,幫助解釋、生成指令的機(jī)器碼變量定義、存儲器分配、段定義……第23頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——數(shù)據(jù)定義定義/分配變量的存儲器單元,并初始化存儲器單元格式變量名助記符操作數(shù),操作數(shù)…;注釋符號地址DBDWDD第24頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——數(shù)據(jù)定義DUP的使用定義重復(fù)數(shù)據(jù)例abc db 10dup(0)ab db 100dup(1,2,34dup(0))第25頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——數(shù)據(jù)定義字符串的定義DB/DW/DD?DB按正常的順序排列DW/DD只能以兩個一組作定義,順序不同第26頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——數(shù)據(jù)定義符號地址的使用DW?DD?DB??第27頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——賦值不分配存儲器空間常數(shù)EQU不可重復(fù)賦值=可重復(fù)賦值第28頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段定義段名segment定位類型組合類型‘分類名’
……段名 ends第29頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段定義段名segment定位類型組合類型‘分類名’
……段名 ends定義該段起始地址定位ParaByteWordPage第30頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段定義段名segment定位類型組合類型‘分類名’
……段名 ends定義組合類型NONEPUBLICCOMMONATSTACK第31頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段定義段名segment定位類型組合類型‘分類名’
……段名 ends定義該段的分類名,分類名相同,被組合成同一個段第32頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——數(shù)據(jù)定義dsegsegmentat0055h one db 0 two dw two three dd two four equ 10h five dw four six db 5-fourdseg ends第33頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段分配語句ASSUME說明當(dāng)前段是哪些段,幫助匯編程序產(chǎn)生段前綴必須放在第一句指令之前不得短缺Assumecs:cseg,ds:dseg,ss:sseg,es:esegAssumenothing第34頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——過程定義子程序格式 過程名 PROC 屬性
…… Ret
過程名 ENDP第35頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——END結(jié)束語句標(biāo)識程序的首指令格式END 標(biāo)號第36頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段寄存器的初始化DS/ES指令裝入movax,dsegmovds,axmovax,esegmoves,ax第37頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段寄存器的初始化SS/SP自動裝入ssegsegmentSTACK dw 100dup(0)ssegends第38頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段寄存器的初始化SS/SP(指令裝入)定義sseg segment dw 100dup(0)top label wordsseg ends裝入Movax,ssegMovss,axMovsp,offsettoptopequthisword第39頁,課件共54頁,創(chuàng)作于2023年2月偽指令語句——段寄存器的初始化CS自動裝入end后的標(biāo)號便是第一條指令(語句)CS:IP第40頁,課件共54頁,創(chuàng)作于2023年2月匯編語言源程序的框架段的描述title注釋數(shù)據(jù)段(附加段)堆棧段代碼段(Assume)end標(biāo)號第41頁,課件共54頁,創(chuàng)作于2023年2月匯編語言源程序的框架Title<程序名><常量定義>dseg segment <變量定義>dseg endseseg segment <變量定義>eseg endssseg segmentstack 100Hdup(0)sseg ends
cseg segment assumecs:cseg,ds:dseg,es:eseg,ss:ssegmain procfarstart: push ds xor ax,ax push ax mov ax,dseg mov ds,ax mov ax,eseg mov es,eseg …… retmain endpcseg endsend start第42頁,課件共54頁,創(chuàng)作于2023年2月其他偽指令ORG<表達(dá)式>定位偽指令設(shè)置匯編程序位置指針,指定下一語句的起始偏移地址$匯編時用于指示下一數(shù)據(jù)/指令的段內(nèi)偏移量,當(dāng)前位置計數(shù)器常常用來計算前一變量的長度,字節(jié)數(shù)第43頁,課件共54頁,創(chuàng)作于2023年2月其他偽指令dseg segment
org1000hv1 db 10h,20h,30H,40Hcount equ $-v1dseg ends第44頁,課件共54頁,創(chuàng)作于2023年2月其他偽指令<名稱>Label<類型>給存儲單元(變量或標(biāo)號)取一名字,并指定其類型<名稱>同樣具有三個屬性DataByte Label ByteDataWord DW 20HDup(0)第45頁,課件共54頁,創(chuàng)作于2023年2月結(jié)構(gòu)定義語句復(fù)雜數(shù)據(jù)的定義,將不同類型的數(shù)據(jù)放在同一個數(shù)據(jù)結(jié)構(gòu)中結(jié)構(gòu)定義
結(jié)構(gòu)名 STRUC ……
結(jié)構(gòu)名 ENDS結(jié)構(gòu)變量預(yù)置結(jié)構(gòu)變量名 結(jié)構(gòu)名<元素值,元素值,……>定義結(jié)構(gòu)成員,但不分配內(nèi)存預(yù)置時,才被分配存儲單元第46頁,課件共54頁,創(chuàng)作于2023年2月結(jié)構(gòu)定義預(yù)置tab struc t1 db ‘a(chǎn)bcd’ t2 dw ? t3 dw segL1 t4 dw 2dup(0) t5 dw 1122H dw 3344Htab endsone tab <>two tab <‘STOP’>three tab <,0FH,SEGL2>four tab 5dup<‘EFGH’,55H>
第47頁,課件共54頁,創(chuàng)作于2023年2月結(jié)構(gòu)中的變量簡單變量由DB、DW、DD定義的單個結(jié)構(gòu)元素內(nèi)容可被修改如: T1 DW 1234H多重變量包含多個元素值不可改,只能使用初值如: T4 DW 2DUP(0)
T5 DW 1122H,3344H第48頁,課件共54頁,創(chuàng)作于2023年2月結(jié)構(gòu)中的變量字符串內(nèi)容可改,長度不得超過如: T6 DB ‘ASBD’多重結(jié)構(gòu)引用另一結(jié)構(gòu)第49頁,課件共54頁,創(chuàng)作于2023年2月結(jié)構(gòu)的使用MOV TWO.T2, AXMOV BX, FOUR.T5[0]MOV SI, OFFSETFOURMOV BX, [SI].T5[0]第50頁,課件共54頁,創(chuàng)作于2023年2月結(jié)構(gòu)的使用例:Page149/例4-41利用結(jié)構(gòu)存儲學(xué)生的信息結(jié)構(gòu)變量的預(yù)置……第5
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2026 執(zhí)業(yè)藥師備考攻略
- 持續(xù)性姿勢知覺性頭暈(PPPD)
- DB32-T 5350-2026 化工行業(yè)被動防火措施安全檢查規(guī)范
- 2026年會計實(shí)務(wù)財務(wù)報表稅法題集
- 2026年電工技能等級考試電路設(shè)計與維護(hù)標(biāo)準(zhǔn)試題
- 2026年經(jīng)濟(jì)學(xué)理論與經(jīng)濟(jì)形勢分析試題
- 2026年古代漢語學(xué)習(xí)與實(shí)踐題庫提升語文基礎(chǔ)素養(yǎng)
- 2026年英語聽力進(jìn)階中高級英語水平聽力練習(xí)題
- 2026年游戲公司游戲設(shè)計筆試題目
- 2026年市場營銷策略專業(yè)知識測試題
- 電競酒店前臺收銀員培訓(xùn)
- 樁基旋挖鉆施工方案
- 《礦山壓力與巖層控制》教案
- 焊工焊接協(xié)議書(2篇)
- 蘇教版六年級數(shù)學(xué)上冊全套試卷
- 2019-2020學(xué)年貴州省貴陽市八年級下學(xué)期期末考試物理試卷及答案解析
- 培訓(xùn)機(jī)構(gòu)轉(zhuǎn)課協(xié)議
- 創(chuàng)客教室建設(shè)方案
- (完整版)南京市房屋租賃合同
- 辦公場地選址方案
- 內(nèi)蒙古衛(wèi)生健康委員會綜合保障中心公開招聘8人模擬預(yù)測(共1000題)筆試備考題庫及答案解析
評論
0/150
提交評論