第四章宏匯編語言程序設(shè)計_第1頁
第四章宏匯編語言程序設(shè)計_第2頁
第四章宏匯編語言程序設(shè)計_第3頁
第四章宏匯編語言程序設(shè)計_第4頁
第四章宏匯編語言程序設(shè)計_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章宏匯編語言程序設(shè)計第一頁,共五十四頁,2022年,8月28日本章內(nèi)容匯編語言程序格式MASM中的表達式偽指令語句DOS系統(tǒng)功能調(diào)用BIOS中斷調(diào)用第二頁,共五十四頁,2022年,8月28日概述匯編語言利用指令的助記符、符號地址、標(biāo)號來編寫的語句匯編語言源原程序用匯編語言編寫的程序匯編程序連接程序匯編語言源程序目標(biāo)程序可執(zhí)行程序第三頁,共五十四頁,2022年,8月28日一個例子程序Page124,例4-1程序由段的描述組成指令語句/偽指令語句構(gòu)成第四頁,共五十四頁,2022年,8月28日§4-1匯編語言程序格式指令性語句偽指令語句數(shù)據(jù)項第五頁,共五十四頁,2022年,8月28日匯編語言程序格式——指令語句對象CPU與機器碼相對應(yīng),要求CPU執(zhí)行的操作格式

[標(biāo)號:]指令助記符

[[操作數(shù)],操作數(shù)][;注釋]第六頁,共五十四頁,2022年,8月28日匯編語言程序格式——偽指令語句對象匯編程序通知編譯器,如何生成目標(biāo)碼。本身不產(chǎn)生機器目標(biāo)嗎格式

[名字]偽指令助記符

[[操作數(shù)],操作數(shù)...][;注釋]第七頁,共五十四頁,2022年,8月28日匯編語言程序格式——數(shù)據(jù)項常數(shù)確定的數(shù)據(jù),有固定值,沒有屬性變量存放在存儲單元中的值在程序中以變量名的形式出現(xiàn),代表存放數(shù)據(jù)的存儲單元的符號地址三屬性段屬性/段內(nèi)偏移量屬性/類型屬性第八頁,共五十四頁,2022年,8月28日匯編語言程序格式——數(shù)據(jù)項標(biāo)號可執(zhí)行指令語句的首字節(jié)地址的符號表示被JMP/CALL/LOOP等所使用三屬性段屬性/段內(nèi)偏移量屬性/類型(距離)屬性第九頁,共五十四頁,2022年,8月28日§4-2MASM中的表達式指令操作數(shù)形式常數(shù)、變量、標(biāo)號、表達式、關(guān)鍵字表達式的構(gòu)成運算符運算對象:常數(shù)、變量、標(biāo)號結(jié)果為常數(shù)、地址在匯編時求值六大類運算第十頁,共五十四頁,2022年,8月28日表達式——算術(shù)運算加、減、乘、除、模、左移、右移運算對象、結(jié)果整數(shù)禁忌地址相加無法求值第十一頁,共五十四頁,2022年,8月28日表達式——算術(shù)運算例:abc equ 35hvar1 db 10hvar2 db 0ahmov ax,abcshr4mov ax,abcshl4mov cx,var2-var1mov bx,abc-5第十二頁,共五十四頁,2022年,8月28日表達式——邏輯運算與、或、非、異或——按位運算運算對象、結(jié)果常數(shù)禁忌變量名第十三頁,共五十四頁,2022年,8月28日表達式——邏輯運算例:abc = 10habc1 equ 2ahv1 db 3ahmov ax,abcand0fhmov ax,abcorabc1mov ax,v1andabc第十四頁,共五十四頁,2022年,8月28日表達式——關(guān)系運算EQ、NE、LT、GT、LE、GE對象數(shù)據(jù)同段內(nèi)的偏移地址結(jié)果真:全1假:全0第十五頁,共五十四頁,2022年,8月28日表達式——關(guān)系運算例:abc equ 10hmov ax,abceq10mov ax,abclt10mov ax,abcgt10第十六頁,共五十四頁,2022年,8月28日表達式——數(shù)值返回運算Offset、seg、type、length、size對象變量、標(biāo)號結(jié)果值第十七頁,共五十四頁,2022年,8月28日表達式——數(shù)值返回運算Offset變量、標(biāo)號的段內(nèi)偏移地址與LEA的差異???Seg變量、標(biāo)號的段地址第十八頁,共五十四頁,2022年,8月28日表達式——數(shù)值返回運算Type變量、標(biāo)號的類型屬性Length外層DUP的單元個數(shù)無DUP則返回1第十九頁,共五十四頁,2022年,8月28日表達式——數(shù)值返回運算Sizesize=length*type第二十頁,共五十四頁,2022年,8月28日表達式——屬性修改運算Ptr臨時改變變量、標(biāo)號的類型屬性mov wordptr[bx],0jmp farptrsub1This給變量、標(biāo)號賦予類型first equthisbytetable dw2000h第二十一頁,共五十四頁,2022年,8月28日表達式——屬性修改運算High/Low字節(jié)分離常數(shù)、常數(shù)表達式mov al,low(offsetda1)第二十二頁,共五十四頁,2022年,8月28日§4-3偽指令語句不生成機器碼,幫助解釋、生成指令的機器碼變量定義、存儲器分配、段定義……第二十三頁,共五十四頁,2022年,8月28日偽指令語句——數(shù)據(jù)定義定義/分配變量的存儲器單元,并初始化存儲器單元格式變量名助記符操作數(shù),操作數(shù)…;注釋符號地址DBDWDD第二十四頁,共五十四頁,2022年,8月28日偽指令語句——數(shù)據(jù)定義DUP的使用定義重復(fù)數(shù)據(jù)例abc db 10dup(0)ab db 100dup(1,2,34dup(0))第二十五頁,共五十四頁,2022年,8月28日偽指令語句——數(shù)據(jù)定義字符串的定義DB/DW/DD?DB按正常的順序排列DW/DD只能以兩個一組作定義,順序不同第二十六頁,共五十四頁,2022年,8月28日偽指令語句——數(shù)據(jù)定義符號地址的使用DW?DD?DB??第二十七頁,共五十四頁,2022年,8月28日偽指令語句——賦值不分配存儲器空間常數(shù)EQU不可重復(fù)賦值=可重復(fù)賦值第二十八頁,共五十四頁,2022年,8月28日偽指令語句——段定義段名segment定位類型組合類型‘分類名’

……段名 ends第二十九頁,共五十四頁,2022年,8月28日偽指令語句——段定義段名segment定位類型組合類型‘分類名’

……段名 ends定義該段起始地址定位ParaByteWordPage第三十頁,共五十四頁,2022年,8月28日偽指令語句——段定義段名segment定位類型組合類型‘分類名’

……段名 ends定義組合類型NONEPUBLICCOMMONATSTACK第三十一頁,共五十四頁,2022年,8月28日偽指令語句——段定義段名segment定位類型組合類型‘分類名’

……段名 ends定義該段的分類名,分類名相同,被組合成同一個段第三十二頁,共五十四頁,2022年,8月28日偽指令語句——數(shù)據(jù)定義dsegsegmentat0055h one db 0 two dw two three dd two four equ 10h five dw four six db 5-fourdseg ends第三十三頁,共五十四頁,2022年,8月28日偽指令語句——段分配語句ASSUME說明當(dāng)前段是哪些段,幫助匯編程序產(chǎn)生段前綴必須放在第一句指令之前不得短缺Assumecs:cseg,ds:dseg,ss:sseg,es:esegAssumenothing第三十四頁,共五十四頁,2022年,8月28日偽指令語句——過程定義子程序格式 過程名 PROC 屬性

…… Ret

過程名 ENDP第三十五頁,共五十四頁,2022年,8月28日偽指令語句——END結(jié)束語句標(biāo)識程序的首指令格式END 標(biāo)號第三十六頁,共五十四頁,2022年,8月28日偽指令語句——段寄存器的初始化DS/ES指令裝入movax,dsegmovds,axmovax,esegmoves,ax第三十七頁,共五十四頁,2022年,8月28日偽指令語句——段寄存器的初始化SS/SP自動裝入ssegsegmentSTACK dw 100dup(0)ssegends第三十八頁,共五十四頁,2022年,8月28日偽指令語句——段寄存器的初始化SS/SP(指令裝入)定義sseg segment dw 100dup(0)top label wordsseg ends裝入Movax,ssegMovss,axMovsp,offsettoptopequthisword第三十九頁,共五十四頁,2022年,8月28日偽指令語句——段寄存器的初始化CS自動裝入end后的標(biāo)號便是第一條指令(語句)CS:IP第四十頁,共五十四頁,2022年,8月28日匯編語言源程序的框架段的描述title注釋數(shù)據(jù)段(附加段)堆棧段代碼段(Assume)end標(biāo)號第四十一頁,共五十四頁,2022年,8月28日匯編語言源程序的框架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第四十二頁,共五十四頁,2022年,8月28日其他偽指令ORG<表達式>定位偽指令設(shè)置匯編程序位置指針,指定下一語句的起始偏移地址$匯編時用于指示下一數(shù)據(jù)/指令的段內(nèi)偏移量,當(dāng)前位置計數(shù)器常常用來計算前一變量的長度,字節(jié)數(shù)第四十三頁,共五十四頁,2022年,8月28日其他偽指令dseg segment

org1000hv1 db 10h,20h,30H,40Hcount equ $-v1dseg ends第四十四頁,共五十四頁,2022年,8月28日其他偽指令<名稱>Label<類型>給存儲單元(變量或標(biāo)號)取一名字,并指定其類型<名稱>同樣具有三個屬性DataByte Label ByteDataWord DW 20HDup(0)第四十五頁,共五十四頁,2022年,8月28日結(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ù)置時,才被分配存儲單元第四十六頁,共五十四頁,2022年,8月28日結(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>

第四十七頁,共五十四頁,2022年,8月28日結(jié)構(gòu)中的變量簡單變量由DB、DW、DD定義的單個結(jié)構(gòu)元素內(nèi)容可被修改如: T1 DW 1234H多重變量包含多個元素值不可改,只能使用初值如: T4 DW 2DUP(0)

T5 DW 1122H,3344H第四十八頁,共五十四頁,2022年,8月28日結(jié)構(gòu)中的變量字符串內(nèi)容可改,長度不得超過如: T6 DB ‘ASBD’多重結(jié)構(gòu)引用另一結(jié)構(gòu)第四十九頁,共五十四頁,2022年,8月28日結(jié)構(gòu)的使用MOV TWO.T2, AXMOV BX, FOUR.T5[0]MOV SI, OFFSETFOURMOV BX, [SI].T5[0]第五十頁,共五十四頁,2022年,8月28日結(jié)構(gòu)的使用例:Page149/例4-41利用結(jié)構(gòu)存儲學(xué)生的信息結(jié)構(gòu)變量的預(yù)置……第五十一頁

溫馨提示

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

評論

0/150

提交評論