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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、 幾個概念幾個概念 8086匯編語言的語句匯編語言的語句 8086匯編中的偽指令匯編中的偽指令 8086匯編中的運算符匯編中的運算符 匯編語言程序設計匯編語言程序設計 宏定義與宏調用宏定義與宏調用 系統(tǒng)調用系統(tǒng)調用 匯編語言匯編語言 匯編語言源程序匯編語言源程序 匯編匯編 匯編程序匯編程序機器語言:機器語言是計算機硬件系統(tǒng)能夠直接識別機器語言:機器語言是計算機硬件系統(tǒng)能夠直接識別 的計算機語言,每一條語句實際上是一條的計算機語言,每一條語句實際上是一條 二進制二進制形式的指令代碼,由操作碼和操作形式的指令代碼,由操作碼和操作 數組成。參見數組成。參見p52-53匯編語言:匯編語言用匯編語言:匯

2、編語言用助記符助記符代替操作碼,用代替操作碼,用符號地符號地 址址代替操作數。代替操作數。匯編語言由指令性語句和指示性語句組成。匯編語言由指令性語句和指示性語句組成。一、指令性語句格式一、指令性語句格式標號:標號: 操作碼操作碼 操作數操作數1, 操作數操作數2; 注釋注釋二、指示性語句格式二、指示性語句格式 標識符(名字)標識符(名字) 指示符(偽指令)指示符(偽指令) 表達式表達式 三、有關屬性三、有關屬性 存儲器操作數的屬性有三種:段值、段內偏移量和存儲器操作數的屬性有三種:段值、段內偏移量和 類型。類型。 指令語句的一般格式如下:指令語句的一般格式如下:標號:標號: 操作碼操作碼 操作

3、數操作數;注釋;注釋1、標號:標號是機器指令語句存放、標號:標號是機器指令語句存放地址地址的符號表示,的符號表示, 代表該指令目標代碼的第一個字節(jié)地址,后代表該指令目標代碼的第一個字節(jié)地址,后 面必須緊跟冒號面必須緊跟冒號“:” 。2、操作碼:操作碼為語句的核心成分,表示該語句的、操作碼:操作碼為語句的核心成分,表示該語句的 操作類型。操作類型。 3、操作數:操作數表示操作碼的操作對象。、操作數:操作數表示操作碼的操作對象。 4、注釋:注釋均以、注釋:注釋均以分號分號開始,它可占一行或多行,一開始,它可占一行或多行,一 般放在一條語句的后面。般放在一條語句的后面。偽指令語句格式如下:偽指令語句

4、格式如下: 標識符標識符 偽指令偽指令 表達式表達式 ;注釋;注釋 標識符標識符:標識符標識符是偽指令語句的一個可選項。是偽指令語句的一個可選項。 偽指令偽指令:偽指令偽指令指定匯編程序要完成的具體操指定匯編程序要完成的具體操 作,如作,如規(guī)定規(guī)定的數據定義偽指令的數據定義偽指令db、dw、dd,段,段 定義偽指令定義偽指令segment,說明偽指令,說明偽指令assume等。等。 表達式表達式:偽指令后面的:偽指令后面的表達式表達式可以是常數、字符可以是常數、字符 串、常量名、變量名等,其個數由具體的偽指令決串、常量名、變量名等,其個數由具體的偽指令決 定,各個操作數之間必須以定,各個操作數

5、之間必須以“逗號逗號”分隔。分隔。 注釋注釋:偽指令的:偽指令的注釋注釋必須以必須以“;”開始,其作用同開始,其作用同 指令語句中的注釋部分。指令語句中的注釋部分。 變量變量通常是存放在某些存儲單元的通常是存放在某些存儲單元的數據數據,以變量名,以變量名的形式出現(xiàn)在程序中,可代表符號地址、數據區(qū)或存儲的形式出現(xiàn)在程序中,可代表符號地址、數據區(qū)或存儲區(qū)的區(qū)的第一個數據單元第一個數據單元,如,如buf。 變量是用數據定義變量是用數據定義偽指令偽指令db、dw、dd等定義的。等定義的。變量的三種屬性:變量的三種屬性: 段屬性(段屬性(segment):):表示變量存放在哪一個邏表示變量存放在哪一個邏

6、 輯段中(即變量所在段的段地址)。輯段中(即變量所在段的段地址)。 偏移屬性(偏移屬性(offset):):表示變量的偏移地址,即表示變量的偏移地址,即 在邏輯段中距段的起始點的字節(jié)數在邏輯段中距段的起始點的字節(jié)數 類型屬性(類型屬性(type):):表示變量占用存儲單元的字節(jié)表示變量占用存儲單元的字節(jié) 數。用數。用db定義的變量類型屬性為字節(jié);用定義的變量類型屬性為字節(jié);用dw定義定義 的變量類型屬性為字(的變量類型屬性為字(2b);用);用dd定義的變量類定義的變量類 型屬性為雙字(型屬性為雙字(4b)。)。一、一、 符號定義語句符號定義語句 1、等值語句、等值語句 格式:符號名格式:符號

7、名 equ 表達式表達式 功能:為功能:為常量常量、表達式表達式及其他各種及其他各種符號符號定義一個定義一個 等值等值的的符號名符號名,但它,但它不申請存儲單元不申請存儲單元。不。不 允許重新定義。允許重新定義。例:例: port equ 1234 buff equ port58 mem equ ds:bp20h count equ cx abc equ aaa2、等號語句、等號語句 格式:符號名格式:符號名=表達式表達式 功能:為功能:為常量常量、表達式表達式及其他各種及其他各種符號符號定義一個定義一個 等值等值的的符號名符號名,并能對所定義的符號多次,并能對所定義的符號多次 重復重復定義,

8、且以定義,且以最后一次最后一次定義的值為準。定義的值為準。 例:例:num34 num341二、變量定義語句二、變量定義語句 格式:格式: 符號名符號名 db/dw/dd 表達式表達式 1 1、定義一組數據、定義一組數據 例例1 1: buff dw 1234h,0abcdh,8eh dw 79dh,7b6ah 可以為一個或連續(xù)的可以為一個或連續(xù)的存儲單元存儲單元設置數值初值設置數值初值。2 2、定義一串字符、定義一串字符例例2 2: str db welcome ! 用用db偽指令為偽指令為ascii字符串中的每一個字符字符串中的每一個字符分配一個分配一個字節(jié)單元字節(jié)單元,字符串必須用單引號

9、括起來。,字符串必須用單引號括起來。3 3、定義保留存儲單元、定義保留存儲單元 例例3 3: sum dw ?,? 為數據項分配為數據項分配存儲單元存儲單元的一種方法,只是存儲的一種方法,只是存儲單元中不預置確定的值,常用來預留存儲單元。單元中不預置確定的值,常用來預留存儲單元。4 4、復制操作、復制操作 復制操作符復制操作符dup(duplication)可預置重復的數值可預置重復的數值 n dup ( (表達式表達式) )例例4 4:all_zero db 0,0,0,0,0 用復制操作可改為:用復制操作可改為: all_zero db 5 dup(0) 為若干重復數據單元為若干重復數據單

10、元分配存儲單元分配存儲單元。5 5、將已定義的地址存入內存單元、將已定義的地址存入內存單元 例例5 5: lit dd cyc cyc:mov ax,bx三、段定義語句三、段定義語句1 1、段定義語句格式:、段定義語句格式: 段名段名 segment 定位類型定位類型 組合類型組合類型 類別類別 段名段名 ends 段定義偽指令用于將源程序劃分成若干段,即代段定義偽指令用于將源程序劃分成若干段,即代碼段碼段( (存放程序存放程序) ),數據段,數據段( (存放數據存放數據) ),堆棧段,附加,堆棧段,附加段。段。 只需要掌握只需要掌握 段名段名 segment 段名段名 ends 2 2、段假

11、設語句、段假設語句 assume 段寄存器名:段名段寄存器名:段名, 功能:向匯編程序指示當前各段所用的段寄存功能:向匯編程序指示當前各段所用的段寄存 器,設定段寄存器與段的關系。器,設定段寄存器與段的關系。3 3、org偽指令、地址計數器偽指令、地址計數器$ 格式:格式:org 功能:指定在它之后的代碼或數據存放的起始地功能:指定在它之后的代碼或數據存放的起始地 址的偏移量,以表達式的值作為起始地址的偏移量,以表達式的值作為起始地 址,連續(xù)存放程序或數據。址,連續(xù)存放程序或數據。 $ $代表當前的地址。代表當前的地址。4 4、end 表示源代碼結束表示源代碼結束 格式:格式:end 常數或表

12、達式常數或表達式 功能:該語句標志整個程序的結束,是源程序的功能:該語句標志整個程序的結束,是源程序的 最后一條語句。最后一條語句。四、過程定義語句四、過程定義語句 過程名過程名 proc near/far ret 過程名過程名 endp功能:功能:完成過程定義,在過程體中實現(xiàn)過程的操作功完成過程定義,在過程體中實現(xiàn)過程的操作功 能。當一程序塊被定義為過程后,程序中其他能。當一程序塊被定義為過程后,程序中其他 地方就可用地方就可用call指令調用該過程。指令調用該過程。 調用過程的格式為:調用過程的格式為: call 過程名過程名 過程名實質上是過程入口的符號地址,它和過程名實質上是過程入口的

13、符號地址,它和標號標號一樣,也有三種屬性:段、偏移量和類型(距離)。一樣,也有三種屬性:段、偏移量和類型(距離)。 一般來說,被定義為過程的程序塊中應該有返回一般來說,被定義為過程的程序塊中應該有返回指令指令ret,執(zhí)行,執(zhí)行ret指令后,控制返回到原來調用指指令后,控制返回到原來調用指令的下條指令。令的下條指令。一、常用運算符一、常用運算符1 1、算術運算符、算術運算符 (加)、(加)、(減)、(減)、* *(乘)、(乘)、/ /(除)、(除)、 mod(求余)。(求余)。2 2、邏輯運算符、邏輯運算符 and、or、xor、not 3 3、關系運算符、關系運算符 eq(相等)、(相等)、n

14、e(不等、)、(不等、)、 lt(小于)、(小于)、gt(大于)、(大于)、 le(小于等于)、(小于等于)、ge(大于等于)。(大于等于)。 關系成立,全關系成立,全1 關系不成立,全關系不成立,全0例:例: mov dl , 10h lt 16 ; mov dl,0例:例: and ax , 555 gt 222 ; and ax,0ffffh 二、常用的操作符二、常用的操作符4 4、分析操作符、分析操作符1 1)seg操作符操作符 取取段段地址地址例:例: mov ax,seg buff2 2)offset操作符操作符 取地址的取地址的偏移偏移量量 例:例:mov bx,offset b

15、uff3 3)type操作符操作符 對于變量有對于變量有3 3種:種: 1字節(jié)型;字節(jié)型; 2字型;字型; 4雙字型。雙字型。 對于標號有對于標號有2 2種:種: 1near(段內);(段內); 2far(段間)。(段間)。例:例:buff db 20h mov bx,type buff mov bx,014 4)length操作符操作符 格式:格式:length 變量名變量名 功能:返回一個變量名所占功能:返回一個變量名所占存儲單元存儲單元(字節(jié)、字(字節(jié)、字 或雙字)的數目。若用重復定義子句說或雙字)的數目。若用重復定義子句說 明,則返回明,則返回dup前的數字;若沒有前的數字;若沒有du

16、p 說明,則返回值總是說明,則返回值總是1。5)size操作符操作符 sizetypelength 例:例:buff dw 10 dup (?) mov cx,length buf; mov cx,10 mov cx,size buf; mov cx,205 5、綜合運算符(合成操作符)、綜合運算符(合成操作符)功能:功能:1 1、由已有的操作數建立新的操作數;、由已有的操作數建立新的操作數; 2 2、新操作數和已有的操作數類型不一樣、新操作數和已有的操作數類型不一樣。 新的類型只在新的類型只在當前指令內有效當前指令內有效。1 1)ptr運算符運算符 格式:類型格式:類型 ptr 表達式表達式

17、例:例:inc word ptr bx wx dw 1234h mov al,byte ptr wx mov ah,byte ptr wx+12 2)this操作符操作符 格式:格式:this 類型類型( (或屬性或屬性) )例:例:first equ this byte second dw 100 dup (?) 運算符的優(yōu)先級別見運算符的優(yōu)先級別見p96p96。ptr:已分配存:已分配存 儲器單元;儲器單元;this:不分配存:不分配存 儲器單元。儲器單元。常用的匯編語言程序框架:常用的匯編語言程序框架: data segment;定義數據段;定義數據段val1 db 12h , 8eh

18、;定義變量;定義變量 data ends ;數據段結束;數據段結束 code segment;定義代碼段;定義代碼段 assume ds:data , cs: code;段屬性說明;段屬性說明 start: mov ax , data;初始化;初始化ds mov ds , ax mov ax , 4c00h;返回;返回dos int 21h code ends ;代碼段結束;代碼段結束 end start ;源程序結束;源程序結束 特點特點程序分段程序分段語句由指令性和指示性語句組成語句由指令性和指示性語句組成兩種程序框架兩種程序框架一、匯編語言程序設計基本步驟一、匯編語言程序設計基本步驟 u

19、 分析問題,確定模型分析問題,確定模型u 確定算法確定算法 u 繪制流程圖繪制流程圖u 編寫程序編寫程序u 檢查和調試檢查和調試 二、匯編語言程序的基本結構二、匯編語言程序的基本結構1、順序結構、順序結構 p972 2、分支結構、分支結構 實現(xiàn)100010 xyxx用查表法確定多分支用查表法確定多分支例:某應用程序主菜單有例:某應用程序主菜單有8 8個可選項,其入口地址分別個可選項,其入口地址分別 記為記為r0、r1r7。要求編制程序根據變量。要求編制程序根據變量n的的 值轉向相應的處理程序(值轉向相應的處理程序(n為入口編號)。為入口編號)。步驟:步驟: a a、把入口地址放在、把入口地址放

20、在base開始的內存單元;開始的內存單元; b b、根據、根據n的的內容進行查表實現(xiàn)分支轉移。內容進行查表實現(xiàn)分支轉移。例:某應用程序主菜單有例:某應用程序主菜單有8個可選項,其入口地址分別個可選項,其入口地址分別 記為記為r0、r1r7。要求編制程序根據變量。要求編制程序根據變量n的值的值 轉向相應的處理程序(轉向相應的處理程序(n為入口編號)。為入口編號)。data segment add bx,axbase dw r0,r1,r2,r3 mov ax,bx dw r4,r5,r6,r7 jmp ax n db 5 r0:data ends jmp ok code segment r1:

21、assume cs:code,ds:data jmp ok start:mov ax,data mov ds,ax r7: mov al,n ok:mov ah,4ch add al,al int 21h mov ah,0 code ends mov bx,offset base end start 3、循環(huán)結構、循環(huán)結構 call proc1ret4 4、子程序、子程序 (1) 實現(xiàn)方法實現(xiàn)方法主程序有調用指令主程序有調用指令call子程序有返回指令子程序有返回指令ret(2) 特點特點 call指令與指令與ret缺一不可缺一不可現(xiàn)場保護現(xiàn)場保護入口出口參數設置入口出口參數設置子程序編寫子程

22、序編寫:1、子程序組成、子程序組成(1) 使用說明使用說明a、子程序功能、子程序功能b、使用寄存器情況、使用寄存器情況c、入口出口參數、入口出口參數(2) 程序體程序體入口出口參數傳遞入口出口參數傳遞現(xiàn)場保護現(xiàn)場保護功能程序段功能程序段例例:編寫編寫ax*10ax子程序子程序;這是一個乘;這是一個乘10子程序子程序;使用寄存器;使用寄存器ax;入口:;入口:ax,出口:,出口:axmul10proc farpush bx ;保護現(xiàn)場保護現(xiàn)場pushfadd ax,ax;2axmov bx,ax;2axbxadd ax,ax;4axadd ax,ax;8axadd ax,bx;10axpopf

23、;恢復現(xiàn)場;恢復現(xiàn)場pop bxretmul10endp功功能能程程序序段段2、現(xiàn)場保護和入口出口參數傳遞、現(xiàn)場保護和入口出口參數傳遞(1)現(xiàn)場保護)現(xiàn)場保護方案一:在子程序中保護方案一:在子程序中保護 靈活,不方便靈活,不方便方案二:在主程序中保護方案二:在主程序中保護 方便,不靈活方便,不靈活(2)參數傳遞)參數傳遞寄存器傳遞寄存器傳遞變量傳遞變量傳遞堆棧傳遞堆棧傳遞一、一、pcdos執(zhí)行流程執(zhí)行流程biosibmbioibmdos鍵盤命令鍵盤命令命令處理程序命令處理程序文件管理文件管理基本輸入基本輸入/輸出輸出bios用戶程序用戶程序用戶程序用戶程序romibmbioibmdos二、二、dos系統(tǒng)子程序功能系統(tǒng)子程序功能1、磁盤管理、磁盤管理2、內存管理、內存管理3、系統(tǒng)輸入、系統(tǒng)輸入/輸出輸出共共87個子程序個子程序三、系統(tǒng)功能調用三、系統(tǒng)功能調用 對對87個子程序進行編號,根據編號進行相關處理個子程序進行編號,根據編號進行相關處理格式:格式:1、入口參數、入口參數(可選可選)2、編號、編號ah3、int 21h編號編號ahin

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論