第五章匯編語言程序設計_第1頁
第五章匯編語言程序設計_第2頁
第五章匯編語言程序設計_第3頁
第五章匯編語言程序設計_第4頁
第五章匯編語言程序設計_第5頁
已閱讀5頁,還剩170頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第第5章章匯編語言程序設計匯編語言程序設計20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術2 2主要內容主要內容掌握:掌握:n匯編語言與匯編程序的概念;匯編語言與匯編程序的概念;n匯編語言程序設計過程;匯編語言程序設計過程;n匯編語言源程序的結構框架;匯編語言源程序的結構框架;n常用偽指令及基本常用偽指令及基本DOS功能模塊的應用。功能模塊的應用。20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3 3第第5章章 匯編語言程序設計匯編語言程序設計主要內容:主要內容:n5.1 概述概述n

2、5.2 語句行構成語句行構成n5.3 偽指令偽指令n5.4 DOS系統功能及系統功能及BIOS調用調用n5.5 匯編語言程序設計舉例匯編語言程序設計舉例 學時分配:學時分配:n10學時學時第一節第一節匯編語言程序概述匯編語言程序概述mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術5 55.1 概述概述主要內容:主要內容:n5.1.1 匯編語言源程序匯編語言源程序n5.1.2 匯編語言源程序的結構匯編語言源程序的結構 20222022年年3 3月月4 4日星期五日星期五中北大學中

3、北大學微機原理及接口技術微機原理及接口技術6 6n 機器語言機器語言二進制數形式的指令和數據。二進制數形式的指令和數據。B0 64 是什么意思?這就是機器語言。既不直觀,又是什么意思?這就是機器語言。既不直觀,又不易理解和記憶不易理解和記憶.而而MOV AL,64H ;很容易記憶;很容易記憶理解,這就是理解,這就是助記符助記符。 助記符助記符用便于記憶的英語單詞表示的指令用便于記憶的英語單詞表示的指令操作碼。它反映了指令的功能和主要特征操作碼。它反映了指令的功能和主要特征,便于人便于人們理解和記憶。們理解和記憶。5.1.1匯編語言源程序匯編語言源程序20222022年年3 3月月4 4日星期五

4、日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7 7n 匯編語言匯編語言是一種用是一種用助記符助記符來表示指令的操作來表示指令的操作碼和操作數碼和操作數, ,用標號和符號來代替地址、常量和變用標號和符號來代替地址、常量和變量的符號語言。量的符號語言。 用匯編語言編寫的程序不能由機器直接執行,而用匯編語言編寫的程序不能由機器直接執行,而必須翻譯成由機器代碼組成的目標程序,這個過程必須翻譯成由機器代碼組成的目標程序,這個過程稱為匯編。稱為匯編。高級語言中稱該過程為高級語言中稱該過程為“解釋解釋”或或“編譯編譯”。執行翻譯的程序稱為。執行翻譯的程序稱為“匯編程序匯編程序”。5.1.1匯

5、編語言源程序匯編語言源程序20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8 8n 匯編語言匯編語言是面向具體計算機硬件的語言是面向具體計算機硬件的語言,和機器和機器密切相關。它最大缺點是可讀性差密切相關。它最大缺點是可讀性差,編程效率低。編程效率低。n 高級語言高級語言編程時不需要對機器指令系統有深編程時不需要對機器指令系統有深入了解。可讀性強入了解。可讀性強, ,功能強。功能強。 為什么要用匯編語言為什么要用匯編語言?匯編語言編寫的程序節匯編語言編寫的程序節省內存省內存, ,執行速度快執行速度快, ,并為用戶直接控制對象提供并為用戶直

6、接控制對象提供了手段。故實時性要求很高的程序多采用匯編語了手段。故實時性要求很高的程序多采用匯編語言程序。言程序。 5.1.1匯編語言源程序匯編語言源程序20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術9 9n計算機語言:計算機語言:機器語言機器語言匯編語言匯編語言高級語言高級語言面向機器面向機器 的語言的語言機器語言機器語言匯編語言匯編語言高級語言高級語言5.1.1匯編語言源程序匯編語言源程序20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1010n匯編語言源程序匯編語言源程序 用

7、助記符編寫的程序用助記符編寫的程序源程序的編譯程序源程序的編譯程序匯編程序匯編程序匯編語言匯編語言源程序源程序機器語言機器語言目標程序目標程序5.1.1匯編語言源程序匯編語言源程序20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1111匯編語言程序設計與執行過程匯編語言程序設計與執行過程n輸入匯編語言源程序輸入匯編語言源程序 源文件源文件 .ASMn匯編(編譯)匯編(編譯) 目標文件目標文件 .OBJn鏈接鏈接 可執行文件可執行文件 .EXEn調試調試 最終程序最終程序20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微

8、機原理及接口技術微機原理及接口技術1212 匯編語言源程序通常由一個或幾個程序模塊匯編語言源程序通常由一個或幾個程序模塊組成組成, ,每個模塊一般由三個邏輯段組成:每個模塊一般由三個邏輯段組成: 數據段數據段存放數據、變量存放數據、變量 堆棧段堆棧段堆棧區域堆棧區域 代碼段代碼段存放程序指令存放程序指令5.1.2匯編語言源程序的結構匯編語言源程序的結構 20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1313n一個基本的匯編語言程序框架如下:一個基本的匯編語言程序框架如下: data SEGMENT data ENDS stack SEG

9、MENT PARA stack DB 100 DUP(stack) stack ENDS code SEGMENT ASSUME CS:code, DS:data, ES:data start: MOV AX, data MOV DS, AX MOV ES, AX MOV AL, 4CH INT 21H code ENDS END start 數據段數據段堆棧段堆棧段代碼段代碼段20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1414n匯編語言的語句有兩種:匯編語言的語句有兩種: 指令性語句指令性語句由由80868086指令助記符構成的語

10、句指令助記符構成的語句 指示性語句指示性語句由偽指令構成的語句由偽指令構成的語句n指令性語句指令性語句的格式為:的格式為: 標號標號: : 指令助記符指令助記符 目的操作數,源操作數目的操作數,源操作數 ; ;注釋注釋n指示性語句指示性語句的格式為:的格式為: 名字名字 偽指令偽指令 操作數操作數1,1,操作數操作數2,2, ,操作數操作數n n ; ;注釋注釋 注:各部分之間至少要用一個空格作為分隔符注:各部分之間至少要用一個空格作為分隔符5.1.2匯編語言源程序的結構匯編語言源程序的結構 20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技

11、術1515n 指令性語句指令性語句由由CPUCPU執行,每一條指令性語句都執行,每一條指令性語句都有有一條機器碼指令與其對應一條機器碼指令與其對應。 指示性語句指示性語句由由匯編程序匯編程序執行。它指出匯編程序執行。它指出匯編程序應如何對源程序進行匯編,如何定義變量、分配應如何對源程序進行匯編,如何定義變量、分配存儲單元以及指示程序開始和結束等。指示性語存儲單元以及指示程序開始和結束等。指示性語句句無機器碼指令與其相對應無機器碼指令與其相對應。 在在形式形式上:帶不帶冒號上:帶不帶冒號, ,是否可轉向它是否可轉向它 在在本質本質上:匯編時能否形成對應的機器碼上:匯編時能否形成對應的機器碼5.1

12、.2匯編語言源程序的結構匯編語言源程序的結構 20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1616指令性語句格式指令性語句格式n指令性語句指令性語句 由由CPU執行的指令執行的指令n語句格式:語句格式:標號:標號: 前綴前綴 助記符助記符 操作數操作數,操作數操作數 ;注釋;注釋指令的符號地址,指令的符號地址,標號后要有冒號標號后要有冒號操作碼操作碼注釋前加分號注釋前加分號20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1717指示性語句格式指示性語句格式n指示性語句指示性語句

13、:由:由匯編程序匯編程序執行,用于分配內存執行,用于分配內存空間、定義變量、指示程序開始和結束等空間、定義變量、指示程序開始和結束等n語句格式:語句格式:名字名字 偽指令助記符偽指令助記符 操作數操作數 ,操作數,操作數, ;注釋;注釋變量的符號地址變量的符號地址其后不加冒號其后不加冒號指示性語句中至少有一個操作數指示性語句中至少有一個操作數20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1818 語句的構成元素:語句的構成元素:n標號標號指令的符號地址,用來代表指令在存儲指令的符號地址,用來代表指令在存儲器中的地址。器中的地址。只能出現

14、在指令性語句中,標號后只能出現在指令性語句中,標號后應加上冒號。應加上冒號。n名字名字段、過程、變量的名字,用來代表它們段、過程、變量的名字,用來代表它們在存儲器中的地址。在存儲器中的地址。只能出現在指示性語句中,只能出現在指示性語句中,名字后不加冒號。名字后不加冒號。n指令助記符指令助記符8086助記符、偽指令助記符、偽指令5.1.2匯編語言源程序的結構匯編語言源程序的結構 20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術1919n操作數操作數即指令的操作對象即指令的操作對象n對指令性語句對指令性語句0,1,2個個n對指示性語句對指示性

15、語句根據需要而定根據需要而定n操作數之間以逗號分隔操作數之間以逗號分隔n操作數可以是:操作數可以是:寄存器、存儲單元、常數或寄存器、存儲單元、常數或表達式表達式例如:例如:AX,DI+BX+10,200, 16*8+TABLE等等5.1.2匯編語言源程序的結構匯編語言源程序的結構 20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術2020n 注釋注釋以分號開頭,放在指令后,也可單獨一行以分號開頭,放在指令后,也可單獨一行注意注解的寫法。要寫指令注意注解的寫法。要寫指令(段段)在程序中的作用,在程序中的作用,而不要寫指令的操作。而不要寫指令的

16、操作。n 例如:例如:以下為同一條指令寫的注釋以下為同一條指令寫的注釋 1)MOV CX,100 ;傳送傳送100到到CX 2)MOV CX,100 ;循環計數器置初值循環計數器置初值 顯然,第二種寫法要比第一種寫法要好。顯然,第二種寫法要比第一種寫法要好。 5.1.2匯編語言源程序的結構匯編語言源程序的結構 20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術2121匯編語言的一個實例匯編語言的一個實例: hello.asm Hello DB Hello, world!,0DH,0AH,$ ASSUME DS:DATA ,CS:PROGST

17、ART: MOV AX,DATA MOV DS,AX LEA DX,hello ;取字符串首地址取字符串首地址 MOV AH,9 INT 21H ;顯示字符串顯示字符串 MOV AH,4CH INT 21H ;退回退回DOS名字名字標號標號第二節第二節語句行構成語句行構成mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術23235.2 語句行構成語句行構成主要內容:主要內容:n5.2.1 標記標記n5.2.2 表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大

18、學中北大學微機原理及接口技術微機原理及接口技術2424 5.2 語句行構成語句行構成n 語句行是由標記及分隔符按照一定規則組織語句行是由標記及分隔符按照一定規則組織起來的。起來的。語句行包括語句行包括常量常量、變量變量、標號標號及及表達表達式式。n 標記是匯編語言源程序的最小的、具有意義標記是匯編語言源程序的最小的、具有意義的單位,如的單位,如標識符標識符、保留字保留字、界符界符、常數常數和和注注釋釋,所有這些都稱為標記。,所有這些都稱為標記。20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術2525 5.2.1 標記標記1.常量常量n 數

19、字常量數字常量n二進制數二進制數,以以B結尾。如結尾。如01001101B。n十進制數十進制數,如如85。n十六進制數十六進制數,以以H結尾。第結尾。第1個數字為個數字為A-F時,時,前面應加前面應加0,如,如0F160H。20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術2626 1.常量常量n 字符串常量字符串常量n字符串:用引號括起來的字符串:用引號括起來的1個或多個字符。如個或多個字符。如ERROR!, a,匯編時被翻譯成對應的匯編時被翻譯成對應的ASCII碼碼45H,52H,52H,4FH,52H,21H和和61H。n用單引號引起

20、來的字符或字符串也代表常數。用單引號引起來的字符或字符串也代表常數。5.2.1 標記標記20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術27272.標號標號指令所在內存單元的符號地址指令所在內存單元的符號地址n 標號三個屬性:標號三個屬性: 段地址段地址:即標號所在段的段地址;:即標號所在段的段地址; 偏移量偏移量:標號所代表存儲單元的段內偏移地址:標號所代表存儲單元的段內偏移地址 類類 型型:NEAR或或FAR: 5.2.1 標記標記20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術

21、2828n 標號類型屬性:標號類型屬性: NEAR表示標號所在語句與轉移指令表示標號所在語句與轉移指令/ 調用調用指令在同一碼段內,跳轉時只需改變指令在同一碼段內,跳轉時只需改變IP即可。即可。 FAR標號所在語句與轉移指令標號所在語句與轉移指令/調用指令不調用指令不在同一代碼段內。在同一代碼段內。 如沒有對類型進行說明,默認為如沒有對類型進行說明,默認為NEAR。n 標號通常作為標號通常作為轉移指令轉移指令或或CALL指令指令的轉移地址的轉移地址5.2.1 標記標記20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術29293.變量變量 即

22、內存中的存儲單元或數據區即內存中的存儲單元或數據區 變量名變量名存儲單元存儲單元(數據區數據區)的符號地址或名字的符號地址或名字n變量也有三個屬性變量也有三個屬性:n段地址段地址變量所在段的段地址變量所在段的段地址n偏移量偏移量變量單元地址與段首地址之間的位變量單元地址與段首地址之間的位移量。移量。n類類 型型有有BYTE、WORD和和DWORD三種三種n變量在程序中作為變量在程序中作為存儲器操作數存儲器操作數被引用被引用。5.2.1 標記標記20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3030變量變量標號標號5.2.1 標記標記20

23、222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3131n標號和變量名的使用規則標號和變量名的使用規則n組成:組成:A-Z(不分大小寫不分大小寫), 0-9, ? . _ $n不能以數字開頭,句號不能以數字開頭,句號(.)只能作為首字符只能作為首字符n長度小于長度小于31個字符個字符n不能與保留字不能與保留字(指令助記符、偽指令、預定義指令助記符、偽指令、預定義符號等符號等)重名重名n不能重復定義不能重復定義n例如:例如: 正確的:正確的:LP1, AGAIN, NEXT, _GO, OK_1 錯誤的:錯誤的:4M, LOOP, AAA, #

24、HELP, +ONE5.2.1 標記標記20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術32324.保留字保留字 是一個匯編語言中預先保留下來的具是一個匯編語言中預先保留下來的具有特殊含義的符號,只能作為固定的用途。有特殊含義的符號,只能作為固定的用途。n例如例如:nMOVnINTnDBnSEGMENT ENDn凡是匯編的凡是匯編的(偽偽)指令、寄存器名等都是保留字指令、寄存器名等都是保留字5.2.1 標記標記20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術33335.2.2表達式表

25、達式n表達式是常數、寄存器、標號、變量與運算符表達式是常數、寄存器、標號、變量與運算符的組合。的組合。n匯編時按優先規則對表達式進行計算,計算出匯編時按優先規則對表達式進行計算,計算出具體的數值或地址,運行時不能改變。具體的數值或地址,運行時不能改變。n表達式中的運算符有表達式中的運算符有7 7類:算術、邏輯、關系、類:算術、邏輯、關系、取值、取地址、屬性、其它。取值、取地址、屬性、其它。20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術34345.2.2表達式表達式n有數值表達式和地址表達式兩種。有數值表達式和地址表達式兩種。n數值表達式

26、數值表達式:由各種常量與運算符連接成的式子:由各種常量與運算符連接成的式子n地址表達式地址表達式:將常量、變量、標號、寄存器內容:將常量、變量、標號、寄存器內容和運算符、操作符合成的有意義的式子和運算符、操作符合成的有意義的式子n單個常量、變量、標號是表達式的最簡形式。單個常量、變量、標號是表達式的最簡形式。20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3535n 用用于數值表達式于數值表達式,例:,例:MOV AX,4*1024 匯編后的形式為匯編后的形式為: MOV AX,4096 n 用于地址表達式用于地址表達式, 例例: LEA

27、 SI,TAB+3 若若TAB的偏移地址為的偏移地址為1000H,則,則 匯編后的形式為:匯編后的形式為: LEA SI,1003H 算術運算符算術運算符 +、-、*、/,MOD5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3636n 邏輯運算符只能用于數值表達式中邏輯運算符只能用于數值表達式中 例:例: MOV CL,36H AND 0FH 經匯編后:經匯編后:MOV CL,06Hn 注意,不要把邏輯運算符與邏輯運算指令混淆注意,不要把邏輯運算符與邏輯運算指令混淆 例:例:AND AX, 3FC0H AND 0F

28、F00H 匯編后源操作數被翻譯為:匯編后源操作數被翻譯為:3F00H,所以,所以上述指令與上述指令與AND AX, 3F00H等價。等價。邏輯運算符邏輯運算符 AND、OR、XOR、NOT5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3737n 這些邏輯運算符也是這些邏輯運算符也是8086/8088的指令助記的指令助記符符, 會不會造成混亂呢會不會造成混亂呢? n 例:例:AND DX, PORT_VAR AND 0FEHn 不會的不會的, 前者在前者在指令執行時進行指令執行時進行, 而后者在時而后者在時匯匯編進行

29、的。編進行的。邏輯運算符邏輯運算符 AND、OR、XOR、NOT5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3838n關系運算的結果是一個邏輯值:關系運算的結果是一個邏輯值:真真或或假假n關系為真,結果為全關系為真,結果為全1n關系為假,結果為全關系為假,結果為全0關系運算符關系運算符EQ、NE、LT、 LE、 GT、GE5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術3939n例:例: MOV BX,PORT GT 300H 若若PO

30、RT的值大于的值大于300H,則匯編后為:,則匯編后為: MOV BX,0FFFFH 否則匯編后為:否則匯編后為: MOV BX,0關系運算符關系運算符EQ、NE、LT、 LE、 GT、GE5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4040n SEG:取變量:取變量/標號的段地址標號的段地址n OFFSET:取變量:取變量/標號的偏移地址標號的偏移地址例:例: VAR DB 12H MOV BX,OFFSETVAR ;取變量;取變量VAR的偏移地址的偏移地址 MOV AX,SEG VAR ;取變量;取變量VAR

31、的段地址的段地址取地址運算符取地址運算符SEG、OFFSET5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4141n 注意,以下指令的異同:注意,以下指令的異同: MOV BX, OFFSET VAR LEA BX, VARn OFFSET只能取靜態的偏移地址;只能取靜態的偏移地址;n LEA指令既可取靜態的偏移地址,也可取動態指令既可取靜態的偏移地址,也可取動態的偏移地址的偏移地址。 取地址運算符取地址運算符SEG、OFFSET5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北

32、大學微機原理及接口技術微機原理及接口技術4242n TYPE 取變量的類型(取變量的類型(1,2,4)n LENGTH 取所定義變量的長度取所定義變量的長度 (即變量中元素的個數)(即變量中元素的個數)n SIZE 取所定義存儲區的字節數取所定義存儲區的字節數 (=TYPE*LENGTH)取值運算符取值運算符TYPE、LENGTH、SIZE5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4343 ;取值運算符取值運算符TYPE、LENGTH、SIZE5.2.2表達式表達式20222022年年3 3月月4 4日星期五日

33、星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4444取值運算符取值運算符TYPE、LENGTH、SIZE5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4545取值運算符取值運算符TYPE、LENGTH、SIZE5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4646取值運算符取值運算符TYPE、LENGTH、SIZE5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微

34、機原理及接口技術4747屬性運算符屬性運算符PTRn 用來對存儲單元規定類型用來對存儲單元規定類型, 通常和偽指令通常和偽指令BYTE,WORD等連起來使用。等連起來使用。n 格式:格式: PTR 類型類型BYTE, WORD, DWORD, NEAR, FAR5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4848n BYTE、WORD、DWORD 用于描述數據存儲單元用于描述數據存儲單元(變量變量)地址地址n NEAR、FAR 用于描述轉移、調用的目的地址用于描述轉移、調用的目的地址屬性運算符屬性運算符PTR5.

35、2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術4949n 例:例: MOV BYTE PTRDI,0 ;字節類型字節類型 MOV WORD PTRDI,0 ;字類型字類型 MOV DI,0B5H ;類型不定類型不定屬性運算符屬性運算符PTR5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術5050n PTR也可用來進行強制類型轉換也可用來進行強制類型轉換n 例:例: STR1 DW ? ;STR1定義為字類型定義為字類型 MOV AX, STR

36、1 ;合法合法 MOV AL, STR1 ;非法非法 MOV AL, BYTE PTR STR1 ;合法合法屬性運算符屬性運算符PTR5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術5151其它運算符其它運算符-指令中用方括號表示存儲器操作數,方括號里指令中用方括號表示存儲器操作數,方括號里的內容表示操作數的偏移地址。的內容表示操作數的偏移地址。n 例如:例如:MOV AX5.2.2表達式表達式20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術5252運算符運算符

37、“:”(冒號冒號)跟在某個段寄存器跟在某個段寄存器 (DS、ES、SS或或CS)之后表示段超越,用來指定一個存儲之后表示段超越,用來指定一個存儲器操作數的段屬性,而不管其原來隱含的段是什器操作數的段屬性,而不管其原來隱含的段是什么么n 例如:例如: MOV AX其它運算符其它運算符-5.2.2表達式表達式第三節第三節偽指令偽指令mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術54545.3 偽指令偽指令主要內容:主要內容:n5.3.1 數據定義偽指令數據定義偽指令n5.3.2

38、符號定義偽指令符號定義偽指令n5.3.3 段定義偽指令段定義偽指令n5.3.4 過程定義偽指令過程定義偽指令n5.3.5 宏命令偽指令宏命令偽指令n5.3.6 模塊定義偽指令模塊定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術55555.3 偽指令偽指令n數據定義偽指令數據定義偽指令n符號定義偽指令符號定義偽指令n段定義和段寄存器指定偽指令段定義和段寄存器指定偽指令n過程定義偽指令過程定義偽指令n結束偽指令結束偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術56565

39、.3.1數據定義偽指令數據定義偽指令n用于定義數據區中變量的類型用于定義數據區中變量的類型n格式:格式: 變量名變量名 偽指令助記符偽指令助記符 操作數,操作數, ;注釋;注釋20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術5757偽指令助記符偽指令助記符nDB 定義的變量為字節型定義的變量為字節型nDW 定義的變量為字類型(雙字節)定義的變量為字類型(雙字節)nDD 定義的變量為雙字型(定義的變量為雙字型(4字節)字節)nDQ 定義的變量為定義的變量為4字型(字型(8字節)字節)nDT 定義的變量為定義的變量為10字節型字節型5.3.1

40、數據定義偽指令數據定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術5858兩個定義的不同之處:兩個定義的不同之處:DBAB ;41H在低字節,在低字節,42H在高字節在高字節DW AB ;42H在低字節,在低字節,41H在高字節在高字節5.3.1數據定義偽指令數據定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術5959n偽指令的性質決定所定義變量的屬性;偽指令的性質決定所定義變量的屬性;n定義字符串必須用定義字符串必須用DB偽指令偽指令n例:例: DATA1 DB

41、 ABCD,66HABCD41H42H43H44H66H5.3.1數據定義偽指令數據定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術6060例:例:DATA_B DB 10,5,10HDATA_W DW 100H,-4DATA_D DD 0FFFBH匯編后的內存分配情況匯編后的內存分配情況如右圖所示。如右圖所示。05H10H00H01HFCHFFHFBHFFH00H00H0AH20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術6161n重復操作符重復操作符為一個數據區的各單元

42、設置相同的為一個數據區的各單元設置相同的初值初值n格式:格式: 變量名變量名 偽指令助記符偽指令助記符 n DUP(初值,(初值,)n例:例: DW 20 DUP(0) DB 3 DUP(22H,11H,?),?)隨機數隨機數5.3.1數據定義偽指令數據定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術6262n 操作數操作數?用來保留存儲空間用來保留存儲空間,但不存入數據但不存入數據.n 例:例:ABC DB 0,1,2,3,4,OK,$ RSV DW ?,?,?,?,?,?,?,?n 重復的數據可以使用重復操作符重復的數據可以

43、使用重復操作符DUP,如上面如上面RSV亦可寫成亦可寫成: RSV DW 8 DUP(?)n 若操作數中若使用若操作數中若使用$,則表示的是地址計數器的則表示的是地址計數器的當前值當前值5.3.1數據定義偽指令數據定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術6363n 例:例: TABLE DB 10 DUP(?) BUFFER DW TABLE, $+3設設TABLE的偏移地址為的偏移地址為0080H,則匯編后如右圖所示:則匯編后如右圖所示:BUFFER0080H80HTABLE008AH008BH008CH008DH.8

44、FH00H00H0089H10個個5.3.1數據定義偽指令數據定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術64645.3.2符號定義偽指令符號定義偽指令n 格式:格式: 符號名符號名 EQU (=) 表達式表達式n 操作:把一個表達式用一個符號表示,以后操作:把一個表達式用一個符號表示,以后凡出現該表達式的地方都可用這個符號表示。凡出現該表達式的地方都可用這個符號表示。類似于類似于C語言中的語言中的#define。n 符號定義偽指令有兩種:符號定義偽指令有兩種:EQU,=20222022年年3 3月月4 4日星期五日星期五中

45、北大學中北大學微機原理及接口技術微機原理及接口技術6565n用用EQU定義的符號未清除前定義的符號未清除前,不能重新定義。不能重新定義。清除清除EQU定義可用定義可用PURGE偽指令。偽指令。n用用”=”定義的符號可在任何時候進行重定義定義的符號可在任何時候進行重定義n二者均不占用存儲空間二者均不占用存儲空間,僅是給符號賦值僅是給符號賦值 5.3.2符號定義偽指令符號定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術66661.等值偽指令等值偽指令EQUn 格式為:符號名格式為:符號名 EQU 表達式表達式 或:新符號名或:新符號

46、名 EQU 老符號名老符號名n 例例: CONSTANT EQU 100NEW_PORT EQU PORT_VAL+1n EQU偽指令在未解除前,不能重新定義。偽指令在未解除前,不能重新定義。5.3.2符號定義偽指令符號定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術67672.等號等號(=)偽指令偽指令n 與與EQU類似,但允許重新定義類似,但允許重新定義n 例:例:EMP = 7;值為;值為7 EMP = EMP+1 ;值為;值為85.3.2符號定義偽指令符號定義偽指令20222022年年3 3月月4 4日星期五日星期五中北

47、大學中北大學微機原理及接口技術微機原理及接口技術68683.解除偽指令解除偽指令PURGEn 已用已用EQU定義的符號,可用定義的符號,可用PURGE解除,再解除,再 重新定義。重新定義。n 例:例: PURGE NEW_PORT NEW_PORT EQU POTR_VAL+85.3.2符號定義偽指令符號定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術6969例:例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTRSI+BP GOTO = JMP MOV AX , TEN MO

48、V CX , COUNT ADD DIST , FIVE DIST = WORD PTRSI+BP+1 ADD DIST, AX GOTO LABEL定義定義引用引用5.3.2符號定義偽指令符號定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術70705.3.3段定義偽指令段定義偽指令n 匯編語言程序是按段來組織程序和數據的。匯編語言程序是按段來組織程序和數據的。n 和存儲器的物理段相對應,匯編語言程序中的和存儲器的物理段相對應,匯編語言程序中的段稱為邏輯段。匯編連接后被映射到物理段中。段稱為邏輯段。匯編連接后被映射到物理段中。n

49、 說明邏輯段的起始和結束;說明邏輯段的起始和結束;n 說明不同程序模塊中同類邏輯段之間的聯系形說明不同程序模塊中同類邏輯段之間的聯系形態態n 三類段:代碼三類段:代碼(程序程序)、數據、堆棧、數據、堆棧n 段定義偽指令段定義偽指令SEGMENT ENDS ASSUME ORG20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7171段名段名 SEGMENT 定位類型定位類型 組合類型組合類型 類別類別 段名段名 ENDS說明邏輯說明邏輯段的起點段的起點說明不同模塊說明不同模塊中同名段的組中同名段的組和連接方式和連接方式5.3.3段定義偽指令

50、段定義偽指令方括號中為可選項,規定了邏輯段的一些其他特性方括號中為可選項,規定了邏輯段的一些其他特性20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7272DATA SEGMENT MEM1 DB 11H,22HMEM2 DW 1234HDATA ENDS5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7373n 這兩個偽指令總是成對出現,二者前面的段名應這兩個偽指令總是成對出現,二者前面的段名應一致。一致。SEGMENT說明了一個段的開始,說明了一

51、個段的開始,ENDS說說明了一個段的結束。明了一個段的結束。n 對數據段和堆棧段,段中的語句一般是變量定義。對數據段和堆棧段,段中的語句一般是變量定義。對代碼段則是指令語句。對代碼段則是指令語句。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7474邏輯段從一個節邏輯段從一個節 (16個字個字節節) 的邊界開始。的邊界開始。即即段的起始地址應能被段的起始地址應能被16整除整除, 或段或段起始物理地址應為起始物理地址應為0H。默認類型默認類型SEGMENT和和ENDS

52、偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7575,即段可以從任,即段可以從任何地址開始。何地址開始。邏輯段從字邊界開始。即段的起始地邏輯段從字邊界開始。即段的起始地址必須是偶數。址必須是偶數。邏輯段從頁邊界開始。邏輯段從頁邊界開始。256字節稱為一字節稱為一頁,故段的起始物理地址應為頁,故段的起始物理地址應為00H。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口

53、技術7676 說明不同模塊中同名段的組合方式。說明不同模塊中同名段的組合方式。n PUBLIC : 所有此類型的同名段組合成一個邏輯所有此類型的同名段組合成一個邏輯段,公用一個段地址,運行時裝入同一個物理段中段,公用一個段地址,運行時裝入同一個物理段中n COMMON : 所有此類型的同名段具有相同的起所有此類型的同名段具有相同的起始地址始地址(覆蓋覆蓋),共享相同的存儲區域。,共享相同的存儲區域。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7777 2) 組合類

54、型組合類型nAT : 按絕對地址定位,段地址就是按絕對地址定位,段地址就是表達式的值。表達式的值。nSTACK : 專用于說明堆棧段,組合方式同專用于說明堆棧段,組合方式同PUBLICnNONE表示本段不與任何段連接,為系統默認方式表示本段不與任何段連接,為系統默認方式nMEMORY表示本段在連接時定位在所有段之上,表示本段在連接時定位在所有段之上,即高地址處。即高地址處。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術78783) 類別類別n 用單引號括起來的字符串

55、。所有同類別的段被用單引號括起來的字符串。所有同類別的段被安排在安排在連續的存儲區域連續的存儲區域中。中。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術7979如:在模塊如:在模塊1中有段定義:中有段定義: seg1 SEGMENT PARA STACK stack seg1 ENDS 在模塊在模塊2中有段定義:中有段定義: seg2 SEGMENT PARA STACK stack seg2 ENDS則連接時這兩個段被安排在一起。則連接時這兩個段被安排在一起。SE

56、GMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8080n在代碼段中,還必須明確段和段寄存器的關系,在代碼段中,還必須明確段和段寄存器的關系,這由這由ASSUME語句來指定。語句來指定。n說明所定義邏輯段的性質說明所定義邏輯段的性質n格式:格式: ASSUME 段寄存器名:段名段寄存器名:段名 ,段寄存器名:段名,段寄存器名:段名,n如:如:ASSUME CS:code, DS:data, ES:data語句中的語句中的code和和data為段名。為段名。ASSUME偽指

57、令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8181n 這個語句說明:這個語句說明: 1. CS將指向名字為將指向名字為CODE的代碼段的代碼段 2. DS和和ES將指向名字為將指向名字為DATA的數據段的數據段n 告訴匯編程序用告訴匯編程序用SEGMENT偽操作定義過的段偽操作定義過的段的段地址將要存放在的段地址將要存放在哪個段寄存器哪個段寄存器中。中。n 把段地址裝入段寄存器(稱為把段地址裝入段寄存器(稱為段初始化段初始化)的操)的操作需要由程序自己完成作需要由程序自己完成。ASSUME偽

58、指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8282n ASSUME偽指令只是告知匯編程序有關段寄存器偽指令只是告知匯編程序有關段寄存器與段的關系與段的關系,并沒有給段寄存器賦初值并沒有給段寄存器賦初值 MOVAX,DATA MOVDS,AX MOVES,AXn 將段基址裝入段寄存器將段基址裝入段寄存器。如果程序中用到堆棧段,。如果程序中用到堆棧段,則則SS也需裝入實際的初值。也需裝入實際的初值。n 代碼段基地址代碼段基地址不需要程序員裝入不需要程序員裝入CS寄存器,而寄存器,而由初始化程序

59、自動裝入。由初始化程序自動裝入。ASSUME偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8383段初始化段初始化20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8484n ORG規定了段內的指令或數據存放的開始地址規定了段內的指令或數據存放的開始地址(偏移地址的初值偏移地址的初值),其格式:,其格式:ORG n 表達式的值即為開始地址,從此地址起連續存放表達式的值即為開始地址,從此地址起連續存放程序或數據。程序或數據。n 例:例: A

60、BC SEGMENT ORG 0100H BEGIN: ABC ENDS 指令從指令從0100H開始存放開始存放ORG偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8585n用于定義一個過程體用于定義一個過程體n格式:格式: 過程名過程名 PROC NEAR / FAR RET 過程名過程名 ENDP過程入口的符號地址過程入口的符號地址5.3.4過程定義偽指令過程定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學中北大學微機原理及接口技術微機原理及接口技術8686過程的含

溫馨提示

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

評論

0/150

提交評論