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

下載本文檔

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

文檔簡介

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

2、 匯編語言程序設(shè)計匯編語言程序設(shè)計34.1 4.1 匯編言語的格式匯編言語的格式微型計算機原理及應(yīng)用微型計算機原理及應(yīng)用第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計44.1.180864.1.18086匯編言語程序的一個例子匯編言語程序的一個例子MY_DATA SEGMENT MY_DATA SEGMENT ;定義數(shù)據(jù)段;定義數(shù)據(jù)段 SUM DB ? SUM DB ? ;為符號;為符號SUMSUM保管一個字節(jié)保管一個字節(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 ;端口的符號名;端口的符號名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)過;經(jīng)過ALAL輸出輸出 HLT HLT ;然后停機;然后停機NOT DONE:IN ALNOT DONE:IN AL,PORT_VAL PORT_VAL ;未超越時,輸入下一個字節(jié);未超越時,輸入下一個字節(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 ;整個程序終了;整個程序終了 微型計算機原理及應(yīng)用微型計算機原理及應(yīng)用第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計5由上例看出由上例看出80868086匯編的一個語句行由以下匯編的一個語句行由以下4 4個部分組成:個部分組成:標(biāo)號或稱號標(biāo)號或稱號 操作碼操作碼 操作數(shù)操作數(shù) ;注釋;注釋各部分之間至少要用一個空格作為間隔。各部分之間至少要用一個空格作為間隔。IBMIBM宏匯編對宏匯編對于語句行的格式是自在的,但假設(shè)寫成格式化就便于閱讀,于語

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

22、的標(biāo)志位被看作是一位存放器。位存放器。2.2.變量變量(Variable)(Variable)存放在存儲單元中的操作數(shù)是變量,由于它們的值是可存放在存儲單元中的操作數(shù)是變量,由于它們的值是可以改動的。在程序中出現(xiàn)的是存儲單元地址的符號,即它們以改動的。在程序中出現(xiàn)的是存儲單元地址的符號,即它們的稱號。的稱號。微型計算機原理及應(yīng)用微型計算機原理及應(yīng)用第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計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)。變量通常是用存儲器初始化命令定義的。變量通常是用存儲器初始化命令定義的。微型計算機原理及應(yīng)用微型計算機原理及應(yīng)用第第4 4章章 匯編語言程序設(shè)計匯編語言程

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

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

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

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

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

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

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

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

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

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

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

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

36、程序執(zhí)行時計算的。作為指令的助記符,那么是在程序執(zhí)行時計算的。微型計算機原理及應(yīng)用微型計算機原理及應(yīng)用第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計29(3) (3) 關(guān)系運算符關(guān)系運算符在在IBMIBM宏匯編中有以下關(guān)系運算符:宏匯編中有以下關(guā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)系運算的兩個操作數(shù),或者都是數(shù)字的,或者是同一關(guān)系運算的兩個操作數(shù),或者都是數(shù)字的,或者是同一個段的存儲器地址。結(jié)果一直是一個數(shù)字值。假設(shè)關(guān)系是假,個段的存儲器地址。結(jié)果一直是一個數(shù)字值。假設(shè)關(guān)系是假,那么結(jié)果為那么結(jié)果為0 0;假設(shè)關(guān)系是真,那么結(jié)果為;假設(shè)關(guān)系是真,那么結(jié)果為0FFFFH0FFFFH。微型計算機原理及應(yīng)用微型計算機原理及應(yīng)用第第4 4章章 匯編語言程序設(shè)計匯編語言程序設(shè)計30(4) (4) 分析運算符分析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

溫馨提示

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

評論

0/150

提交評論