匯編語言程序格式.doc_第1頁
匯編語言程序格式.doc_第2頁
匯編語言程序格式.doc_第3頁
匯編語言程序格式.doc_第4頁
匯編語言程序格式.doc_第5頁
已閱讀5頁,還剩2頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第四章 匯編語言程序格式1教學目的:掌握微型匯編語言格式和程序設(shè)計方法2教學要求: 熟悉匯編語言程序的結(jié)構(gòu)、語句類型和格式。 熟悉數(shù)據(jù)項及表達式,要求能明確區(qū)分標號和變量。 熟悉各類偽指令,要求掌握常用偽指令格式和應(yīng)用。 熟悉匯編語言上機過程和DEBUG調(diào)試3教學重點:指令語句格式和偽指令語句格式匯編語言程序格式。4掌握難點:偽指令偽指令存儲器分配技術(shù)5教學進程安排:P1021336教學方法:課堂講授7教學內(nèi)容摘要:4.1 匯編語言語句格式4.1.1 語句種類【例4-1】先給出一個完整的匯編語言源程序,該程序的功能是完成兩個字節(jié)數(shù)據(jù)相加。DATASEGMENT;段定義開始(DATA段)BUF1DB34H;第1個加數(shù);BUF2DB2AH;第2個加數(shù)SUMDB?;準備用來存放和數(shù)的單元DATAENDS;段定義結(jié)束(DATA段)CODESEGMENT;段定義開始(CODE段)ASSUMECS:CODE,DS:DATA;規(guī)定DATA、CODE分別為數(shù)據(jù)段和代碼段START:MOVAX,DATAMOVDS,AX;給數(shù)據(jù)段寄存器DS賦值MOVAL,BUF1;取第1個加數(shù)ADDAL,BUF2;和第2個加數(shù)相加MOVSUM,AL;存放結(jié)果MOVAH,4CH;INT21H;返回DOS狀態(tài)CODEENDS;段定義結(jié)束(CODE段)ENDSTART;整個源程序結(jié)束從上面這個例子可以看出,匯編語言源程序由若干個語句組成,語句分為如下2類。1指令語句2偽指令語句4.1.2 語句格式指令語句和偽指令語句的格式是類似的,格式如下:名字 操作碼 操作數(shù) ;注釋1名字名字的標識符名字的定義規(guī)則名字的2種主要形式標號變量2.操作碼3.操作數(shù)常數(shù)表達式算術(shù)運算符邏輯運算符關(guān)系運算符4.注釋項4.2 偽指令與偽操作4.2.1 定義符號的偽指令1. 等值偽指令EQU0A041064000001FBFF3C000000FDFF0000DATA_BYTEDATA_WORDDATA_DW10d410h100d60d0FFFDh-5100h格式: EQU 2. 等號偽指令 =EMP=7EMP=EMP+13. 解除定義偽指令PURGE格式:PURGE 4.2.2 定義數(shù)據(jù)的偽指令變量 助記符 操作數(shù),操作數(shù) ;注釋功能:為操作數(shù)分配存儲單元,并用變量與存儲單元建立聯(lián)系。DB、DW、DD、DQ、DT【例4-2】操作數(shù)可以是常數(shù),或者是表達式(根據(jù)該表達式可以求得一個常數(shù)),如DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,-5圖4.1 例4-2的匯編結(jié)果DATA_DWDD3C,OFFFDH匯編程序可以在匯編期間在存儲器中存入數(shù)據(jù),匯編后的內(nèi)存分布如圖4.1所示?!纠?-3】操作數(shù)也可以是字符串,如:MESSAGEDBHELLO則存儲器存儲情況如圖4.2所示,而DB AB和DW AB的存儲情況則分別如圖4.2和所示?!纠?-4】操作數(shù)?可以保留存儲空間,但不存入數(shù)據(jù)。 如:ABCDB0,?,?,0 DEFDW?,52,?經(jīng)匯編后的存儲情況如圖4.3所示。MESSAGE48454C4C4F41424241HELLOABBA字符串的存儲 DB AB DW AB圖4.2 例4-3的匯編結(jié)果【例4-5】 使用DUP實現(xiàn)重復(fù)定義ARRAY1DB2DUP(0,1,2,?)ARRAY2DB100DUP( ? )匯編后的存儲情況如圖4.4所示。由圖可見,例4-5中的第一個語句和語句ARRAY1 DB 0,1,2,?,0,1,2,?是100個字節(jié)00-00-3400-ABCDEF52d000102-000102-ARRAY1ARRAY2等價的。圖4.3 例4-4的匯編結(jié)果 圖4.4 例4-5的匯編結(jié)果4.2.3 定義程序開始和結(jié)束的偽指令NAMEMODULE_NAMETITLETEXTENDLABEL4.2.4 指令集選擇偽指令A(yù)RRAY010002007C000300040082000074.8086 選擇8086指令系統(tǒng).286 選擇80286指令系統(tǒng).286P 選擇保護方式下的80286指令系統(tǒng)4.2.5 地址計數(shù)器與對準偽操作1. 地址計數(shù)器$JNE $+6【例4-6】$ 用法示例ARRAYDW1,2,$+4,3,4,$+4如匯編時ARRAY分配的偏移地址為0074,則匯編后的存儲區(qū)將如圖4.5所示。注意:ARRAY數(shù)組中的兩個 $+4 得到的結(jié)果是不同的,這是 圖4.5 例4-6的匯編結(jié)果由于$的值是在不斷變化的緣故。當在指令中用到$ 時,它只代表該指令的首地址,而與$本身所在的字節(jié)無關(guān)。2. ORG偽操作 ORG偽操作用來設(shè)置當前地址計數(shù)器的值,其格式為:ORGCONSTANTEXPRESSION3. EVEN偽操作4. ALIGN偽操作ALIGN偽操作為保證雙字類型數(shù)組邊界從4的倍數(shù)開始創(chuàng)造了條件,其格式為:ALIGNBOUNDARY其中BOUNDARY必須是2的冪,例如:.DATAALIGN4ARRAYDB100DUP(?)就可保證ARRAY的值為4的倍數(shù)。當然,ALIGN2和EVEN是等價的。4.2.6 基數(shù)控制偽指令.RADIXEXPRESSION4.2.7 過程定義偽指令可把具有獨立功能的程序段定義為過程,供其它程序調(diào)用。過程定義的語法格式為: PROCNEAR/FARRET ENDP4.3 匯編語言源程序結(jié)構(gòu)4.3.1完整段定義的程序結(jié)構(gòu)SEGMENT_NAMESEGMENT SEGMENT_NAMEENDSASSUME :段名,:段名,ASSUME :NOTHING SEGMENT 定位類型組合類型使用類型類別 ENDS1. 定位類型(ALIGN_TYPE)PARA指定段的起始地址必須從小段邊界開始,即段起始地址最低位必須為0。這樣,偏移地址可以從0開始。BYTE該段可以從任何地址開始。這樣,起始偏移地址可能不是0。WORD該段必須從字的邊界開始,即段起始地址必須為偶數(shù)。DWORD該段必須從雙字邊界開始,即段起始地址的最低位必須為4的倍數(shù)。PAGE該段必須從負的邊界開始,即段起始地址的最低兩個十六進制數(shù)位必須為0(該地址能被256整除)。定位類型的默認項是PARA,即若未指定定位類型時,則匯編程序默認為PARA。2. 組合類型(COMBINE_TYPE)組合類型的默認項是PRIVATE。3. 使用類型(USE_TYPE)USE16使用16位尋址方式。USE32使用32位尋址方式。使用類型的默認項是USE16。4. 類別名(CLASS)在引號中給出連接時組成段組的類型名。類別說明并不能把相同類別的段合并起來,但在連接后形成的裝入模塊中,可以把它們的位置靠在一起。4.3.2 簡化段定義的程序結(jié)構(gòu)較新版本的匯編程序(MASM5.0與MASM6.0)除支持“完整的段定義偽操作”中所討論的SEGMENT偽操作外,還提供了一種新的較簡單的段定義方法。1MODEL偽操作MODEL偽操作的格式如下:.MODEL MEMORY_MODEL , MODEL OPTIONS 2簡化的段定義偽操作3與簡化段定義有關(guān)的預(yù)定義符號4用MODEL定義存儲模型時的段默認屬性4.3.3 段組定義的程序結(jié)構(gòu)其格式如下:GRPNAMEGROUPSEGNAME,SEGNAME其中GRPNAME為段組名,SEGNAME則為段名。4.4 匯編語言程序的上機過程在計算機上運行匯編語言程序的步驟是:1用編輯程序建立ASM源文件;2用MASM程序把ASM文件轉(zhuǎn)匯編成OBJ文件;3用LINK程序把OBJ文件轉(zhuǎn)連接成EXE文件;4用DOS命令直接鍵入文件名就可執(zhí)行該程序。圖4.7 匯編語言程序的建立及匯編過程4.4.1建立匯編語言的工作環(huán)境為運行匯編語言程序至少要在磁盤上提供以下文件:1編輯程序,如EDIT.EXE2匯編程序,如MASM.EXE3連接程序,如LINK.EXE4調(diào)試程序,如DEBUG.COM4.4.2 匯編語言源程序上機過程1.建立匯編源程序ASM文件2.匯編產(chǎn)生OBJ文件3. 鏈接產(chǎn)生EXE文件4. 程序的調(diào)試和執(zhí)行5. 生成COM文件4.5 動態(tài)調(diào)試程序DEBUG4.5.1 DEBUG的啟動與退出1.DEBUG的啟動DEBUG2.退出DEBUG格式 -Q4.5.2 匯編、執(zhí)行、跟蹤與反匯編1. A命令(匯編)格式:A 2. G命令(執(zhí)行)格式:G=3. T命令(跟蹤執(zhí)行)格式:T=地址4. U命令(反匯編)格式:U4.5.3 顯示、修改內(nèi)存和寄存器命令1.D命令(顯示內(nèi)存)格式:D或D2. E命令(將內(nèi)容寫入內(nèi)存)格式:E3.R命令(修改寄存器)格式:R(顯示所有寄存器和標志)R寄存器(顯示指定寄存器)RF(顯示所有標志)4.5.4 磁盤文件操作1N命令(命名)格式:N2W命令(寫盤)格式:W3L命令(讀盤) 格式:L4.5.5 查找、比較、填充和移動內(nèi)存

溫馨提示

  • 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

提交評論