版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第第5章章匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)2 2主要內(nèi)容主要內(nèi)容掌握:掌握:n匯編語(yǔ)言與匯編程序的概念;匯編語(yǔ)言與匯編程序的概念;n匯編語(yǔ)言程序設(shè)計(jì)過(guò)程;匯編語(yǔ)言程序設(shè)計(jì)過(guò)程;n匯編語(yǔ)言源程序的結(jié)構(gòu)框架;匯編語(yǔ)言源程序的結(jié)構(gòu)框架;n常用偽指令及基本常用偽指令及基本DOS功能模塊的應(yīng)用。功能模塊的應(yīng)用。20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3 3第第5章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)主要內(nèi)容:主要內(nèi)容:n5.1 概述概述n
2、5.2 語(yǔ)句行構(gòu)成語(yǔ)句行構(gòu)成n5.3 偽指令偽指令n5.4 DOS系統(tǒng)功能及系統(tǒng)功能及BIOS調(diào)用調(diào)用n5.5 匯編語(yǔ)言程序設(shè)計(jì)舉例匯編語(yǔ)言程序設(shè)計(jì)舉例 學(xué)時(shí)分配:學(xué)時(shí)分配:n10學(xué)時(shí)學(xué)時(shí)第一節(jié)第一節(jié)匯編語(yǔ)言程序概述匯編語(yǔ)言程序概述mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)5 55.1 概述概述主要內(nèi)容:主要內(nèi)容:n5.1.1 匯編語(yǔ)言源程序匯編語(yǔ)言源程序n5.1.2 匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu) 20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中
3、北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)6 6n 機(jī)器語(yǔ)言機(jī)器語(yǔ)言二進(jìn)制數(shù)形式的指令和數(shù)據(jù)。二進(jìn)制數(shù)形式的指令和數(shù)據(jù)。B0 64 是什么意思?這就是機(jī)器語(yǔ)言。既不直觀,又是什么意思?這就是機(jī)器語(yǔ)言。既不直觀,又不易理解和記憶不易理解和記憶.而而MOV AL,64H ;很容易記憶;很容易記憶理解,這就是理解,這就是助記符助記符。 助記符助記符用便于記憶的英語(yǔ)單詞表示的指令用便于記憶的英語(yǔ)單詞表示的指令操作碼。它反映了指令的功能和主要特征操作碼。它反映了指令的功能和主要特征,便于人便于人們理解和記憶。們理解和記憶。5.1.1匯編語(yǔ)言源程序匯編語(yǔ)言源程序20222022年年3 3月月4 4日星期五
4、日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7 7n 匯編語(yǔ)言匯編語(yǔ)言是一種用是一種用助記符助記符來(lái)表示指令的操作來(lái)表示指令的操作碼和操作數(shù)碼和操作數(shù), ,用標(biāo)號(hào)和符號(hào)來(lái)代替地址、常量和變用標(biāo)號(hào)和符號(hào)來(lái)代替地址、常量和變量的符號(hào)語(yǔ)言。量的符號(hào)語(yǔ)言。 用匯編語(yǔ)言編寫(xiě)的程序不能由機(jī)器直接執(zhí)行,而用匯編語(yǔ)言編寫(xiě)的程序不能由機(jī)器直接執(zhí)行,而必須翻譯成由機(jī)器代碼組成的目標(biāo)程序,這個(gè)過(guò)程必須翻譯成由機(jī)器代碼組成的目標(biāo)程序,這個(gè)過(guò)程稱(chēng)為匯編。稱(chēng)為匯編。高級(jí)語(yǔ)言中稱(chēng)該過(guò)程為高級(jí)語(yǔ)言中稱(chēng)該過(guò)程為“解釋解釋”或或“編譯編譯”。執(zhí)行翻譯的程序稱(chēng)為。執(zhí)行翻譯的程序稱(chēng)為“匯編程序匯編程序”。5.1.1匯
5、編語(yǔ)言源程序匯編語(yǔ)言源程序20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8 8n 匯編語(yǔ)言匯編語(yǔ)言是面向具體計(jì)算機(jī)硬件的語(yǔ)言是面向具體計(jì)算機(jī)硬件的語(yǔ)言,和機(jī)器和機(jī)器密切相關(guān)。它最大缺點(diǎn)是可讀性差密切相關(guān)。它最大缺點(diǎn)是可讀性差,編程效率低。編程效率低。n 高級(jí)語(yǔ)言高級(jí)語(yǔ)言編程時(shí)不需要對(duì)機(jī)器指令系統(tǒng)有深編程時(shí)不需要對(duì)機(jī)器指令系統(tǒng)有深入了解。可讀性強(qiáng)入了解。可讀性強(qiáng), ,功能強(qiáng)。功能強(qiáng)。 為什么要用匯編語(yǔ)言為什么要用匯編語(yǔ)言?匯編語(yǔ)言編寫(xiě)的程序節(jié)匯編語(yǔ)言編寫(xiě)的程序節(jié)省內(nèi)存省內(nèi)存, ,執(zhí)行速度快執(zhí)行速度快, ,并為用戶直接控制對(duì)象提供并為用戶直
6、接控制對(duì)象提供了手段。故實(shí)時(shí)性要求很高的程序多采用匯編語(yǔ)了手段。故實(shí)時(shí)性要求很高的程序多采用匯編語(yǔ)言程序。言程序。 5.1.1匯編語(yǔ)言源程序匯編語(yǔ)言源程序20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)9 9n計(jì)算機(jī)語(yǔ)言:計(jì)算機(jī)語(yǔ)言:機(jī)器語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言高級(jí)語(yǔ)言面向機(jī)器面向機(jī)器 的語(yǔ)言的語(yǔ)言機(jī)器語(yǔ)言機(jī)器語(yǔ)言匯編語(yǔ)言匯編語(yǔ)言高級(jí)語(yǔ)言高級(jí)語(yǔ)言5.1.1匯編語(yǔ)言源程序匯編語(yǔ)言源程序20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1010n匯編語(yǔ)言源程序匯編語(yǔ)言源程序 用
7、助記符編寫(xiě)的程序用助記符編寫(xiě)的程序源程序的編譯程序源程序的編譯程序匯編程序匯編程序匯編語(yǔ)言匯編語(yǔ)言源程序源程序機(jī)器語(yǔ)言機(jī)器語(yǔ)言目標(biāo)程序目標(biāo)程序5.1.1匯編語(yǔ)言源程序匯編語(yǔ)言源程序20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1111匯編語(yǔ)言程序設(shè)計(jì)與執(zhí)行過(guò)程匯編語(yǔ)言程序設(shè)計(jì)與執(zhí)行過(guò)程n輸入?yún)R編語(yǔ)言源程序輸入?yún)R編語(yǔ)言源程序 源文件源文件 .ASMn匯編(編譯)匯編(編譯) 目標(biāo)文件目標(biāo)文件 .OBJn鏈接鏈接 可執(zhí)行文件可執(zhí)行文件 .EXEn調(diào)試調(diào)試 最終程序最終程序20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微
8、機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1212 匯編語(yǔ)言源程序通常由一個(gè)或幾個(gè)程序模塊匯編語(yǔ)言源程序通常由一個(gè)或幾個(gè)程序模塊組成組成, ,每個(gè)模塊一般由三個(gè)邏輯段組成:每個(gè)模塊一般由三個(gè)邏輯段組成: 數(shù)據(jù)段數(shù)據(jù)段存放數(shù)據(jù)、變量存放數(shù)據(jù)、變量 堆棧段堆棧段堆棧區(qū)域堆棧區(qū)域 代碼段代碼段存放程序指令存放程序指令5.1.2匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu) 20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1313n一個(gè)基本的匯編語(yǔ)言程序框架如下:一個(gè)基本的匯編語(yǔ)言程序框架如下: 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 數(shù)據(jù)段數(shù)據(jù)段堆棧段堆棧段代碼段代碼段20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1414n匯編語(yǔ)言的語(yǔ)句有兩種:匯編語(yǔ)言的語(yǔ)句有兩種: 指令性語(yǔ)句指令性語(yǔ)句由由80868086指令助記符構(gòu)成的語(yǔ)
10、句指令助記符構(gòu)成的語(yǔ)句 指示性語(yǔ)句指示性語(yǔ)句由偽指令構(gòu)成的語(yǔ)句由偽指令構(gòu)成的語(yǔ)句n指令性語(yǔ)句指令性語(yǔ)句的格式為:的格式為: 標(biāo)號(hào)標(biāo)號(hào): : 指令助記符指令助記符 目的操作數(shù),源操作數(shù)目的操作數(shù),源操作數(shù) ; ;注釋注釋n指示性語(yǔ)句指示性語(yǔ)句的格式為:的格式為: 名字名字 偽指令偽指令 操作數(shù)操作數(shù)1,1,操作數(shù)操作數(shù)2,2, ,操作數(shù)操作數(shù)n n ; ;注釋注釋 注:各部分之間至少要用一個(gè)空格作為分隔符注:各部分之間至少要用一個(gè)空格作為分隔符5.1.2匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu) 20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技
11、術(shù)1515n 指令性語(yǔ)句指令性語(yǔ)句由由CPUCPU執(zhí)行,每一條指令性語(yǔ)句都執(zhí)行,每一條指令性語(yǔ)句都有有一條機(jī)器碼指令與其對(duì)應(yīng)一條機(jī)器碼指令與其對(duì)應(yīng)。 指示性語(yǔ)句指示性語(yǔ)句由由匯編程序匯編程序執(zhí)行。它指出匯編程序執(zhí)行。它指出匯編程序應(yīng)如何對(duì)源程序進(jìn)行匯編,如何定義變量、分配應(yīng)如何對(duì)源程序進(jìn)行匯編,如何定義變量、分配存儲(chǔ)單元以及指示程序開(kāi)始和結(jié)束等。指示性語(yǔ)存儲(chǔ)單元以及指示程序開(kāi)始和結(jié)束等。指示性語(yǔ)句句無(wú)機(jī)器碼指令與其相對(duì)應(yīng)無(wú)機(jī)器碼指令與其相對(duì)應(yīng)。 在在形式形式上:帶不帶冒號(hào)上:帶不帶冒號(hào), ,是否可轉(zhuǎn)向它是否可轉(zhuǎn)向它 在在本質(zhì)本質(zhì)上:匯編時(shí)能否形成對(duì)應(yīng)的機(jī)器碼上:匯編時(shí)能否形成對(duì)應(yīng)的機(jī)器碼5.1
12、.2匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu) 20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1616指令性語(yǔ)句格式指令性語(yǔ)句格式n指令性語(yǔ)句指令性語(yǔ)句 由由CPU執(zhí)行的指令執(zhí)行的指令n語(yǔ)句格式:語(yǔ)句格式:標(biāo)號(hào):標(biāo)號(hào): 前綴前綴 助記符助記符 操作數(shù)操作數(shù),操作數(shù)操作數(shù) ;注釋?zhuān)蛔⑨屩噶畹姆?hào)地址,指令的符號(hào)地址,標(biāo)號(hào)后要有冒號(hào)標(biāo)號(hào)后要有冒號(hào)操作碼操作碼注釋前加分號(hào)注釋前加分號(hào)20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1717指示性語(yǔ)句格式指示性語(yǔ)句格式n指示性語(yǔ)句指示性語(yǔ)句
13、:由:由匯編程序匯編程序執(zhí)行,用于分配內(nèi)存執(zhí)行,用于分配內(nèi)存空間、定義變量、指示程序開(kāi)始和結(jié)束等空間、定義變量、指示程序開(kāi)始和結(jié)束等n語(yǔ)句格式:語(yǔ)句格式:名字名字 偽指令助記符偽指令助記符 操作數(shù)操作數(shù) ,操作數(shù),操作數(shù), ;注釋?zhuān)蛔⑨屪兞康姆?hào)地址變量的符號(hào)地址其后不加冒號(hào)其后不加冒號(hào)指示性語(yǔ)句中至少有一個(gè)操作數(shù)指示性語(yǔ)句中至少有一個(gè)操作數(shù)20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1818 語(yǔ)句的構(gòu)成元素:語(yǔ)句的構(gòu)成元素:n標(biāo)號(hào)標(biāo)號(hào)指令的符號(hào)地址,用來(lái)代表指令在存儲(chǔ)指令的符號(hào)地址,用來(lái)代表指令在存儲(chǔ)器中的地址。器中的地址。只能出現(xiàn)
14、在指令性語(yǔ)句中,標(biāo)號(hào)后只能出現(xiàn)在指令性語(yǔ)句中,標(biāo)號(hào)后應(yīng)加上冒號(hào)。應(yīng)加上冒號(hào)。n名字名字段、過(guò)程、變量的名字,用來(lái)代表它們段、過(guò)程、變量的名字,用來(lái)代表它們?cè)诖鎯?chǔ)器中的地址。在存儲(chǔ)器中的地址。只能出現(xiàn)在指示性語(yǔ)句中,只能出現(xiàn)在指示性語(yǔ)句中,名字后不加冒號(hào)。名字后不加冒號(hào)。n指令助記符指令助記符8086助記符、偽指令助記符、偽指令5.1.2匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu) 20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)1919n操作數(shù)操作數(shù)即指令的操作對(duì)象即指令的操作對(duì)象n對(duì)指令性語(yǔ)句對(duì)指令性語(yǔ)句0,1,2個(gè)個(gè)n對(duì)指示性語(yǔ)句對(duì)指示性
15、語(yǔ)句根據(jù)需要而定根據(jù)需要而定n操作數(shù)之間以逗號(hào)分隔操作數(shù)之間以逗號(hào)分隔n操作數(shù)可以是:操作數(shù)可以是:寄存器、存儲(chǔ)單元、常數(shù)或寄存器、存儲(chǔ)單元、常數(shù)或表達(dá)式表達(dá)式例如:例如:AX,DI+BX+10,200, 16*8+TABLE等等5.1.2匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu) 20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)2020n 注釋注釋以分號(hào)開(kāi)頭,放在指令后,也可單獨(dú)一行以分號(hào)開(kāi)頭,放在指令后,也可單獨(dú)一行注意注解的寫(xiě)法。要寫(xiě)指令注意注解的寫(xiě)法。要寫(xiě)指令(段段)在程序中的作用,在程序中的作用,而不要寫(xiě)指令的操作。而不要寫(xiě)指令的
16、操作。n 例如:例如:以下為同一條指令寫(xiě)的注釋以下為同一條指令寫(xiě)的注釋 1)MOV CX,100 ;傳送傳送100到到CX 2)MOV CX,100 ;循環(huán)計(jì)數(shù)器置初值循環(huán)計(jì)數(shù)器置初值 顯然,第二種寫(xiě)法要比第一種寫(xiě)法要好。顯然,第二種寫(xiě)法要比第一種寫(xiě)法要好。 5.1.2匯編語(yǔ)言源程序的結(jié)構(gòu)匯編語(yǔ)言源程序的結(jié)構(gòu) 20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)2121匯編語(yǔ)言的一個(gè)實(shí)例匯編語(yǔ)言的一個(gè)實(shí)例: 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名字名字標(biāo)號(hào)標(biāo)號(hào)第二節(jié)第二節(jié)語(yǔ)句行構(gòu)成語(yǔ)句行構(gòu)成mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)23235.2 語(yǔ)句行構(gòu)成語(yǔ)句行構(gòu)成主要內(nèi)容:主要內(nèi)容:n5.2.1 標(biāo)記標(biāo)記n5.2.2 表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大
18、學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)2424 5.2 語(yǔ)句行構(gòu)成語(yǔ)句行構(gòu)成n 語(yǔ)句行是由標(biāo)記及分隔符按照一定規(guī)則組織語(yǔ)句行是由標(biāo)記及分隔符按照一定規(guī)則組織起來(lái)的。起來(lái)的。語(yǔ)句行包括語(yǔ)句行包括常量常量、變量變量、標(biāo)號(hào)標(biāo)號(hào)及及表達(dá)表達(dá)式式。n 標(biāo)記是匯編語(yǔ)言源程序的最小的、具有意義標(biāo)記是匯編語(yǔ)言源程序的最小的、具有意義的單位,如的單位,如標(biāo)識(shí)符標(biāo)識(shí)符、保留字保留字、界符界符、常數(shù)常數(shù)和和注注釋釋?zhuān)羞@些都稱(chēng)為標(biāo)記。,所有這些都稱(chēng)為標(biāo)記。20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)2525 5.2.1 標(biāo)記標(biāo)記1.常量常量n 數(shù)
19、字常量數(shù)字常量n二進(jìn)制數(shù)二進(jìn)制數(shù),以以B結(jié)尾。如結(jié)尾。如01001101B。n十進(jìn)制數(shù)十進(jìn)制數(shù),如如85。n十六進(jìn)制數(shù)十六進(jìn)制數(shù),以以H結(jié)尾。第結(jié)尾。第1個(gè)數(shù)字為個(gè)數(shù)字為A-F時(shí),時(shí),前面應(yīng)加前面應(yīng)加0,如,如0F160H。20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)2626 1.常量常量n 字符串常量字符串常量n字符串:用引號(hào)括起來(lái)的字符串:用引號(hào)括起來(lái)的1個(gè)或多個(gè)字符。如個(gè)或多個(gè)字符。如ERROR!, a,匯編時(shí)被翻譯成對(duì)應(yīng)的匯編時(shí)被翻譯成對(duì)應(yīng)的ASCII碼碼45H,52H,52H,4FH,52H,21H和和61H。n用單引號(hào)引起
20、來(lái)的字符或字符串也代表常數(shù)。用單引號(hào)引起來(lái)的字符或字符串也代表常數(shù)。5.2.1 標(biāo)記標(biāo)記20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)27272.標(biāo)號(hào)標(biāo)號(hào)指令所在內(nèi)存單元的符號(hào)地址指令所在內(nèi)存單元的符號(hào)地址n 標(biāo)號(hào)三個(gè)屬性:標(biāo)號(hào)三個(gè)屬性: 段地址段地址:即標(biāo)號(hào)所在段的段地址;:即標(biāo)號(hào)所在段的段地址; 偏移量偏移量:標(biāo)號(hào)所代表存儲(chǔ)單元的段內(nèi)偏移地址:標(biāo)號(hào)所代表存儲(chǔ)單元的段內(nèi)偏移地址 類(lèi)類(lèi) 型型:NEAR或或FAR: 5.2.1 標(biāo)記標(biāo)記20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)
21、2828n 標(biāo)號(hào)類(lèi)型屬性:標(biāo)號(hào)類(lèi)型屬性: NEAR表示標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令表示標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令/ 調(diào)用調(diào)用指令在同一碼段內(nèi),跳轉(zhuǎn)時(shí)只需改變指令在同一碼段內(nèi),跳轉(zhuǎn)時(shí)只需改變IP即可。即可。 FAR標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令標(biāo)號(hào)所在語(yǔ)句與轉(zhuǎn)移指令/調(diào)用指令不調(diào)用指令不在同一代碼段內(nèi)。在同一代碼段內(nèi)。 如沒(méi)有對(duì)類(lèi)型進(jìn)行說(shuō)明,默認(rèn)為如沒(méi)有對(duì)類(lèi)型進(jìn)行說(shuō)明,默認(rèn)為NEAR。n 標(biāo)號(hào)通常作為標(biāo)號(hào)通常作為轉(zhuǎn)移指令轉(zhuǎn)移指令或或CALL指令指令的轉(zhuǎn)移地址的轉(zhuǎn)移地址5.2.1 標(biāo)記標(biāo)記20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)29293.變量變量 即
22、內(nèi)存中的存儲(chǔ)單元或數(shù)據(jù)區(qū)即內(nèi)存中的存儲(chǔ)單元或數(shù)據(jù)區(qū) 變量名變量名存儲(chǔ)單元存儲(chǔ)單元(數(shù)據(jù)區(qū)數(shù)據(jù)區(qū))的符號(hào)地址或名字的符號(hào)地址或名字n變量也有三個(gè)屬性變量也有三個(gè)屬性:n段地址段地址變量所在段的段地址變量所在段的段地址n偏移量偏移量變量單元地址與段首地址之間的位變量單元地址與段首地址之間的位移量。移量。n類(lèi)類(lèi) 型型有有BYTE、WORD和和DWORD三種三種n變量在程序中作為變量在程序中作為存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)被引用被引用。5.2.1 標(biāo)記標(biāo)記20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3030變量變量標(biāo)號(hào)標(biāo)號(hào)5.2.1 標(biāo)記標(biāo)記20
23、222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3131n標(biāo)號(hào)和變量名的使用規(guī)則標(biāo)號(hào)和變量名的使用規(guī)則n組成:組成:A-Z(不分大小寫(xiě)不分大小寫(xiě)), 0-9, ? . _ $n不能以數(shù)字開(kāi)頭,句號(hào)不能以數(shù)字開(kāi)頭,句號(hào)(.)只能作為首字符只能作為首字符n長(zhǎng)度小于長(zhǎng)度小于31個(gè)字符個(gè)字符n不能與保留字不能與保留字(指令助記符、偽指令、預(yù)定義指令助記符、偽指令、預(yù)定義符號(hào)等符號(hào)等)重名重名n不能重復(fù)定義不能重復(fù)定義n例如:例如: 正確的:正確的:LP1, AGAIN, NEXT, _GO, OK_1 錯(cuò)誤的:錯(cuò)誤的:4M, LOOP, AAA, #
24、HELP, +ONE5.2.1 標(biāo)記標(biāo)記20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)32324.保留字保留字 是一個(gè)匯編語(yǔ)言中預(yù)先保留下來(lái)的具是一個(gè)匯編語(yǔ)言中預(yù)先保留下來(lái)的具有特殊含義的符號(hào),只能作為固定的用途。有特殊含義的符號(hào),只能作為固定的用途。n例如例如:nMOVnINTnDBnSEGMENT ENDn凡是匯編的凡是匯編的(偽偽)指令、寄存器名等都是保留字指令、寄存器名等都是保留字5.2.1 標(biāo)記標(biāo)記20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)33335.2.2表達(dá)式表
25、達(dá)式n表達(dá)式是常數(shù)、寄存器、標(biāo)號(hào)、變量與運(yùn)算符表達(dá)式是常數(shù)、寄存器、標(biāo)號(hào)、變量與運(yùn)算符的組合。的組合。n匯編時(shí)按優(yōu)先規(guī)則對(duì)表達(dá)式進(jìn)行計(jì)算,計(jì)算出匯編時(shí)按優(yōu)先規(guī)則對(duì)表達(dá)式進(jìn)行計(jì)算,計(jì)算出具體的數(shù)值或地址,運(yùn)行時(shí)不能改變。具體的數(shù)值或地址,運(yùn)行時(shí)不能改變。n表達(dá)式中的運(yùn)算符有表達(dá)式中的運(yùn)算符有7 7類(lèi):算術(shù)、邏輯、關(guān)系、類(lèi):算術(shù)、邏輯、關(guān)系、取值、取地址、屬性、其它。取值、取地址、屬性、其它。20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)34345.2.2表達(dá)式表達(dá)式n有數(shù)值表達(dá)式和地址表達(dá)式兩種。有數(shù)值表達(dá)式和地址表達(dá)式兩種。n數(shù)值表達(dá)式
26、數(shù)值表達(dá)式:由各種常量與運(yùn)算符連接成的式子:由各種常量與運(yùn)算符連接成的式子n地址表達(dá)式地址表達(dá)式:將常量、變量、標(biāo)號(hào)、寄存器內(nèi)容:將常量、變量、標(biāo)號(hào)、寄存器內(nèi)容和運(yùn)算符、操作符合成的有意義的式子和運(yùn)算符、操作符合成的有意義的式子n單個(gè)常量、變量、標(biāo)號(hào)是表達(dá)式的最簡(jiǎn)形式。單個(gè)常量、變量、標(biāo)號(hào)是表達(dá)式的最簡(jiǎn)形式。20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3535n 用用于數(shù)值表達(dá)式于數(shù)值表達(dá)式,例:,例:MOV AX,4*1024 匯編后的形式為匯編后的形式為: MOV AX,4096 n 用于地址表達(dá)式用于地址表達(dá)式, 例例: LEA
27、 SI,TAB+3 若若TAB的偏移地址為的偏移地址為1000H,則,則 匯編后的形式為:匯編后的形式為: LEA SI,1003H 算術(shù)運(yùn)算符算術(shù)運(yùn)算符 +、-、*、/,MOD5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3636n 邏輯運(yùn)算符只能用于數(shù)值表達(dá)式中邏輯運(yùn)算符只能用于數(shù)值表達(dá)式中 例:例: MOV CL,36H AND 0FH 經(jīng)匯編后:經(jīng)匯編后:MOV CL,06Hn 注意,不要把邏輯運(yùn)算符與邏輯運(yùn)算指令混淆注意,不要把邏輯運(yùn)算符與邏輯運(yùn)算指令混淆 例:例:AND AX, 3FC0H AND 0F
28、F00H 匯編后源操作數(shù)被翻譯為:匯編后源操作數(shù)被翻譯為:3F00H,所以,所以上述指令與上述指令與AND AX, 3F00H等價(jià)。等價(jià)。邏輯運(yùn)算符邏輯運(yùn)算符 AND、OR、XOR、NOT5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3737n 這些邏輯運(yùn)算符也是這些邏輯運(yùn)算符也是8086/8088的指令助記的指令助記符符, 會(huì)不會(huì)造成混亂呢會(huì)不會(huì)造成混亂呢? n 例:例:AND DX, PORT_VAR AND 0FEHn 不會(huì)的不會(huì)的, 前者在前者在指令執(zhí)行時(shí)進(jìn)行指令執(zhí)行時(shí)進(jìn)行, 而后者在時(shí)而后者在時(shí)匯匯編進(jìn)行
29、的。編進(jìn)行的。邏輯運(yùn)算符邏輯運(yùn)算符 AND、OR、XOR、NOT5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3838n關(guān)系運(yùn)算的結(jié)果是一個(gè)邏輯值:關(guān)系運(yùn)算的結(jié)果是一個(gè)邏輯值:真真或或假假n關(guān)系為真,結(jié)果為全關(guān)系為真,結(jié)果為全1n關(guān)系為假,結(jié)果為全關(guān)系為假,結(jié)果為全0關(guān)系運(yùn)算符關(guān)系運(yùn)算符EQ、NE、LT、 LE、 GT、GE5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)3939n例:例: MOV BX,PORT GT 300H 若若PO
30、RT的值大于的值大于300H,則匯編后為:,則匯編后為: MOV BX,0FFFFH 否則匯編后為:否則匯編后為: MOV BX,0關(guān)系運(yùn)算符關(guān)系運(yùn)算符EQ、NE、LT、 LE、 GT、GE5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4040n SEG:取變量:取變量/標(biāo)號(hào)的段地址標(biāo)號(hào)的段地址n OFFSET:取變量:取變量/標(biāo)號(hào)的偏移地址標(biāo)號(hào)的偏移地址例:例: VAR DB 12H MOV BX,OFFSETVAR ;取變量;取變量VAR的偏移地址的偏移地址 MOV AX,SEG VAR ;取變量;取變量VAR
31、的段地址的段地址取地址運(yùn)算符取地址運(yùn)算符SEG、OFFSET5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4141n 注意,以下指令的異同:注意,以下指令的異同: MOV BX, OFFSET VAR LEA BX, VARn OFFSET只能取靜態(tài)的偏移地址;只能取靜態(tài)的偏移地址;n LEA指令既可取靜態(tài)的偏移地址,也可取動(dòng)態(tài)指令既可取靜態(tài)的偏移地址,也可取動(dòng)態(tài)的偏移地址的偏移地址。 取地址運(yùn)算符取地址運(yùn)算符SEG、OFFSET5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北
32、大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4242n TYPE 取變量的類(lèi)型(取變量的類(lèi)型(1,2,4)n LENGTH 取所定義變量的長(zhǎng)度取所定義變量的長(zhǎng)度 (即變量中元素的個(gè)數(shù))(即變量中元素的個(gè)數(shù))n SIZE 取所定義存儲(chǔ)區(qū)的字節(jié)數(shù)取所定義存儲(chǔ)區(qū)的字節(jié)數(shù) (=TYPE*LENGTH)取值運(yùn)算符取值運(yùn)算符TYPE、LENGTH、SIZE5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4343 ;取值運(yùn)算符取值運(yùn)算符TYPE、LENGTH、SIZE5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日
33、星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4444取值運(yùn)算符取值運(yùn)算符TYPE、LENGTH、SIZE5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4545取值運(yùn)算符取值運(yùn)算符TYPE、LENGTH、SIZE5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4646取值運(yùn)算符取值運(yùn)算符TYPE、LENGTH、SIZE5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微
34、機(jī)原理及接口技術(shù)4747屬性運(yùn)算符屬性運(yùn)算符PTRn 用來(lái)對(duì)存儲(chǔ)單元規(guī)定類(lèi)型用來(lái)對(duì)存儲(chǔ)單元規(guī)定類(lèi)型, 通常和偽指令通常和偽指令BYTE,WORD等連起來(lái)使用。等連起來(lái)使用。n 格式:格式: PTR 類(lèi)型類(lèi)型BYTE, WORD, DWORD, NEAR, FAR5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4848n BYTE、WORD、DWORD 用于描述數(shù)據(jù)存儲(chǔ)單元用于描述數(shù)據(jù)存儲(chǔ)單元(變量變量)地址地址n NEAR、FAR 用于描述轉(zhuǎn)移、調(diào)用的目的地址用于描述轉(zhuǎn)移、調(diào)用的目的地址屬性運(yùn)算符屬性運(yùn)算符PTR5.
35、2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)4949n 例:例: MOV BYTE PTRDI,0 ;字節(jié)類(lèi)型字節(jié)類(lèi)型 MOV WORD PTRDI,0 ;字類(lèi)型字類(lèi)型 MOV DI,0B5H ;類(lèi)型不定類(lèi)型不定屬性運(yùn)算符屬性運(yùn)算符PTR5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)5050n PTR也可用來(lái)進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換也可用來(lái)進(jìn)行強(qiáng)制類(lèi)型轉(zhuǎn)換n 例:例: STR1 DW ? ;STR1定義為字類(lèi)型定義為字類(lèi)型 MOV AX, STR
36、1 ;合法合法 MOV AL, STR1 ;非法非法 MOV AL, BYTE PTR STR1 ;合法合法屬性運(yùn)算符屬性運(yùn)算符PTR5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)5151其它運(yùn)算符其它運(yùn)算符-指令中用方括號(hào)表示存儲(chǔ)器操作數(shù),方括號(hào)里指令中用方括號(hào)表示存儲(chǔ)器操作數(shù),方括號(hào)里的內(nèi)容表示操作數(shù)的偏移地址。的內(nèi)容表示操作數(shù)的偏移地址。n 例如:例如:MOV AX5.2.2表達(dá)式表達(dá)式20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)5252運(yùn)算符運(yùn)算符
37、“:”(冒號(hào)冒號(hào))跟在某個(gè)段寄存器跟在某個(gè)段寄存器 (DS、ES、SS或或CS)之后表示段超越,用來(lái)指定一個(gè)存儲(chǔ)之后表示段超越,用來(lái)指定一個(gè)存儲(chǔ)器操作數(shù)的段屬性,而不管其原來(lái)隱含的段是什器操作數(shù)的段屬性,而不管其原來(lái)隱含的段是什么么n 例如:例如: MOV AX其它運(yùn)算符其它運(yùn)算符-5.2.2表達(dá)式表達(dá)式第三節(jié)第三節(jié)偽指令偽指令mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)54545.3 偽指令偽指令主要內(nèi)容:主要內(nèi)容:n5.3.1 數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令n5.3.2
38、符號(hào)定義偽指令符號(hào)定義偽指令n5.3.3 段定義偽指令段定義偽指令n5.3.4 過(guò)程定義偽指令過(guò)程定義偽指令n5.3.5 宏命令偽指令宏命令偽指令n5.3.6 模塊定義偽指令模塊定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)55555.3 偽指令偽指令n數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令n符號(hào)定義偽指令符號(hào)定義偽指令n段定義和段寄存器指定偽指令段定義和段寄存器指定偽指令n過(guò)程定義偽指令過(guò)程定義偽指令n結(jié)束偽指令結(jié)束偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)56565
39、.3.1數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令n用于定義數(shù)據(jù)區(qū)中變量的類(lèi)型用于定義數(shù)據(jù)區(qū)中變量的類(lèi)型n格式:格式: 變量名變量名 偽指令助記符偽指令助記符 操作數(shù),操作數(shù), ;注釋?zhuān)蛔⑨?0222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)5757偽指令助記符偽指令助記符nDB 定義的變量為字節(jié)型定義的變量為字節(jié)型nDW 定義的變量為字類(lèi)型(雙字節(jié))定義的變量為字類(lèi)型(雙字節(jié))nDD 定義的變量為雙字型(定義的變量為雙字型(4字節(jié))字節(jié))nDQ 定義的變量為定義的變量為4字型(字型(8字節(jié))字節(jié))nDT 定義的變量為定義的變量為10字節(jié)型字節(jié)型5.3.1
40、數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)5858兩個(gè)定義的不同之處:兩個(gè)定義的不同之處:DBAB ;41H在低字節(jié),在低字節(jié),42H在高字節(jié)在高字節(jié)DW AB ;42H在低字節(jié),在低字節(jié),41H在高字節(jié)在高字節(jié)5.3.1數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)5959n偽指令的性質(zhì)決定所定義變量的屬性;偽指令的性質(zhì)決定所定義變量的屬性;n定義字符串必須用定義字符串必須用DB偽指令偽指令n例:例: DATA1 DB
41、 ABCD,66HABCD41H42H43H44H66H5.3.1數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)6060例:例:DATA_B DB 10,5,10HDATA_W DW 100H,-4DATA_D DD 0FFFBH匯編后的內(nèi)存分配情況匯編后的內(nèi)存分配情況如右圖所示。如右圖所示。05H10H00H01HFCHFFHFBHFFH00H00H0AH20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)6161n重復(fù)操作符重復(fù)操作符為一個(gè)數(shù)據(jù)區(qū)的各單元
42、設(shè)置相同的為一個(gè)數(shù)據(jù)區(qū)的各單元設(shè)置相同的初值初值n格式:格式: 變量名變量名 偽指令助記符偽指令助記符 n DUP(初值,(初值,)n例:例: DW 20 DUP(0) DB 3 DUP(22H,11H,?),?)隨機(jī)數(shù)隨機(jī)數(shù)5.3.1數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)6262n 操作數(shù)操作數(shù)?用來(lái)保留存儲(chǔ)空間用來(lái)保留存儲(chǔ)空間,但不存入數(shù)據(jù)但不存入數(shù)據(jù).n 例:例:ABC DB 0,1,2,3,4,OK,$ RSV DW ?,?,?,?,?,?,?,?n 重復(fù)的數(shù)據(jù)可以使用重復(fù)操作符重復(fù)的數(shù)據(jù)可以
43、使用重復(fù)操作符DUP,如上面如上面RSV亦可寫(xiě)成亦可寫(xiě)成: RSV DW 8 DUP(?)n 若操作數(shù)中若使用若操作數(shù)中若使用$,則表示的是地址計(jì)數(shù)器的則表示的是地址計(jì)數(shù)器的當(dāng)前值當(dāng)前值5.3.1數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)6363n 例:例: TABLE DB 10 DUP(?) BUFFER DW TABLE, $+3設(shè)設(shè)TABLE的偏移地址為的偏移地址為0080H,則匯編后如右圖所示:則匯編后如右圖所示:BUFFER0080H80HTABLE008AH008BH008CH008DH.8
44、FH00H00H0089H10個(gè)個(gè)5.3.1數(shù)據(jù)定義偽指令數(shù)據(jù)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)64645.3.2符號(hào)定義偽指令符號(hào)定義偽指令n 格式:格式: 符號(hào)名符號(hào)名 EQU (=) 表達(dá)式表達(dá)式n 操作:把一個(gè)表達(dá)式用一個(gè)符號(hào)表示,以后操作:把一個(gè)表達(dá)式用一個(gè)符號(hào)表示,以后凡出現(xiàn)該表達(dá)式的地方都可用這個(gè)符號(hào)表示。凡出現(xiàn)該表達(dá)式的地方都可用這個(gè)符號(hào)表示。類(lèi)似于類(lèi)似于C語(yǔ)言中的語(yǔ)言中的#define。n 符號(hào)定義偽指令有兩種:符號(hào)定義偽指令有兩種:EQU,=20222022年年3 3月月4 4日星期五日星期五中
45、北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)6565n用用EQU定義的符號(hào)未清除前定義的符號(hào)未清除前,不能重新定義。不能重新定義。清除清除EQU定義可用定義可用PURGE偽指令。偽指令。n用用”=”定義的符號(hào)可在任何時(shí)候進(jìn)行重定義定義的符號(hào)可在任何時(shí)候進(jìn)行重定義n二者均不占用存儲(chǔ)空間二者均不占用存儲(chǔ)空間,僅是給符號(hào)賦值僅是給符號(hào)賦值 5.3.2符號(hào)定義偽指令符號(hào)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)66661.等值偽指令等值偽指令EQUn 格式為:符號(hào)名格式為:符號(hào)名 EQU 表達(dá)式表達(dá)式 或:新符號(hào)名或:新符號(hào)
46、名 EQU 老符號(hào)名老符號(hào)名n 例例: CONSTANT EQU 100NEW_PORT EQU PORT_VAL+1n EQU偽指令在未解除前,不能重新定義。偽指令在未解除前,不能重新定義。5.3.2符號(hào)定義偽指令符號(hào)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)67672.等號(hào)等號(hào)(=)偽指令偽指令n 與與EQU類(lèi)似,但允許重新定義類(lèi)似,但允許重新定義n 例:例:EMP = 7;值為;值為7 EMP = EMP+1 ;值為;值為85.3.2符號(hào)定義偽指令符號(hào)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北
47、大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)68683.解除偽指令解除偽指令PURGEn 已用已用EQU定義的符號(hào),可用定義的符號(hào),可用PURGE解除,再解除,再 重新定義。重新定義。n 例:例: PURGE NEW_PORT NEW_PORT EQU POTR_VAL+85.3.2符號(hào)定義偽指令符號(hào)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)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符號(hào)定義偽指令符號(hào)定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)70705.3.3段定義偽指令段定義偽指令n 匯編語(yǔ)言程序是按段來(lái)組織程序和數(shù)據(jù)的。匯編語(yǔ)言程序是按段來(lái)組織程序和數(shù)據(jù)的。n 和存儲(chǔ)器的物理段相對(duì)應(yīng),匯編語(yǔ)言程序中的和存儲(chǔ)器的物理段相對(duì)應(yīng),匯編語(yǔ)言程序中的段稱(chēng)為邏輯段。匯編連接后被映射到物理段中。段稱(chēng)為邏輯段。匯編連接后被映射到物理段中。n
49、 說(shuō)明邏輯段的起始和結(jié)束;說(shuō)明邏輯段的起始和結(jié)束;n 說(shuō)明不同程序模塊中同類(lèi)邏輯段之間的聯(lián)系形說(shuō)明不同程序模塊中同類(lèi)邏輯段之間的聯(lián)系形態(tài)態(tài)n 三類(lèi)段:代碼三類(lèi)段:代碼(程序程序)、數(shù)據(jù)、堆棧、數(shù)據(jù)、堆棧n 段定義偽指令段定義偽指令SEGMENT ENDS ASSUME ORG20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7171段名段名 SEGMENT 定位類(lèi)型定位類(lèi)型 組合類(lèi)型組合類(lèi)型 類(lèi)別類(lèi)別 段名段名 ENDS說(shuō)明邏輯說(shuō)明邏輯段的起點(diǎn)段的起點(diǎn)說(shuō)明不同模塊說(shuō)明不同模塊中同名段的組中同名段的組和連接方式和連接方式5.3.3段定義偽指令
50、段定義偽指令方括號(hào)中為可選項(xiàng),規(guī)定了邏輯段的一些其他特性方括號(hào)中為可選項(xiàng),規(guī)定了邏輯段的一些其他特性20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7272DATA SEGMENT MEM1 DB 11H,22HMEM2 DW 1234HDATA ENDS5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7373n 這兩個(gè)偽指令總是成對(duì)出現(xiàn),二者前面的段名應(yīng)這兩個(gè)偽指令總是成對(duì)出現(xiàn),二者前面的段名應(yīng)一致。一致。SEGMENT說(shuō)明了一個(gè)段的開(kāi)始,說(shuō)明了一
51、個(gè)段的開(kāi)始,ENDS說(shuō)說(shuō)明了一個(gè)段的結(jié)束。明了一個(gè)段的結(jié)束。n 對(duì)數(shù)據(jù)段和堆棧段,段中的語(yǔ)句一般是變量定義。對(duì)數(shù)據(jù)段和堆棧段,段中的語(yǔ)句一般是變量定義。對(duì)代碼段則是指令語(yǔ)句。對(duì)代碼段則是指令語(yǔ)句。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7474邏輯段從一個(gè)節(jié)邏輯段從一個(gè)節(jié) (16個(gè)字個(gè)字節(jié)節(jié)) 的邊界開(kāi)始。的邊界開(kāi)始。即即段的起始地址應(yīng)能被段的起始地址應(yīng)能被16整除整除, 或段或段起始物理地址應(yīng)為起始物理地址應(yīng)為0H。默認(rèn)類(lèi)型默認(rèn)類(lèi)型SEGMENT和和ENDS
52、偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7575,即段可以從任,即段可以從任何地址開(kāi)始。何地址開(kāi)始。邏輯段從字邊界開(kāi)始。即段的起始地邏輯段從字邊界開(kāi)始。即段的起始地址必須是偶數(shù)。址必須是偶數(shù)。邏輯段從頁(yè)邊界開(kāi)始。邏輯段從頁(yè)邊界開(kāi)始。256字節(jié)稱(chēng)為一字節(jié)稱(chēng)為一頁(yè),故段的起始物理地址應(yīng)為頁(yè),故段的起始物理地址應(yīng)為00H。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口
53、技術(shù)7676 說(shuō)明不同模塊中同名段的組合方式。說(shuō)明不同模塊中同名段的組合方式。n PUBLIC : 所有此類(lèi)型的同名段組合成一個(gè)邏輯所有此類(lèi)型的同名段組合成一個(gè)邏輯段,公用一個(gè)段地址,運(yùn)行時(shí)裝入同一個(gè)物理段中段,公用一個(gè)段地址,運(yùn)行時(shí)裝入同一個(gè)物理段中n COMMON : 所有此類(lèi)型的同名段具有相同的起所有此類(lèi)型的同名段具有相同的起始地址始地址(覆蓋覆蓋),共享相同的存儲(chǔ)區(qū)域。,共享相同的存儲(chǔ)區(qū)域。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7777 2) 組合類(lèi)
54、型組合類(lèi)型nAT : 按絕對(duì)地址定位,段地址就是按絕對(duì)地址定位,段地址就是表達(dá)式的值。表達(dá)式的值。nSTACK : 專(zhuān)用于說(shuō)明堆棧段,組合方式同專(zhuān)用于說(shuō)明堆棧段,組合方式同PUBLICnNONE表示本段不與任何段連接,為系統(tǒng)默認(rèn)方式表示本段不與任何段連接,為系統(tǒng)默認(rèn)方式nMEMORY表示本段在連接時(shí)定位在所有段之上,表示本段在連接時(shí)定位在所有段之上,即高地址處。即高地址處。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)78783) 類(lèi)別類(lèi)別n 用單引號(hào)括起來(lái)的字符串
55、。所有同類(lèi)別的段被用單引號(hào)括起來(lái)的字符串。所有同類(lèi)別的段被安排在安排在連續(xù)的存儲(chǔ)區(qū)域連續(xù)的存儲(chǔ)區(qū)域中。中。SEGMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)7979如:在模塊如:在模塊1中有段定義:中有段定義: seg1 SEGMENT PARA STACK stack seg1 ENDS 在模塊在模塊2中有段定義:中有段定義: seg2 SEGMENT PARA STACK stack seg2 ENDS則連接時(shí)這兩個(gè)段被安排在一起。則連接時(shí)這兩個(gè)段被安排在一起。SE
56、GMENT和和ENDS偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8080n在代碼段中,還必須明確段和段寄存器的關(guān)系,在代碼段中,還必須明確段和段寄存器的關(guān)系,這由這由ASSUME語(yǔ)句來(lái)指定。語(yǔ)句來(lái)指定。n說(shuō)明所定義邏輯段的性質(zhì)說(shuō)明所定義邏輯段的性質(zhì)n格式:格式: ASSUME 段寄存器名:段名段寄存器名:段名 ,段寄存器名:段名,段寄存器名:段名,n如:如:ASSUME CS:code, DS:data, ES:data語(yǔ)句中的語(yǔ)句中的code和和data為段名。為段名。ASSUME偽指
57、令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8181n 這個(gè)語(yǔ)句說(shuō)明:這個(gè)語(yǔ)句說(shuō)明: 1. CS將指向名字為將指向名字為CODE的代碼段的代碼段 2. DS和和ES將指向名字為將指向名字為DATA的數(shù)據(jù)段的數(shù)據(jù)段n 告訴匯編程序用告訴匯編程序用SEGMENT偽操作定義過(guò)的段偽操作定義過(guò)的段的段地址將要存放在的段地址將要存放在哪個(gè)段寄存器哪個(gè)段寄存器中。中。n 把段地址裝入段寄存器(稱(chēng)為把段地址裝入段寄存器(稱(chēng)為段初始化段初始化)的操)的操作需要由程序自己完成作需要由程序自己完成。ASSUME偽
58、指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8282n ASSUME偽指令只是告知匯編程序有關(guān)段寄存器偽指令只是告知匯編程序有關(guān)段寄存器與段的關(guān)系與段的關(guān)系,并沒(méi)有給段寄存器賦初值并沒(méi)有給段寄存器賦初值 MOVAX,DATA MOVDS,AX MOVES,AXn 將段基址裝入段寄存器將段基址裝入段寄存器。如果程序中用到堆棧段,。如果程序中用到堆棧段,則則SS也需裝入實(shí)際的初值。也需裝入實(shí)際的初值。n 代碼段基地址代碼段基地址不需要程序員裝入不需要程序員裝入CS寄存器,而寄存器,而由初始化程序
59、自動(dòng)裝入。由初始化程序自動(dòng)裝入。ASSUME偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8383段初始化段初始化20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8484n ORG規(guī)定了段內(nèi)的指令或數(shù)據(jù)存放的開(kāi)始地址規(guī)定了段內(nèi)的指令或數(shù)據(jù)存放的開(kāi)始地址(偏移地址的初值偏移地址的初值),其格式:,其格式:ORG n 表達(dá)式的值即為開(kāi)始地址,從此地址起連續(xù)存放表達(dá)式的值即為開(kāi)始地址,從此地址起連續(xù)存放程序或數(shù)據(jù)。程序或數(shù)據(jù)。n 例:例: A
60、BC SEGMENT ORG 0100H BEGIN: ABC ENDS 指令從指令從0100H開(kāi)始存放開(kāi)始存放ORG偽指令偽指令5.3.3段定義偽指令段定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8585n用于定義一個(gè)過(guò)程體用于定義一個(gè)過(guò)程體n格式:格式: 過(guò)程名過(guò)程名 PROC NEAR / FAR RET 過(guò)程名過(guò)程名 ENDP過(guò)程入口的符號(hào)地址過(guò)程入口的符號(hào)地址5.3.4過(guò)程定義偽指令過(guò)程定義偽指令20222022年年3 3月月4 4日星期五日星期五中北大學(xué)中北大學(xué)微機(jī)原理及接口技術(shù)微機(jī)原理及接口技術(shù)8686過(guò)程的含
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年國(guó)際spa原料供應(yīng)合同
- 2024年度版權(quán)質(zhì)押合同版權(quán)價(jià)值評(píng)估與質(zhì)押期限
- 風(fēng)控課件教學(xué)課件
- 2024年土地使用權(quán)抵押購(gòu)房合同
- 2024年商標(biāo)許可使用合同:某知名品牌
- 合同履約成本的會(huì)計(jì)處理分錄-記賬實(shí)操
- 2024年度個(gè)人向公司提供的借款合同模板
- 2024天然氣企業(yè)信息安全保護(hù)合同
- 2024年度大數(shù)據(jù)可視化設(shè)計(jì)合同
- 2024年店面租賃與管理合同
- 軍隊(duì)文職考試《公共科目》試題及答案指導(dǎo)(2024年)
- 山東省青島市2023-2024學(xué)年七年級(jí)上學(xué)期期末考試數(shù)學(xué)試題(含答案)
- 2024下半年江蘇蘇州城市學(xué)院招聘管理崗位工作人員27人歷年高頻難、易錯(cuò)點(diǎn)500題模擬試題附帶答案詳解
- 小學(xué)心理健康課教案分享-《身體“紅綠燈”》
- 2022年信息科技課程新課標(biāo)義務(wù)教育信息科技課程標(biāo)準(zhǔn)2022版解讀課件
- 小學(xué)生防火安全教育課件
- 口語(yǔ)交際:商量(教學(xué)設(shè)計(jì))2023-2024學(xué)年統(tǒng)編版語(yǔ)文二年級(jí)上冊(cè)
- 鄉(xiāng)土嵌合:農(nóng)村社會(huì)工作的實(shí)踐面向與行動(dòng)路徑
- 2024年大學(xué)生信息素養(yǎng)大賽(省賽)考試題庫(kù)(含答案)
- 國(guó)資國(guó)企企業(yè)學(xué)習(xí)二十屆三中全會(huì)精神專(zhuān)題培訓(xùn)
- 影片制片人合同
評(píng)論
0/150
提交評(píng)論