資源描述:
《匯編語言程序設計1(匯編語言源程序的結(jié)構(gòu)、語句格式、偽指令)》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、第4章匯編語言程序設計movax,12hcalldisplayJmp1234h1主要內(nèi)容:匯編語言源程序的結(jié)構(gòu)匯編語言語句格式偽指令功能調(diào)用匯編語言程序設計24.1匯編語言源程序(1)機器語言——二進制數(shù)形式的指令和數(shù)據(jù)。B064是什么意思?這就是機器語言。既不直觀,又不易理解和記憶.MOVAL,64H;很容易記憶理解,這就是助記符。(2)助記符——用便于記憶的英語單詞表示的指令操作碼。它反映了指令的功能和主要特征,便于人們理解和記憶。3操作數(shù)可能放在存儲器中,這就涉及操作數(shù)的地址。程序中遇到轉(zhuǎn)移指令或調(diào)用指令,也需要知道轉(zhuǎn)移地址,若采用具體地址就很不方便,一旦有錯,改動也很麻
2、煩。于是人們采用標號或符號來代替地址,例:LP1:MOVAX,VAR…LOOPLP1(3)匯編語言——指令助記符,符號地址,標號,偽指令等語言元素的集合以及這些元素使用的規(guī)則。用匯編語言編寫的程序叫匯編語言源程序。指令除了操作碼以外,還有一個操作數(shù)問題。4匯編程序(翻譯程序)源程序的編譯程序匯編程序匯編語言源程序機器語言目標程序匯編源程序需翻譯成機器語言,變成可執(zhí)行文件,機器才能執(zhí)行,這個翻譯過程叫匯編?!呒壵Z言中稱該過程為“解釋”或“編譯”。執(zhí)行翻譯的程序稱為“匯編程序”。5匯編語言程序設計與執(zhí)行過程輸入?yún)R編語言源程序EDIT/NOTEPAD等源文件.ASM匯編(編譯)MA
3、SM/ASM等目標文件.OBJ鏈接LINK等可執(zhí)行文件.EXE調(diào)試DEBUG/TD等最終正確的程序.EXE目前都把上述的軟件集成在統(tǒng)一的環(huán)境下,以方便用戶使用。建立、編輯匯編連接運行調(diào)試64.1.1匯編語言源程序的結(jié)構(gòu)匯編語言源程序通常由一個或幾個程序模塊組成,每個模塊一般由3個(或4個)邏輯段組成:數(shù)據(jù)段——存放數(shù)據(jù)、變量(附加數(shù)據(jù)段——存放數(shù)據(jù)、變量)堆棧段——堆棧區(qū)域代碼段——存放程序指令7一個基本的匯編語言程序框架如下:stackSEGMENTPARA‘stack‘DB100DUP(‘stack’)stackENDSdataSEGMENT<數(shù)據(jù)、變量在此定義>dataEN
4、DScodeSEGMENTASSUMECS:code,DS:data,ES:data,SS:stackstart:MOVAX,dataMOVDS,AXMOVES,AX<此處加入你自己的程序段>MOVAL,4CHINT21HcodeENDSENDstart堆棧段數(shù)據(jù)段代碼段真指令80000:0~3FF環(huán)境與代碼運行FFFF:0堆棧段數(shù)據(jù)段代碼段CS:IPDSSS:SP系統(tǒng)起始運行程序中斷向量區(qū)(系統(tǒng)專用)棧底最多4個活動段分段結(jié)構(gòu)ES94.1.2匯編語言的語句與格式匯編語言的語句有兩種:指令性語句——由8086指令助記符(真指令)構(gòu)成的語句指示性語句——由偽指令構(gòu)成的語句指令性語句
5、的格式為:標號:指令助記符目的操作數(shù),源操作數(shù);注釋指示性語句的格式為:名字偽指令操作數(shù)1,操作數(shù)2,…,操作數(shù)n;注釋注:各部分之間至少要用一個空格(或逗號、分號)作為分隔符。10●指令性語句(真指令)由CPU執(zhí)行,每一條指令性語句都有一條機器碼指令與其對應;●指示性語句(偽指令)由匯編程序執(zhí)行。它指出匯編程序應如何對源程序進行匯編,如何定義變量、分配存儲單元以及指示程序開始和結(jié)束等。指示性語句無機器碼指令與其相對應。注意:指令性語句匯編時生成機器碼;指示性語句匯編時不生成機器碼。11語句的構(gòu)成元素:標號——指令的符號地址,用來代表指令在存儲器中的地址。只能出現(xiàn)在指令性語句中,
6、標號后應加上冒號。名字——段、過程、變量的名字,用來代表它們在存儲器中的地址。只能出現(xiàn)在指示性語句中,名字后不加冒號。指令助記符——8086助記符、偽指令操作數(shù)——即指令的操作對象對指令性語句(真指令)——0,1,2個對指示性語句(偽指令)——根據(jù)需要而定操作數(shù)之間以逗號分隔操作數(shù)可以是:寄存器、存儲單元、常數(shù)或表達式例如:AX,[DI+BX+10],200,16*8+TABLE,等等12注釋——以分號開頭,可放在指令后,也可單獨一行。?注意注解的寫法。要寫指令(段)在程序中的作用,而不要寫指令的操作。例如:以下為同一條指令寫的注釋1)MOVCX,100;傳送100到CX2)MO
7、VCX,100;循環(huán)計數(shù)器置初值顯然,第二種寫法要比第一種寫法要好。13匯編語言的一個實例:hello.asmdataSEGMENTHelloDB‘Hello,world!’,0DH,0AH,’$’dataENDSprogSEGMENTASSUMECS:prog,DS:datastart:MOVAX,dataMOVDS,AXLEADX,hello;取字符串首地址MOVAH,9INT21H;顯示字符串MOVAH,4CHINT21H;退回DOSprogENDSENDstart名字標號