微型計(jì)算機(jī)原理及應(yīng)用ppt課件_第1頁(yè)
微型計(jì)算機(jī)原理及應(yīng)用ppt課件_第2頁(yè)
微型計(jì)算機(jī)原理及應(yīng)用ppt課件_第3頁(yè)
微型計(jì)算機(jī)原理及應(yīng)用ppt課件_第4頁(yè)
微型計(jì)算機(jī)原理及應(yīng)用ppt課件_第5頁(yè)
已閱讀5頁(yè),還剩123頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、主講教師:物理學(xué)及電子信息工程系主講教師:物理學(xué)及電子信息工程系 王玉平王玉平電子郵件:電子郵件:聯(lián)系電話:聯(lián)系電話:* * * * * * * * *微型計(jì)算機(jī)原理及運(yùn)用微型計(jì)算機(jī)原理及運(yùn)用微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)24.1 4.1 匯編言語(yǔ)的格式匯編言語(yǔ)的格式4.2 4.2 語(yǔ)句行的構(gòu)成語(yǔ)句行的構(gòu)成4.3 4.3 指示性語(yǔ)句指示性語(yǔ)句4.4 4.4 指令語(yǔ)句指令語(yǔ)句4.5 4.5 匯編言語(yǔ)程式設(shè)計(jì)及舉例匯編言語(yǔ)程式設(shè)計(jì)及舉例第第 4 4 章章 匯編言語(yǔ)程序設(shè)計(jì)匯編言語(yǔ)程序設(shè)計(jì)微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章

2、 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)34.1 4.1 匯編言語(yǔ)的格式匯編言語(yǔ)的格式微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)44.1.180864.1.18086匯編言語(yǔ)程序的一個(gè)例子匯編言語(yǔ)程序的一個(gè)例子MY_DATA SEGMENT MY_DATA SEGMENT ;定義數(shù)據(jù)段;定義數(shù)據(jù)段 SUM DB ? SUM DB ? ;為符號(hào);為符號(hào)SUMSUM保管一個(gè)字節(jié)保管一個(gè)字節(jié)MY_DATA ENDS MY_DATA ENDS ;定義數(shù)據(jù)段終了;定義數(shù)據(jù)段終了MY_CODE SEGMENT MY_CODE SEGMENT ;定義碼段;定義碼段AS

3、SUME CSASSUME CS: MY_CODEMY_CODE,DSDS: MY_DATA MY_DATA ;規(guī)定;規(guī)定CSCS和和DSDS的內(nèi)容的內(nèi)容PORT_VAL EQU 3 PORT_VAL EQU 3 ;端口的符號(hào)名;端口的符號(hào)名GOGO: MOV AXMOV AX,MY_DATA MY_DATA ;DSDS初始化為初始化為MY_DATAMY_DATA MOV DS MOV DS,AXAX MOV SUM MOV SUM,0 0 ;清;清SUMSUM單元單元CYCLECYCLE: CMP SUMCMP SUM,100 100 ;SUMSUM單元與單元與100100相比較相比較 JN

4、A NOT_DONE JNA NOT_DONE ;假設(shè)未超越,轉(zhuǎn)至;假設(shè)未超越,轉(zhuǎn)至NOT_DONENOT_DONE MOV AL MOV AL,SUM SUM ;假設(shè)超越,把;假設(shè)超越,把SUMSUM單元的內(nèi)容單元的內(nèi)容 OUT PORT_VALOUT PORT_VAL,AL AL ;經(jīng)過(guò);經(jīng)過(guò)ALAL輸出輸出 HLT HLT ;然后停機(jī);然后停機(jī)NOT DONE:IN ALNOT DONE:IN AL,PORT_VAL PORT_VAL ;未超越時(shí),輸入下一個(gè)字節(jié);未超越時(shí),輸入下一個(gè)字節(jié) ADD SUMADD SUM,AL AL ;與以前的結(jié)果累加;與以前的結(jié)果累加 JMP CYCLE

5、JMP CYCLE ;轉(zhuǎn)至;轉(zhuǎn)至CYCLECYCLEMY CODE ENDS MY CODE ENDS ;碼段終了;碼段終了END GO END GO ;整個(gè)程序終了;整個(gè)程序終了 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)5由上例看出由上例看出80868086匯編的一個(gè)語(yǔ)句行由以下匯編的一個(gè)語(yǔ)句行由以下4 4個(gè)部分組成:個(gè)部分組成:標(biāo)號(hào)或稱號(hào)標(biāo)號(hào)或稱號(hào) 操作碼操作碼 操作數(shù)操作數(shù) ;注釋;注釋各部分之間至少要用一個(gè)空格作為間隔。各部分之間至少要用一個(gè)空格作為間隔。IBMIBM宏匯編對(duì)宏匯編對(duì)于語(yǔ)句行的格式是自在的,但假設(shè)寫成格式化就便于閱讀,于語(yǔ)

6、句行的格式是自在的,但假設(shè)寫成格式化就便于閱讀,建議讀者按格式化來(lái)寫語(yǔ)句行。另外,建議讀者按格式化來(lái)寫語(yǔ)句行。另外,IBMIBM宏匯編并不要求宏匯編并不要求一個(gè)語(yǔ)句只能寫一行,一個(gè)語(yǔ)句可以有后續(xù)行,規(guī)定以字符一個(gè)語(yǔ)句只能寫一行,一個(gè)語(yǔ)句可以有后續(xù)行,規(guī)定以字符“& &作為后續(xù)行的標(biāo)志。作為后續(xù)行的標(biāo)志。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)64.1.2 80864.1.2 8086匯編言語(yǔ)源程序的格式匯編言語(yǔ)源程序的格式80868086的匯編言語(yǔ)的源程序是分段的,由假設(shè)干個(gè)段構(gòu)成一個(gè)源程序。的匯編言語(yǔ)的源程序是分段的,由假設(shè)干

7、個(gè)段構(gòu)成一個(gè)源程序。源程序的普通格式為:源程序的普通格式為:NAME1 SEGMENTNAME1 SEGMENT 語(yǔ)句語(yǔ)句 語(yǔ)句語(yǔ)句NAME1 ENDSNAME1 ENDSNAME2 SEGMENTNAME2 SEGMENT 語(yǔ)句語(yǔ)句 語(yǔ)句語(yǔ)句NAME2 ENDSNAME2 ENDS ENDEND標(biāo)號(hào)標(biāo)號(hào) 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)7每一個(gè)段有一個(gè)稱號(hào),以符號(hào)每一個(gè)段有一個(gè)稱號(hào),以符號(hào)SEGMENTSEGMENT作為段的開場(chǎng),作為段的開場(chǎng),以語(yǔ)句以語(yǔ)句ENDSENDS作為段的終了。這兩者都必需有稱號(hào),而且稱號(hào)作為段的終了。這兩者都必

8、需有稱號(hào),而且稱號(hào)必需一樣。必需一樣。由假設(shè)干個(gè)段組成一個(gè)源程序,整個(gè)源程序以語(yǔ)句由假設(shè)干個(gè)段組成一個(gè)源程序,整個(gè)源程序以語(yǔ)句ENDEND作為終了。作為終了??傊?,總之,80868086的源程序是由假設(shè)干段組成的,而一個(gè)段又的源程序是由假設(shè)干段組成的,而一個(gè)段又是由假設(shè)干個(gè)語(yǔ)句行組成的。所以,語(yǔ)句行是匯編言語(yǔ)源程是由假設(shè)干個(gè)語(yǔ)句行組成的。所以,語(yǔ)句行是匯編言語(yǔ)源程序的根底。序的根底。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)84.2 4.2 語(yǔ)句行的構(gòu)成語(yǔ)句行的構(gòu)成語(yǔ)句行是由標(biāo)志語(yǔ)句行是由標(biāo)志(Token)(Token)及分隔符按照一定的規(guī)那么組

9、及分隔符按照一定的規(guī)那么組織起來(lái)的,標(biāo)志是織起來(lái)的,標(biāo)志是IBMIBM宏匯編源程序的最小的、有意義的單宏匯編源程序的最小的、有意義的單位。位。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)94.2.1 4.2.1 標(biāo)志標(biāo)志 1.IBM1.IBM宏匯編的字符集宏匯編的字符集 IBMIBM宏匯編中所運(yùn)用的字符集僅是宏匯編中所運(yùn)用的字符集僅是ASCIIASCII和和EBCDIC(EBCDIC(擴(kuò)展擴(kuò)展的的BCDBCD碼碼) )字符集的一個(gè)子集。它由以下幾部分組成:字符集的一個(gè)子集。它由以下幾部分組成: (1) (1) 字母字母包含大寫的英文字母:包含大寫的英

10、文字母: ABCDXYZ ABCDXYZ;小寫的英文字母:小寫的英文字母: abcxyz abcxyz。(2) (2) 數(shù)字?jǐn)?shù)字阿拉伯?dāng)?shù)字:阿拉伯?dāng)?shù)字: 0123456789 0123456789。(3) (3) 特殊字符特殊字符可打印字符如圖可打印字符如圖4-14-1中所示。中所示。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)10微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)11非打印字符有:非打印字符有: 空格、制表符空格、制表符(TAB(TAB鍵鍵) )、回車和換行。、回車和換行。假設(shè)在源程序中包含任何

11、不屬于上列字符集中的字符,假設(shè)在源程序中包含任何不屬于上列字符集中的字符,那么匯編程序就把它們作為空格處置。雖然字符那么匯編程序就把它們作為空格處置。雖然字符“& &是字符是字符集中的一個(gè)字符,但緊跟在回車換行之后的符號(hào)集中的一個(gè)字符,但緊跟在回車換行之后的符號(hào)“& &是代表是代表一個(gè)延續(xù)行,所以,匯編程序也把它當(dāng)做空格處置。一個(gè)延續(xù)行,所以,匯編程序也把它當(dāng)做空格處置。2. 2. 界符界符(Delimiters) (Delimiters) 界符是一些特殊字符,利用它們可以闡明某個(gè)標(biāo)志的終界符是一些特殊字符,利用它們可以闡明某個(gè)標(biāo)志的終了,它們本身也有一定的意義

12、,這一點(diǎn)就與分隔符了,它們本身也有一定的意義,這一點(diǎn)就與分隔符( (空格空格) )不不同。例子中的冒號(hào)同。例子中的冒號(hào)( (:) )、逗號(hào)、逗號(hào)( (,) )都是一種界符。都是一種界符。IBMIBM宏匯宏匯編中的界符集如圖編中的界符集如圖4-24-2所示。所示。IBMIBM宏匯編中的界符集語(yǔ)句中有了界符就可以不再用分宏匯編中的界符集語(yǔ)句中有了界符就可以不再用分隔符,但為了程序更明晰可讀,有時(shí)仍用分隔符。隔符,但為了程序更明晰可讀,有時(shí)仍用分隔符。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)123.3.常量常量(Constants)(Constant

13、s)凡是出如今凡是出如今80868086源程序中的固定值源程序中的固定值( (它在程序運(yùn)轉(zhuǎn)期間它在程序運(yùn)轉(zhuǎn)期間不會(huì)變化不會(huì)變化) ),就稱為常量。例子中的數(shù),就稱為常量。例子中的數(shù)0 0、3 3、100100等都是常量,等都是常量,而且是數(shù)字常量。而且是數(shù)字常量。IBMIBM宏匯編中允許的常量為:宏匯編中允許的常量為: (1) (1) 數(shù)字?jǐn)?shù)字( (整數(shù)整數(shù)) )常量常量 二進(jìn)制常量二進(jìn)制常量以字母以字母B B結(jié)尾的由一串結(jié)尾的由一串“0 0和和“1 1組成的序列。例如,組成的序列。例如,00101100B00101100B。 十進(jìn)制常量十進(jìn)制常量由假設(shè)干個(gè)由假設(shè)干個(gè)0 09 9的數(shù)字組成的序

14、列,可以以字母的數(shù)字組成的序列,可以以字母D D作結(jié)作結(jié)尾,或沒有任何字母作結(jié)尾。例如,尾,或沒有任何字母作結(jié)尾。例如,1234D1234D或或12341234。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)13八進(jìn)制常量八進(jìn)制常量以字母以字母Q(Q(或字母或字母O)O)結(jié)尾,由假設(shè)干個(gè)結(jié)尾,由假設(shè)干個(gè)0 07 7的數(shù)字組成的的數(shù)字組成的序列。例如序列。例如255Q255Q,377Q377Q等。等。 十六進(jìn)制常量十六進(jìn)制常量以字母以字母H H結(jié)尾,由假設(shè)干個(gè)結(jié)尾,由假設(shè)干個(gè)0 09 9的數(shù)字或的數(shù)字或A AF F的字母所的字母所組成的序列。組成的序列。

15、為了防止與標(biāo)識(shí)符相混淆,十六進(jìn)制數(shù)在語(yǔ)句中必需以為了防止與標(biāo)識(shí)符相混淆,十六進(jìn)制數(shù)在語(yǔ)句中必需以數(shù)字打頭。所以,凡是以字母數(shù)字打頭。所以,凡是以字母A AF F開場(chǎng)的十六進(jìn)制數(shù),必需開場(chǎng)的十六進(jìn)制數(shù),必需在前面加上數(shù)字在前面加上數(shù)字0 0。例如。例如56H56H,0BA3FH0BA3FH等。等。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)14(2) (2) 字符串常量字符串常量字符串常量是由包含在單引號(hào)內(nèi)的字符串常量是由包含在單引號(hào)內(nèi)的1 1至至2 2個(gè)個(gè)ASCIIASCII字符構(gòu)字符構(gòu)成的。匯編程序把它們表示成一個(gè)字節(jié)序列,一個(gè)字節(jié)對(duì)應(yīng)成的。匯編程

16、序把它們表示成一個(gè)字節(jié)序列,一個(gè)字節(jié)對(duì)應(yīng)一個(gè)字符,把引號(hào)中的字符翻譯成它的一個(gè)字符,把引號(hào)中的字符翻譯成它的ASCIIASCII碼值。例如字碼值。例如字符符“A A等價(jià)于等價(jià)于 41H 41H,字符,字符“ABAB等價(jià)于等價(jià)于4142H4142H。在可以運(yùn)用單。在可以運(yùn)用單字節(jié)立刻數(shù)的地方,就可以運(yùn)用單個(gè)字符組成的字符串常量;字節(jié)立刻數(shù)的地方,就可以運(yùn)用單個(gè)字符組成的字符串常量;在可以運(yùn)用字立刻數(shù)的地方,就可以運(yùn)用兩個(gè)字符組成的字在可以運(yùn)用字立刻數(shù)的地方,就可以運(yùn)用兩個(gè)字符組成的字符串常量。符串常量。只需在初始化存儲(chǔ)器時(shí)才可以運(yùn)用多于兩個(gè)字符的字符只需在初始化存儲(chǔ)器時(shí)才可以運(yùn)用多于兩個(gè)字符的字

17、符串常量。串常量。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)154.4.標(biāo)識(shí)符標(biāo)識(shí)符(Identifiers)(Identifiers)標(biāo)識(shí)符是由程序員自在建立起來(lái)的、有特定意義的字符標(biāo)識(shí)符是由程序員自在建立起來(lái)的、有特定意義的字符序列,如例子中的序列,如例子中的SUMSUM、CYCLECYCLE和和PORT_VALPORT_VAL等等。等等。一個(gè)標(biāo)識(shí)符是由最多為一個(gè)標(biāo)識(shí)符是由最多為3131個(gè)字母、數(shù)字及規(guī)定的特殊字個(gè)字母、數(shù)字及規(guī)定的特殊字符符(? _ (? _ ) )等組成的,而且不能用數(shù)字打頭等組成的,而且不能用數(shù)字打頭( (以免與十六進(jìn)以

18、免與十六進(jìn)制數(shù)相混淆制數(shù)相混淆) )。 5. 5. 保管字保管字(Reserved words)(Reserved words)保管字看上去像標(biāo)識(shí)符,但是它們?cè)谘哉Z(yǔ)中有特殊的意保管字看上去像標(biāo)識(shí)符,但是它們?cè)谘哉Z(yǔ)中有特殊的意義,而且不能用它們作為標(biāo)識(shí)符。如例子中的義,而且不能用它們作為標(biāo)識(shí)符。如例子中的SEGMENTSEGMENT、MOVMOV、EQUEQU、ALAL等都是保管字。實(shí)踐上凡是等都是保管字。實(shí)踐上凡是80868086的指令助記符,匯的指令助記符,匯編言語(yǔ)中的命令編言語(yǔ)中的命令( (偽指令偽指令) ),存放器名等都是保管字。,存放器名等都是保管字。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原

19、理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)166.6.注釋注釋(Comment)(Comment)為了使匯編言語(yǔ)的源程序更便于閱讀和了解,常在源程為了使匯編言語(yǔ)的源程序更便于閱讀和了解,常在源程序中加上注釋。注釋是在分號(hào)序中加上注釋。注釋是在分號(hào)( (;) )后面的恣意的字符序列,后面的恣意的字符序列,直到行的結(jié)尾。在匯編時(shí),匯編程序?qū)λ鼈儾⒉贿M(jìn)展處置。直到行的結(jié)尾。在匯編時(shí),匯編程序?qū)λ鼈儾⒉贿M(jìn)展處置。在可打印的文件中,注釋和源程序一同打印。在可打印的文件中,注釋和源程序一同打印。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)174.2

20、.2 4.2.2 符號(hào)符號(hào)在匯編言語(yǔ)源程序中,為了使程序更具有普遍性,也便在匯編言語(yǔ)源程序中,為了使程序更具有普遍性,也便于程序的修正,用戶常用符號(hào)等替代存儲(chǔ)單元、數(shù)據(jù)、表達(dá)于程序的修正,用戶常用符號(hào)等替代存儲(chǔ)單元、數(shù)據(jù)、表達(dá)式等等,如例中的存儲(chǔ)單元式等等,如例中的存儲(chǔ)單元SUMSUM、輸入輸出端口、輸入輸出端口PROT_VALPROT_VAL等等就是。符號(hào)就是。符號(hào)(Symbol)(Symbol)是一種標(biāo)識(shí)符,它要符合標(biāo)識(shí)符的組成是一種標(biāo)識(shí)符,它要符合標(biāo)識(shí)符的組成規(guī)那么。規(guī)那么。在實(shí)踐運(yùn)用中的符號(hào)可以分成五類,即存放器、變量、在實(shí)踐運(yùn)用中的符號(hào)可以分成五類,即存放器、變量、標(biāo)號(hào)、數(shù)、其他。標(biāo)

21、號(hào)、數(shù)、其他。每個(gè)符號(hào)都具有一定的屬性,以允許匯編程序運(yùn)用它來(lái)每個(gè)符號(hào)都具有一定的屬性,以允許匯編程序運(yùn)用它來(lái)代表所需的信息。代表所需的信息。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)181.1.存放器存放器(Registers)(Registers)80868086的存放器常在操作數(shù)場(chǎng)出現(xiàn),代表某一個(gè)操作數(shù)。的存放器常在操作數(shù)場(chǎng)出現(xiàn),代表某一個(gè)操作數(shù)。每個(gè)存放器都有一種類型特性,由這些類型可以確定它是一每個(gè)存放器都有一種類型特性,由這些類型可以確定它是一個(gè)字節(jié)存放器還是一個(gè)字存放器。個(gè)字節(jié)存放器還是一個(gè)字存放器。80868086的標(biāo)志位被看作是一

22、的標(biāo)志位被看作是一位存放器。位存放器。2.2.變量變量(Variable)(Variable)存放在存儲(chǔ)單元中的操作數(shù)是變量,由于它們的值是可存放在存儲(chǔ)單元中的操作數(shù)是變量,由于它們的值是可以改動(dòng)的。在程序中出現(xiàn)的是存儲(chǔ)單元地址的符號(hào),即它們以改動(dòng)的。在程序中出現(xiàn)的是存儲(chǔ)單元地址的符號(hào),即它們的稱號(hào)。的稱號(hào)。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)19一切的變量都具有三種屬性:一切的變量都具有三種屬性: (1) (1) 段值段值(SEGMENT)(SEGMENT),即變量單元所在段的段地址,即變量單元所在段的段地址( (段的段的起始地址起始地址)

23、 )的高的高1616位,低位,低4 4位一直為位一直為0;0;(2) (2) 偏移量偏移量(OFFSET)(OFFSET),即變量單元地址與段的起始地址,即變量單元地址與段的起始地址之間的偏移量之間的偏移量(16(16位位););(3) (3) 類型類型(TYPE)(TYPE),變量有三種類型:,變量有三種類型: 字節(jié)字節(jié)(BYTE)(BYTE)、字、字(WORD)(WORD)和雙字和雙字(DOUBLE WORD)(DOUBLE WORD)。變量通常是用存儲(chǔ)器初始化命令定義的。變量通常是用存儲(chǔ)器初始化命令定義的。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程

24、序設(shè)計(jì)203.3.標(biāo)號(hào)標(biāo)號(hào)(Label)(Label)標(biāo)號(hào)是某條指令所存放單元的符號(hào)地址,它是轉(zhuǎn)移標(biāo)號(hào)是某條指令所存放單元的符號(hào)地址,它是轉(zhuǎn)移( (條條件轉(zhuǎn)移或無(wú)條件轉(zhuǎn)移件轉(zhuǎn)移或無(wú)條件轉(zhuǎn)移) )指令或調(diào)用指令或調(diào)用(CALL)(CALL)指令的目的操作數(shù)。指令的目的操作數(shù)。對(duì)于匯編程序來(lái)說(shuō),標(biāo)號(hào)與變量是類似的,都是存儲(chǔ)單對(duì)于匯編程序來(lái)說(shuō),標(biāo)號(hào)與變量是類似的,都是存儲(chǔ)單元的符號(hào)地址。只是標(biāo)號(hào)對(duì)應(yīng)的存儲(chǔ)單元中存放的是指令;元的符號(hào)地址。只是標(biāo)號(hào)對(duì)應(yīng)的存儲(chǔ)單元中存放的是指令;而變量所對(duì)應(yīng)的存儲(chǔ)單元中存放的是數(shù)據(jù)。所以,標(biāo)號(hào)也有而變量所對(duì)應(yīng)的存儲(chǔ)單元中存放的是數(shù)據(jù)。所以,標(biāo)號(hào)也有三種屬性:三種屬性:

25、(1) (1) 段值,段值,(2) (2) 偏移量,偏移量,(3) (3) 類型。類型。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)21標(biāo)號(hào)的類型與變量不同,它的類型是標(biāo)號(hào)的類型與變量不同,它的類型是NEARNEAR或是或是FARFAR。NEARNEAR是指轉(zhuǎn)移到此標(biāo)號(hào)所指的語(yǔ)句,或調(diào)用此子程序或是指轉(zhuǎn)移到此標(biāo)號(hào)所指的語(yǔ)句,或調(diào)用此子程序或過(guò)程,只需求改動(dòng)過(guò)程,只需求改動(dòng)IPIP值,而不改動(dòng)值,而不改動(dòng)CSCS值。也即轉(zhuǎn)移指令或調(diào)值。也即轉(zhuǎn)移指令或調(diào)用指令與此標(biāo)號(hào)所指的語(yǔ)句或過(guò)程在同一段內(nèi)。用指令與此標(biāo)號(hào)所指的語(yǔ)句或過(guò)程在同一段內(nèi)。FARFAR與與N

26、EARNEAR不同,要轉(zhuǎn)移到標(biāo)號(hào)所指的語(yǔ)句,或調(diào)用此不同,要轉(zhuǎn)移到標(biāo)號(hào)所指的語(yǔ)句,或調(diào)用此子程序或過(guò)程,不僅需求改動(dòng)子程序或過(guò)程,不僅需求改動(dòng)IPIP的值,而且需求改動(dòng)的值,而且需求改動(dòng)CSCS,即,即是段交叉轉(zhuǎn)移或調(diào)用。是段交叉轉(zhuǎn)移或調(diào)用。假設(shè)沒有對(duì)標(biāo)號(hào)進(jìn)展類型闡明,就假定它為假設(shè)沒有對(duì)標(biāo)號(hào)進(jìn)展類型闡明,就假定它為NEARNEAR。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)224.4.數(shù)數(shù)在匯編言語(yǔ)源程序中的常數(shù)也常以符號(hào)的方式出現(xiàn),這在匯編言語(yǔ)源程序中的常數(shù)也常以符號(hào)的方式出現(xiàn),這樣就更具有通用性,更便于修正。樣就更具有通用性,更便于修正。如上

27、例中的就是把端口地址如上例中的就是把端口地址3 3定義為一個(gè)符號(hào)定義為一個(gè)符號(hào)PORT_VALPORT_VAL。5.5.其他符號(hào)其他符號(hào)除了上述除了上述4 4種符號(hào)以外,在匯編言語(yǔ)中還經(jīng)常出現(xiàn)一些種符號(hào)以外,在匯編言語(yǔ)中還經(jīng)常出現(xiàn)一些其他符號(hào),把它們用作匯編程序中的偽指令名字。其他符號(hào),把它們用作匯編程序中的偽指令名字。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)234.2.3 4.2.3 表達(dá)式表達(dá)式 表達(dá)式表達(dá)式(Expressions)(Expressions)是由上面討論過(guò)的標(biāo)志是由上面討論過(guò)的標(biāo)志(Token)(Token)、符號(hào)符號(hào)(S

28、ymbol)(Symbol)經(jīng)過(guò)運(yùn)算符組合起來(lái)的。粗略地說(shuō),一個(gè)表達(dá)經(jīng)過(guò)運(yùn)算符組合起來(lái)的。粗略地說(shuō),一個(gè)表達(dá)式是一個(gè)由操作數(shù)和運(yùn)算符組合的序列,在匯編時(shí)它能產(chǎn)生式是一個(gè)由操作數(shù)和運(yùn)算符組合的序列,在匯編時(shí)它能產(chǎn)生一個(gè)值。一個(gè)值。1.1.操作數(shù)操作數(shù)(Operands)(Operands)一個(gè)操作數(shù)可以是一個(gè)存放器名、一個(gè)常量一個(gè)操作數(shù)可以是一個(gè)存放器名、一個(gè)常量( (數(shù)字常量數(shù)字常量或字符串常量或字符串常量) )或一個(gè)存儲(chǔ)器操作數(shù)?;蛞粋€(gè)存儲(chǔ)器操作數(shù)。(1) (1) 常量操作數(shù)常量操作數(shù)具有數(shù)字值的操作數(shù)是常量或是表示常量的標(biāo)識(shí)符具有數(shù)字值的操作數(shù)是常量或是表示常量的標(biāo)識(shí)符( (符符號(hào)號(hào)) )

29、。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)24(2) (2) 存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù)存儲(chǔ)器操作數(shù),通常是標(biāo)識(shí)符,可以分成標(biāo)號(hào)存儲(chǔ)器操作數(shù),通常是標(biāo)識(shí)符,可以分成標(biāo)號(hào)(Label)(Label)和變量和變量(Variable)(Variable)兩種。兩種。標(biāo)號(hào)是可執(zhí)行的指令語(yǔ)句的符號(hào)地址,通常是作為轉(zhuǎn)移標(biāo)號(hào)是可執(zhí)行的指令語(yǔ)句的符號(hào)地址,通常是作為轉(zhuǎn)移指令指令JMPJMP和調(diào)用指令和調(diào)用指令CALLCALL的目的操作數(shù)。的目的操作數(shù)。變量通常是指存放在一些存儲(chǔ)單元中的值,這些值在程變量通常是指存放在一些存儲(chǔ)單元中的值,這些值在程序運(yùn)轉(zhuǎn)過(guò)程中是可

30、變的。序運(yùn)轉(zhuǎn)過(guò)程中是可變的。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)25變量可以具有以下幾種尋址方式:變量可以具有以下幾種尋址方式: 直接尋址直接尋址1616位地址偏移量包含在指令中;位地址偏移量包含在指令中; 基址尋址由一個(gè)基址存放器基址尋址由一個(gè)基址存放器(BX(BX或或BP)BP)的內(nèi)容,加上的內(nèi)容,加上一個(gè)在指令中指定的一個(gè)在指令中指定的8 8位或位或1616位位移量,決議變量的地址;位位移量,決議變量的地址; 變址尋址由一個(gè)變址存放器變址尋址由一個(gè)變址存放器(SI(SI或或DI)DI)的內(nèi)容,加上的內(nèi)容,加上一個(gè)在指令中指定的一個(gè)在指

31、令中指定的8 8位或位或1616位位移量,決議變量的地址;位位移量,決議變量的地址; 基址變址尋址由一個(gè)基址存放器基址變址尋址由一個(gè)基址存放器(BX(BX或或BP)BP)的內(nèi)容,的內(nèi)容,加上一個(gè)變址存放器加上一個(gè)變址存放器(SI(SI或或DI)DI)的內(nèi)容,再加上一個(gè)在指令中的內(nèi)容,再加上一個(gè)在指令中指定的指定的8 8位或位或1616位位移量,決議變量的地址。位位移量,決議變量的地址。作為存儲(chǔ)器操作數(shù)的標(biāo)號(hào)和變量都有三種屬性:作為存儲(chǔ)器操作數(shù)的標(biāo)號(hào)和變量都有三種屬性: 段值、段值、段內(nèi)地址偏移量、類型。段內(nèi)地址偏移量、類型。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序

32、設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)26一個(gè)運(yùn)算符取一個(gè)或多個(gè)操作數(shù)的值,以構(gòu)成一個(gè)新值。一個(gè)運(yùn)算符取一個(gè)或多個(gè)操作數(shù)的值,以構(gòu)成一個(gè)新值。在在IBMIBM宏匯編中有五種運(yùn)算符。宏匯編中有五種運(yùn)算符。2.2.運(yùn)算符運(yùn)算符(Operators)(Operators)IBMIBM宏匯編通常有以下幾種運(yùn)算符:宏匯編通常有以下幾種運(yùn)算符: 算術(shù)運(yùn)算符算術(shù)運(yùn)算符(Arithmetic Operators)(Arithmetic Operators); 邏輯運(yùn)算符邏輯運(yùn)算符(Logical Operators)(Logical Operators); 關(guān)系運(yùn)算符關(guān)系運(yùn)算符(Relational Operators)(Re

33、lational Operators); 分析運(yùn)算符分析運(yùn)算符(Analytic Operators)(Analytic Operators); 合成運(yùn)算符合成運(yùn)算符(Synthetic Operators)(Synthetic Operators)。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)27(1) (1) 算術(shù)運(yùn)算符算術(shù)運(yùn)算符這是讀者非常熟習(xí)的運(yùn)算符這是讀者非常熟習(xí)的運(yùn)算符-+(-+(加加) )、-(-(減減) )、* *( (乘乘) )、/(/(除除) )運(yùn)算符。另一個(gè)算術(shù)運(yùn)算符是運(yùn)算符。另一個(gè)算術(shù)運(yùn)算符是MOD(MOD(求余求余) ),它

34、產(chǎn)生除法,它產(chǎn)生除法以后的余數(shù)。因此以后的余數(shù)。因此19/719/7是是2(2(商是商是2)2),而,而19MOD719MOD7是是5(5(余數(shù)是余數(shù)是5)5)。算術(shù)運(yùn)算符運(yùn)用于數(shù)字操作數(shù),結(jié)果也是數(shù)字的。算術(shù)運(yùn)算符運(yùn)用于數(shù)字操作數(shù),結(jié)果也是數(shù)字的。當(dāng)算術(shù)運(yùn)算符運(yùn)用于存儲(chǔ)器即地址操作數(shù)時(shí)其規(guī)那么當(dāng)算術(shù)運(yùn)算符運(yùn)用于存儲(chǔ)器即地址操作數(shù)時(shí)其規(guī)那么就更加嚴(yán)厲:就更加嚴(yán)厲: 只需當(dāng)結(jié)果有明確的、有意義的物了解釋時(shí),只需當(dāng)結(jié)果有明確的、有意義的物了解釋時(shí),這些運(yùn)算才是有效的。這些運(yùn)算才是有效的。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)28(2) (2) 邏輯

35、運(yùn)算符邏輯運(yùn)算符按位操作的邏輯運(yùn)算符有:按位操作的邏輯運(yùn)算符有: AND(AND(與與) )、OR(OR(或或) )、XOR(XOR(異異或或) )和和NOT(NOT(非非) )。邏輯運(yùn)算的操作數(shù)只能是數(shù)字的,而且結(jié)果是數(shù)字的。邏輯運(yùn)算的操作數(shù)只能是數(shù)字的,而且結(jié)果是數(shù)字的。存儲(chǔ)器地址操作數(shù)不能進(jìn)展邏輯運(yùn)算。存儲(chǔ)器地址操作數(shù)不能進(jìn)展邏輯運(yùn)算。留意:留意: ANDAND、OROR、XORXOR和和NOTNOT,也是,也是80868086指令的助記符。指令的助記符。但是,作為但是,作為IBMIBM宏匯編的運(yùn)算符是在程序匯編時(shí)計(jì)算的。而宏匯編的運(yùn)算符是在程序匯編時(shí)計(jì)算的。而作為指令的助記符,那么是在

36、程序執(zhí)行時(shí)計(jì)算的。作為指令的助記符,那么是在程序執(zhí)行時(shí)計(jì)算的。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)29(3) (3) 關(guān)系運(yùn)算符關(guān)系運(yùn)算符在在IBMIBM宏匯編中有以下關(guān)系運(yùn)算符:宏匯編中有以下關(guān)系運(yùn)算符: 相等相等 EQ(Equal) EQ(Equal); 不等不等 NE(Not Equal) NE(Not Equal); 小于小于 LT(Less Than) LT(Less Than); 大于大于 GT(Greater Than) GT(Greater Than); 小于或等于小于或等于 LE(Less Than or Equal) LE

37、(Less Than or Equal); 大于或等于大于或等于 GE(Greater Than or Equal) GE(Greater Than or Equal)。關(guān)系運(yùn)算的兩個(gè)操作數(shù),或者都是數(shù)字的,或者是同一關(guān)系運(yùn)算的兩個(gè)操作數(shù),或者都是數(shù)字的,或者是同一個(gè)段的存儲(chǔ)器地址。結(jié)果一直是一個(gè)數(shù)字值。假設(shè)關(guān)系是假,個(gè)段的存儲(chǔ)器地址。結(jié)果一直是一個(gè)數(shù)字值。假設(shè)關(guān)系是假,那么結(jié)果為那么結(jié)果為0 0;假設(shè)關(guān)系是真,那么結(jié)果為;假設(shè)關(guān)系是真,那么結(jié)果為0FFFFH0FFFFH。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)30(4) (4) 分析運(yùn)算符分析

38、運(yùn)算符分析運(yùn)算符可以把存儲(chǔ)器操作數(shù)分解為它的組成部分,分析運(yùn)算符可以把存儲(chǔ)器操作數(shù)分解為它的組成部分,如它的段值、段內(nèi)偏移量和類型。如它的段值、段內(nèi)偏移量和類型。(5) (5) 合成運(yùn)算符合成運(yùn)算符合成運(yùn)算符可以由曾經(jīng)存在的存儲(chǔ)器操作數(shù)生成一個(gè)段合成運(yùn)算符可以由曾經(jīng)存在的存儲(chǔ)器操作數(shù)生成一個(gè)段值與偏移量一樣、而類型不同的新的存儲(chǔ)器操作數(shù)。值與偏移量一樣、而類型不同的新的存儲(chǔ)器操作數(shù)。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)314.2.4 4.2.4 語(yǔ)句語(yǔ)句如前所述,一個(gè)匯編言語(yǔ)的源程序是由一條條語(yǔ)句組成如前所述,一個(gè)匯編言語(yǔ)的源程序是由一條條

39、語(yǔ)句組成的,語(yǔ)句的,語(yǔ)句(Statements)(Statements)就是完成一個(gè)何種動(dòng)作的闡明。源程就是完成一個(gè)何種動(dòng)作的闡明。源程序中的語(yǔ)句可分成兩類:序中的語(yǔ)句可分成兩類: 指令語(yǔ)句,匯編程序把它們翻譯成機(jī)器代碼,這些代碼指令語(yǔ)句,匯編程序把它們翻譯成機(jī)器代碼,這些代碼命令命令80868086執(zhí)行某些操作。如執(zhí)行某些操作。如MOVMOV、ADDADD、JMPJMP等。等。指示性語(yǔ)句指示性語(yǔ)句( (偽指令偽指令) ),匯編程序并不把它們,匯編程序并不把它們( (也不能夠也不能夠) )翻譯成機(jī)器代碼,只是用來(lái)指示、引導(dǎo)匯編程序在匯編時(shí)進(jìn)翻譯成機(jī)器代碼,只是用來(lái)指示、引導(dǎo)匯編程序在匯編時(shí)進(jìn)展

40、一些操作,如定義符號(hào)、分配存儲(chǔ)單元、初始化存儲(chǔ)器等展一些操作,如定義符號(hào)、分配存儲(chǔ)單元、初始化存儲(chǔ)器等等,所以偽指令本身不占用存儲(chǔ)單元。等,所以偽指令本身不占用存儲(chǔ)單元。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)32兩種語(yǔ)句的格式是類似的。指令語(yǔ)句的格式為:兩種語(yǔ)句的格式是類似的。指令語(yǔ)句的格式為:標(biāo)號(hào):標(biāo)號(hào): 助記符助記符 參數(shù),參數(shù),參數(shù),參數(shù) ;注釋;注釋指示性語(yǔ)句的格式為:指示性語(yǔ)句的格式為: 稱號(hào)稱號(hào) 命令命令 參數(shù),參數(shù),參數(shù),參數(shù) ;注釋;注釋在一個(gè)指令語(yǔ)句中的標(biāo)號(hào)后面跟有冒號(hào)在一個(gè)指令語(yǔ)句中的標(biāo)號(hào)后面跟有冒號(hào)( (: ) ),而在

41、一,而在一個(gè)指示性語(yǔ)句中的名字后面沒有冒號(hào),這就是這兩種語(yǔ)句在個(gè)指示性語(yǔ)句中的名字后面沒有冒號(hào),這就是這兩種語(yǔ)句在格式上的主要區(qū)別。格式上的主要區(qū)別。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)33一個(gè)標(biāo)號(hào)與一條指令的地址符號(hào)名相聯(lián)絡(luò),標(biāo)號(hào)可以作一個(gè)標(biāo)號(hào)與一條指令的地址符號(hào)名相聯(lián)絡(luò),標(biāo)號(hào)可以作為為JMPJMP指令和指令和CALLCALL指令的目的操作數(shù)。指令的目的操作數(shù)。指示性語(yǔ)句中的名字與指令的地址毫無(wú)關(guān)系,絕不能轉(zhuǎn)指示性語(yǔ)句中的名字與指令的地址毫無(wú)關(guān)系,絕不能轉(zhuǎn)向它。向它。在指令語(yǔ)句中的標(biāo)號(hào),總是任選的;但在指示性語(yǔ)句中在指令語(yǔ)句中的標(biāo)號(hào),總是

42、任選的;但在指示性語(yǔ)句中的名字,能夠是強(qiáng)迫的、任選的或制止的,這取決于實(shí)踐的的名字,能夠是強(qiáng)迫的、任選的或制止的,這取決于實(shí)踐的命令。命令。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)344.3 4.3 指示性語(yǔ)句指示性語(yǔ)句在在IBMIBM宏匯編中有以下幾種指示性語(yǔ)句宏匯編中有以下幾種指示性語(yǔ)句(Directive (Directive statements)statements): (1) (1) 符號(hào)定義語(yǔ)句符號(hào)定義語(yǔ)句(Symbol definition)(Symbol definition);(2) (2) 數(shù)據(jù)定義語(yǔ)句數(shù)據(jù)定義語(yǔ)句(Dat

43、a definition)(Data definition);(3) (3) 段定義語(yǔ)句段定義語(yǔ)句(Segmentation definition)(Segmentation definition);(4) (4) 過(guò)程定義語(yǔ)句過(guò)程定義語(yǔ)句(Procedure definition)(Procedure definition);(5) (5) 終了語(yǔ)句終了語(yǔ)句(Termination)(Termination)。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)354.3.1 4.3.1 符號(hào)定義語(yǔ)句符號(hào)定義語(yǔ)句 1.1.等值語(yǔ)句等值語(yǔ)句EQU EQU E

44、QUEQU語(yǔ)句給符號(hào)名定義一個(gè)值,或定義為別的符號(hào)名,語(yǔ)句給符號(hào)名定義一個(gè)值,或定義為別的符號(hào)名,甚至可定義為一條可以執(zhí)行的指令等。甚至可定義為一條可以執(zhí)行的指令等。EQUEQU語(yǔ)句的格式為:語(yǔ)句的格式為:NAME EQU EXPRESSIONNAME EQU EXPRESSIONEQUEQU語(yǔ)句在未解除前,不能重新定義。語(yǔ)句在未解除前,不能重新定義。2.2.等號(hào)等號(hào)(Equal sign)(Equal sign)語(yǔ)句語(yǔ)句 = =此語(yǔ)句的功能與此語(yǔ)句的功能與EQUEQU語(yǔ)句類似,最大特點(diǎn)是能對(duì)符號(hào)進(jìn)語(yǔ)句類似,最大特點(diǎn)是能對(duì)符號(hào)進(jìn)展再定義。展再定義。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第

45、4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)363.3.解除語(yǔ)句解除語(yǔ)句PURGEPURGE曾經(jīng)用曾經(jīng)用EQUEQU命令定義的符號(hào),假設(shè)以后不再用了就可以命令定義的符號(hào),假設(shè)以后不再用了就可以用用PURGEPURGE語(yǔ)句來(lái)解除。語(yǔ)句來(lái)解除。PURGEPURGE語(yǔ)句的格式為語(yǔ)句的格式為: :PURCE PURCE 符號(hào)符號(hào)1 1,符號(hào),符號(hào)2 2,符號(hào),符號(hào)n n 留意:留意: PURGE PURGE語(yǔ)句本身不能有名字。用語(yǔ)句本身不能有名字。用PURGEPURGE語(yǔ)句解除語(yǔ)句解除后的符號(hào)可以重新定義。后的符號(hào)可以重新定義。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)

46、匯編語(yǔ)言程序設(shè)計(jì)374.3.2 4.3.2 數(shù)據(jù)定義語(yǔ)句數(shù)據(jù)定義語(yǔ)句數(shù)據(jù)定義語(yǔ)句,為一個(gè)數(shù)據(jù)項(xiàng)分配存儲(chǔ)單元,用一個(gè)符數(shù)據(jù)定義語(yǔ)句,為一個(gè)數(shù)據(jù)項(xiàng)分配存儲(chǔ)單元,用一個(gè)符號(hào)名與這個(gè)存儲(chǔ)單元相聯(lián)絡(luò),且為這個(gè)數(shù)據(jù)提供一個(gè)任選的號(hào)名與這個(gè)存儲(chǔ)單元相聯(lián)絡(luò),且為這個(gè)數(shù)據(jù)提供一個(gè)任選的初始值。初始值。與數(shù)據(jù)項(xiàng)相聯(lián)絡(luò)的符號(hào)稱號(hào)為變量。數(shù)據(jù)定義語(yǔ)句的例與數(shù)據(jù)項(xiàng)相聯(lián)絡(luò)的符號(hào)稱號(hào)為變量。數(shù)據(jù)定義語(yǔ)句的例子如下:子如下:THINGTHINGDBDB? ?;定義一個(gè)字節(jié);定義一個(gè)字節(jié)BIGGER_THINGBIGGER_THINGDW DW ? ?;定義一個(gè)字;定義一個(gè)字BIGGEST_THINGBIGGEST_THING

47、 DD DD ? ?;定義一個(gè)雙字;定義一個(gè)雙字 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)38THINGTHING是一個(gè)符號(hào)名,它與在存儲(chǔ)器中的一個(gè)字節(jié)相聯(lián)是一個(gè)符號(hào)名,它與在存儲(chǔ)器中的一個(gè)字節(jié)相聯(lián)絡(luò),即它是一個(gè)字節(jié)變量。絡(luò),即它是一個(gè)字節(jié)變量。BIGGER_THINGBIGGER_THING也是一個(gè)符號(hào)名,它與在存儲(chǔ)器中的一個(gè)也是一個(gè)符號(hào)名,它與在存儲(chǔ)器中的一個(gè)字相聯(lián)絡(luò),即它是一個(gè)字變量。字相聯(lián)絡(luò),即它是一個(gè)字變量。BIGGEST_THINGBIGGEST_THING也是一個(gè)符號(hào)名,它與在存儲(chǔ)器中的一也是一個(gè)符號(hào)名,它與在存儲(chǔ)器中的一個(gè)雙字相聯(lián)

48、絡(luò),即它是一個(gè)雙字變量。個(gè)雙字相聯(lián)絡(luò),即它是一個(gè)雙字變量。由匯編程序產(chǎn)生的目的碼,產(chǎn)生指令和放指令的地址。由匯編程序產(chǎn)生的目的碼,產(chǎn)生指令和放指令的地址。在目的碼產(chǎn)生以后,指令曾經(jīng)存放在存儲(chǔ)器中,可以執(zhí)行了。在目的碼產(chǎn)生以后,指令曾經(jīng)存放在存儲(chǔ)器中,可以執(zhí)行了。在指令送至存儲(chǔ)器的時(shí)候,數(shù)據(jù)項(xiàng)的初始值也可以送到在指令送至存儲(chǔ)器的時(shí)候,數(shù)據(jù)項(xiàng)的初始值也可以送到存儲(chǔ)器中。這意味著目的碼除了包含指令和它們的地址以外,存儲(chǔ)器中。這意味著目的碼除了包含指令和它們的地址以外,也可以包括數(shù)據(jù)項(xiàng)的起始值和它們的地址。這些初始值是由也可以包括數(shù)據(jù)項(xiàng)的起始值和它們的地址。這些初始值是由數(shù)據(jù)定義語(yǔ)句所規(guī)定的。數(shù)據(jù)定義

49、語(yǔ)句所規(guī)定的。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)39例如:例如:THINGTHINGDBDB2525不僅使不僅使THINGTHING這個(gè)符號(hào)與一個(gè)字節(jié)的存儲(chǔ)單元相聯(lián)絡(luò),這個(gè)符號(hào)與一個(gè)字節(jié)的存儲(chǔ)單元相聯(lián)絡(luò),而且在匯編時(shí)會(huì)把而且在匯編時(shí)會(huì)把2525放入與放入與THINGTHING相聯(lián)絡(luò)的存儲(chǔ)單元中。所相聯(lián)絡(luò)的存儲(chǔ)單元中。所以以THINGTHING是一個(gè)字節(jié)變量,它的初始值為是一個(gè)字節(jié)變量,它的初始值為2525。同樣,以下語(yǔ)句:同樣,以下語(yǔ)句:BIGGERBIGGERDWDW4142H4142H在匯編時(shí)就會(huì)把在匯編時(shí)就會(huì)把41H41H與與42H4

50、2H分別放至與分別放至與BIGGER_THINGBIGGER_THING相聯(lián)相聯(lián)絡(luò)的兩個(gè)延續(xù)的字節(jié)單元中。絡(luò)的兩個(gè)延續(xù)的字節(jié)單元中。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)40下面的語(yǔ)句:下面的語(yǔ)句:BIGGESTBIGGEST DDDD12345678H12345678H在匯編時(shí)就會(huì)初始化,如圖在匯編時(shí)就會(huì)初始化,如圖4-34-3所示。它定義了一個(gè)雙所示。它定義了一個(gè)雙字變量,且給了初始值。字變量,且給了初始值。當(dāng)匯編程序匯編時(shí)遇到當(dāng)匯編程序匯編時(shí)遇到“? ?號(hào),那么它依然為數(shù)據(jù)項(xiàng)分號(hào),那么它依然為數(shù)據(jù)項(xiàng)分配相應(yīng)的存儲(chǔ)單元配相應(yīng)的存儲(chǔ)單元(DB

51、(DB分配一個(gè)字節(jié)、分配一個(gè)字節(jié)、 DW DW分配一個(gè)字、分配一個(gè)字、DDDD分分配一個(gè)雙字配一個(gè)雙字) ),但并不產(chǎn)生一個(gè)目的碼來(lái)初始化這些存儲(chǔ)單,但并不產(chǎn)生一個(gè)目的碼來(lái)初始化這些存儲(chǔ)單元。即元。即“? ?號(hào)是為了保管假設(shè)干個(gè)存儲(chǔ)單元,以便存放指令號(hào)是為了保管假設(shè)干個(gè)存儲(chǔ)單元,以便存放指令執(zhí)行的中間結(jié)果。執(zhí)行的中間結(jié)果。通常初始值能用一個(gè)表達(dá)式來(lái)規(guī)定,由于表達(dá)式是在匯通常初始值能用一個(gè)表達(dá)式來(lái)規(guī)定,由于表達(dá)式是在匯編時(shí)計(jì)算的。編時(shí)計(jì)算的。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)41微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)

52、言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)42同樣,在存儲(chǔ)單元中可以存放存儲(chǔ)器地址值。存放內(nèi)存同樣,在存儲(chǔ)單元中可以存放存儲(chǔ)器地址值。存放內(nèi)存單元的段內(nèi)偏移量需用一個(gè)字;存放全地址,那么需用兩個(gè)單元的段內(nèi)偏移量需用一個(gè)字;存放全地址,那么需用兩個(gè)字,一個(gè)字放段地址,另一個(gè)字放段內(nèi)偏移量。字,一個(gè)字放段地址,另一個(gè)字放段內(nèi)偏移量。在實(shí)踐運(yùn)用中,還經(jīng)常會(huì)用到由字節(jié)、字或雙字構(gòu)成的在實(shí)踐運(yùn)用中,還經(jīng)常會(huì)用到由字節(jié)、字或雙字構(gòu)成的表。表。這可由在數(shù)據(jù)定義語(yǔ)句的參數(shù)部分,引入假設(shè)干個(gè)用逗這可由在數(shù)據(jù)定義語(yǔ)句的參數(shù)部分,引入假設(shè)干個(gè)用逗號(hào)分隔的參數(shù)就可以建立一個(gè)表。以下語(yǔ)句定義了一個(gè)包含號(hào)分隔的參數(shù)就可以建立一個(gè)表。以下

53、語(yǔ)句定義了一個(gè)包含2 2的權(quán)的字節(jié)的表:的權(quán)的字節(jié)的表: POWERS_2POWERS_2DBDB1 1,2 2,4 4,8 8,16 16 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)43可以用可以用DUPDUP來(lái)縮寫假設(shè)干一樣的值。因此,來(lái)縮寫假設(shè)干一樣的值。因此,DUPDUP利用給出利用給出的一個(gè)初值的一個(gè)初值( (或一組初值或一組初值) )以及這些值應(yīng)該反復(fù)的次數(shù)來(lái)初始以及這些值應(yīng)該反復(fù)的次數(shù)來(lái)初始化存儲(chǔ)器?;鎯?chǔ)器。 DBDB100 DUP(0)100 DUP(0);100100個(gè)字節(jié)全初始化為個(gè)字節(jié)全初始化為0 0DWDW100 DUP(

54、0)100 DUP(0);100100個(gè)字全初始化為個(gè)字全初始化為0 0DWDW10 DUP(?)10 DUP(?);保管;保管1010個(gè)字個(gè)字可以用可以用DBDB數(shù)據(jù)定義語(yǔ)句在內(nèi)存中定義一個(gè)字符串。字符數(shù)據(jù)定義語(yǔ)句在內(nèi)存中定義一個(gè)字符串。字符串中的每一個(gè)字符用它的串中的每一個(gè)字符用它的ASCIIASCII碼表示,為一個(gè)字節(jié),故字碼表示,為一個(gè)字節(jié),故字符串的定義必需用符串的定義必需用DBDB命令。命令。 有兩種定義字符串的方法:有兩種定義字符串的方法: 一種是字符串中的每一個(gè)一種是字符串中的每一個(gè)字符分別定義,每一個(gè)字符之間用逗號(hào)分隔;另一種方法是字符分別定義,每一個(gè)字符之間用逗號(hào)分隔;另一

55、種方法是在整個(gè)字符串的前后都加單引號(hào),例如:在整個(gè)字符串的前后都加單引號(hào),例如:EXAM1EXAM1DBDBTHIS IS AN EXAMPLETHIS IS AN EXAMPLE微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)44IBMIBM宏匯編對(duì)在程序中涉及的每一個(gè)存儲(chǔ)單元與一種類宏匯編對(duì)在程序中涉及的每一個(gè)存儲(chǔ)單元與一種類型聯(lián)絡(luò)起來(lái),這樣能對(duì)訪問(wèn)存儲(chǔ)器的指令產(chǎn)生正確的目的碼。型聯(lián)絡(luò)起來(lái),這樣能對(duì)訪問(wèn)存儲(chǔ)器的指令產(chǎn)生正確的目的碼。例如,數(shù)據(jù)定義語(yǔ)句:例如,數(shù)據(jù)定義語(yǔ)句:SUMSUMDBDB? ?通知匯編程序,通知匯編程序,SUMSUM是字節(jié)類型的,

56、以后當(dāng)遇到如下的是字節(jié)類型的,以后當(dāng)遇到如下的指令語(yǔ)句:指令語(yǔ)句:INCINCSUMSUM匯編程序就產(chǎn)生一個(gè)字節(jié)增量指令,而不是一個(gè)字增量匯編程序就產(chǎn)生一個(gè)字節(jié)增量指令,而不是一個(gè)字增量指令。指令。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)45一個(gè)存儲(chǔ)單元的類型如下:一個(gè)存儲(chǔ)單元的類型如下: (1) (1) 數(shù)據(jù)字節(jié)。如數(shù)據(jù)字節(jié)。如SUMSUMDBDB? ?;定義一個(gè)字節(jié);定義一個(gè)字節(jié)(2) (2) 數(shù)據(jù)字?jǐn)?shù)據(jù)字( (兩個(gè)延續(xù)的字節(jié)兩個(gè)延續(xù)的字節(jié)) )。如。如BIGGERBIGGERDWDW? ?;定義一個(gè)字;定義一個(gè)字(3) (3) 數(shù)據(jù)雙字?jǐn)?shù)據(jù)

57、雙字( (四個(gè)延續(xù)的字節(jié)四個(gè)延續(xù)的字節(jié)) )。如。如BIGGESTBIGGEST DDDD? ?;定義一個(gè)雙字;定義一個(gè)雙字(4) NEAR(4) NEAR指令單元。如指令單元。如CYCLE:CYCLE:CMPCMPSUM,100SUM,100(5) FAR(5) FAR指令單元。指令單元。微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)46一個(gè)指令單元能出如今一條一個(gè)指令單元能出如今一條JMPJMP或或CALLCALL語(yǔ)句中,假設(shè)這語(yǔ)句中,假設(shè)這個(gè)指令單元的類型是個(gè)指令單元的類型是NEARNEAR,匯編程序?qū)a(chǎn)生一個(gè)段內(nèi),匯編程序?qū)a(chǎn)生一個(gè)段內(nèi)JMPJ

58、MP或或CALLCALL指令;假設(shè)指令單元的類型是指令;假設(shè)指令單元的類型是FARFAR,那么產(chǎn)生一個(gè)段交,那么產(chǎn)生一個(gè)段交叉叉JMPJMP或或CALLCALL指令。指令。一個(gè)一個(gè)NEARNEAR指令單元規(guī)定了一個(gè)長(zhǎng)度為兩個(gè)字節(jié)的指針,指令單元規(guī)定了一個(gè)長(zhǎng)度為兩個(gè)字節(jié)的指針,即此指令單元在段內(nèi)的地址偏移量。獲得了此地址偏移量,即此指令單元在段內(nèi)的地址偏移量。獲得了此地址偏移量,就可以采用段內(nèi)的轉(zhuǎn)移或調(diào)用。就可以采用段內(nèi)的轉(zhuǎn)移或調(diào)用。一個(gè)一個(gè)FARFAR指令單元,規(guī)定了一個(gè)長(zhǎng)度為四個(gè)字節(jié)的指針,指令單元,規(guī)定了一個(gè)長(zhǎng)度為四個(gè)字節(jié)的指針,即此指令單元所在段的段地址和段內(nèi)的地址偏移量。只需獲即此指令

59、單元所在段的段地址和段內(nèi)的地址偏移量。只需獲取了這四個(gè)字節(jié),才干得到一個(gè)取了這四個(gè)字節(jié),才干得到一個(gè)FARFAR指令單元的全地址,實(shí)指令單元的全地址,實(shí)現(xiàn)交叉的段調(diào)用或轉(zhuǎn)移。現(xiàn)交叉的段調(diào)用或轉(zhuǎn)移。 微型計(jì)算機(jī)原理及應(yīng)用微型計(jì)算機(jī)原理及應(yīng)用第第4 4章章 匯編語(yǔ)言程序設(shè)計(jì)匯編語(yǔ)言程序設(shè)計(jì)47一個(gè)存儲(chǔ)單元地址加或減一個(gè)數(shù)字值而構(gòu)成的新的存儲(chǔ)一個(gè)存儲(chǔ)單元地址加或減一個(gè)數(shù)字值而構(gòu)成的新的存儲(chǔ)單元與初始的存儲(chǔ)單元有著一樣的類型。例如,單元與初始的存儲(chǔ)單元有著一樣的類型。例如,SUM+2SUM+2是字是字節(jié)型,節(jié)型,BIGGER-3BIGGER-3是字型,而是字型,而CYCLE+1CYCLE+1是一個(gè)是一

60、個(gè)NEARNEAR型指令單元。型指令單元。分析運(yùn)算符把存儲(chǔ)器地址操作數(shù)分解為它們的各個(gè)組成分析運(yùn)算符把存儲(chǔ)器地址操作數(shù)分解為它們的各個(gè)組成部分。這些運(yùn)算符是:部分。這些運(yùn)算符是: (1) SEG(1) SEG,(2) OFFSET(2) OFFSET,(3) TYPE(3) TYPE,(4) SIZE(4) SIZE,(5) LENGTH(5) LENGTH。假設(shè)在一個(gè)程序中,對(duì)它的數(shù)據(jù)段有如下定義假設(shè)在一個(gè)程序中,對(duì)它的數(shù)據(jù)段有如下定義DATA_TABLEDATA_TABLESEGMENTSEGMENTBUFFER1BUFFER1DBDB100 DUP(0)100 DUP(0)BUFFER2BUFFER2DWDW200 DUP(20H

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論