![微機原理與接口技術(shù)第3章_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe5/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe51.gif)
![微機原理與接口技術(shù)第3章_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe5/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe52.gif)
![微機原理與接口技術(shù)第3章_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe5/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe53.gif)
![微機原理與接口技術(shù)第3章_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe5/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe54.gif)
![微機原理與接口技術(shù)第3章_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/23/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe5/2eaa1b3b-6dd2-469a-b33e-cfd47f6babe55.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、13.4 匯編語言程序格式與常用偽指令23.4.1 匯編語言程序格式1.一般格式 一個完整的匯編語言程序往往需要分成若干段來書寫。一個完整的匯編語言程序往往需要分成若干段來書寫。一般情況下,格式如下:一般情況下,格式如下: 3NAME1 SEGMENT 語句語句1 NAME1 ENDSNAME2 SEGMENT 語句語句 NAME2 ENDS END 標號標號n任何一個匯編語言程序都必須有一個邏輯代任何一個匯編語言程序都必須有一個邏輯代碼段和一條指示源程序結(jié)束的偽指令碼段和一條指示源程序結(jié)束的偽指令END。n堆棧段、數(shù)據(jù)段和附加段可根據(jù)程序的需要堆棧段、數(shù)據(jù)段和附加段可根據(jù)程序的需要選用。選用
2、。41.一般格式52. 匯編語言語句格式匯編語言語句格式指令性語句指令性語句指示性語句指示性語句CPU執(zhí)行的語句,執(zhí)行的語句,能夠生成目標代碼能夠生成目標代碼CPU不執(zhí)行,而由匯不執(zhí)行,而由匯編程序執(zhí)行的語句,編程序執(zhí)行的語句,不生成目標代碼(偽不生成目標代碼(偽指令)指令)62. 匯編語言語句格式匯編語言語句格式 指令性語句: 標號: 前綴 助記符 操作數(shù),操作數(shù) ;注釋指令的符號地址指令的符號地址標號后要有冒號標號后要有冒號操作碼,如有前綴操作碼,如有前綴,需用空格分開,需用空格分開注釋前加分號注釋前加分號7指示性語句格式(偽指令語句)符號名符號名 偽指令偽指令 參數(shù)參數(shù) ;注釋;注釋變量
3、的符號地址變量的符號地址其后不加冒號其后不加冒號對匯編過程的進一步對匯編過程的進一步說明,參數(shù)個數(shù)由偽說明,參數(shù)個數(shù)由偽指令確定指令確定指示匯編程序應(yīng)指示匯編程序應(yīng)執(zhí)行的具體操作執(zhí)行的具體操作宏指令語句 標號:標號: 宏指令名宏指令名 參數(shù)參數(shù)1 ,參數(shù),參數(shù)2 , ;注釋;注釋8宏指令是將程序中多次使用的程序段定義為一宏指令是將程序中多次使用的程序段定義為一條指令。在對宏指令匯編時,用原程序代碼取條指令。在對宏指令匯編時,用原程序代碼取代宏指令。代宏指令。93.4.2 常量、變量、表達式與運算符寄存器寄存器存儲器單元存儲器單元常量常量變量變量表達式與運算符表達式與運算符n在匯編語言程序中,數(shù)
4、據(jù)的表示形式大體上分在匯編語言程序中,數(shù)據(jù)的表示形式大體上分為兩種類型,即常量與變量。為兩種類型,即常量與變量。n用運算符把常量或變量連接起來的式子,稱為用運算符把常量或變量連接起來的式子,稱為表達式。表達式也可作為語句中的操作數(shù)。表達式。表達式也可作為語句中的操作數(shù)。10111.常量n數(shù)字常量數(shù)字常量n字符串常量字符串常量n例:例:A nMOV AL,An例:例:ABCD匯編時被譯成對應(yīng)的匯編時被譯成對應(yīng)的ASCII碼碼41H,42H,43H,44H用單引號引起的字符或字符串用單引號引起的字符或字符串常用的二進制、十進制、十六進制等。常用的二進制、十進制、十六進制等。2.變量n變量代表存放在
5、某存儲單元中的數(shù)據(jù),在程序變量代表存放在某存儲單元中的數(shù)據(jù),在程序運行期間可以改變,常以變量名的形式出現(xiàn)在運行期間可以改變,常以變量名的形式出現(xiàn)在程序中。程序中。n變量名是在程序中建立起來、可認為是存放數(shù)變量名是在程序中建立起來、可認為是存放數(shù)據(jù)的存儲單元的符號地址。據(jù)的存儲單元的符號地址。n變量名的取名規(guī)則與標號相同。變量名的取名規(guī)則與標號相同。12變量實例【例【例3-143-14】定義三個變量】定義三個變量DATA1DATA1、DATA2DATA2、DATA3DATA3。 13解:在程序中的數(shù)據(jù)段定義,語句如下:解:在程序中的數(shù)據(jù)段定義,語句如下: DATA SEGMENT DATA SE
6、GMENT DATA1 DB 12H DATA1 DB 12H DATA2 DW 1234H DATA2 DW 1234H DATA3 DD 12345678H DATA3 DD 12345678H DATA ENDS DATA ENDS變量的屬性14段段 偏移量偏移量類類 型型變量所在段的段地址變量所在段的段地址變量所指單元與段首之間的位移量變量所指單元與段首之間的位移量( (相對字節(jié)數(shù)相對字節(jié)數(shù)) )變量的長度(變量所占內(nèi)存單元個數(shù))變量的長度(變量所占內(nèi)存單元個數(shù))字節(jié)型、字型、雙字型等字節(jié)型、字型、雙字型等變量的定義n變量必須在使用之前定義,由匯編語言提供的變量必須在使用之前定義,由匯
7、編語言提供的偽指令來實現(xiàn)的,即為變量分配存儲器單元,偽指令來實現(xiàn)的,即為變量分配存儲器單元,預(yù)置初值。預(yù)置初值。n常用的偽指令有常用的偽指令有DBDB、DWDW、DDDD、DQDQ、DTDT等。等。15格式:格式: 變量名變量名 偽指令名偽指令名 表達表達式式 數(shù)值表達式、數(shù)值表達式、地址表達式、地址表達式、字符串、?、字符串、?、N DUPN DUP(表達式)(表達式)變量的定義16nDB 定義的變量為字節(jié)型定義的變量為字節(jié)型n說明變量所定義的每個操作數(shù)占說明變量所定義的每個操作數(shù)占1字節(jié)字節(jié)nDW 定義的變量為字類型(雙字節(jié))定義的變量為字類型(雙字節(jié))n說明變量所定義的每個操作數(shù)占說明變
8、量所定義的每個操作數(shù)占2字節(jié)字節(jié)nDD 定義的變量為雙字型(定義的變量為雙字型(4字節(jié))字節(jié))n說明變量所定義的每個操作數(shù)占說明變量所定義的每個操作數(shù)占4字節(jié)字節(jié)nDQ 定義的變量為定義的變量為4字型(字型(8字節(jié))字節(jié))nDT 定義的變量為定義的變量為10字節(jié)型字節(jié)型17偽指令例nDATA1 DB 11H,22H,33H,44HnDATA2 DW 11H,22H,3344HnDATA3 DD 22H,33445566H以上變量在內(nèi)存以上變量在內(nèi)存中的存放形式中的存放形式DATA111H22H33H44HDATA211H00H22H00H33H44HDATA322H00H00H00H55H66
9、H44H33H18幾點說明n偽指令的性質(zhì)決定所定義變量的屬性;偽指令的性質(zhì)決定所定義變量的屬性;n定義字符串必須用定義字符串必須用DB偽指令偽指令n例:例:n DATA1 DB ABCD,66HABCD41H42H43H44H66H數(shù)值表達式n為變量定義數(shù)值數(shù)據(jù)。為變量定義數(shù)值數(shù)據(jù)。19SUM DB 45,89H,10010101BNUMBER DW 4576H,-1,128TOTAL DD 7897AFE2H,4567H數(shù)據(jù)存放,低字節(jié)存數(shù)據(jù)存放,低字節(jié)存在低地址單元,高字在低地址單元,高字節(jié)存放高地址單元。節(jié)存放高地址單元。地址表達式n為變量定義存儲器地址。為變量定義存儲器地址。n由于段地
10、址和偏移地址都是由于段地址和偏移地址都是1616位數(shù)據(jù),所以只位數(shù)據(jù),所以只能使用能使用DWDW和和DDDD定義。其中定義。其中DWDW定義變量存放的是定義變量存放的是偏移地址,而偏移地址,而DDDD定義變量的偏移地址和段地址定義變量的偏移地址和段地址。20ADDR1 DW OFFSET SUM ADDR2 DD NUMBER取偏移地址取偏移地址定義偏移地址和段地址定義偏移地址和段地址字符串n可作為表達式使用,存放字符的可作為表達式使用,存放字符的ASCIIASCII碼值。碼值。21例如偽指令:例如偽指令:XYZ DB ABCD DATA DW CD,76 按字節(jié)依次存儲按字節(jié)依次存儲A、B、
11、C、D的的ASCII碼值碼值按字依次存放按字依次存放CD和和7、6的的ASCII碼值碼值 22N DUP(表達式)n重復(fù)操作符重復(fù)操作符n作用:作用:n可以復(fù)制某個(或某些)操作數(shù),也可以嵌套。可以復(fù)制某個(或某些)操作數(shù),也可以嵌套。n為一個數(shù)據(jù)區(qū)的各單元設(shè)置相同的初值;為一個數(shù)據(jù)區(qū)的各單元設(shè)置相同的初值;n目的:目的:n常用于聲明一個數(shù)據(jù)區(qū)常用于聲明一個數(shù)據(jù)區(qū)n格式:格式:n 變量名變量名 偽指令助記符偽指令助記符 n DUP(初(初值,值,)重復(fù)次數(shù)重復(fù)次數(shù)n例:例:nVAR1 DW 20 DUP( 30H )nDATA1 DB 3 DUP (4,3,DUP(1),),30H)nVAR1
12、 DB 20 DUP( ? )23為變量為變量VAR1分配分配20個字個字節(jié)的空間,初節(jié)的空間,初值為隨機值值為隨機值為變量為變量VAR1分分配配20個字單元,個字單元,均為均為0030H為為DATA1分配分配12個字節(jié)的空間,個字節(jié)的空間,初值()內(nèi)容初值()內(nèi)容24“?”的作用的作用n表示隨機值,不賦初值。表示隨機值,不賦初值。n用于既希望預(yù)留存儲空間而不關(guān)心具體為何用于既希望預(yù)留存儲空間而不關(guān)心具體為何值的情況。值的情況。n給變量保留相應(yīng)的存儲單元。給變量保留相應(yīng)的存儲單元。nMEM1 DB 34H,A,?,?n VAR1 DW 20 DUP(?)(?)預(yù)留預(yù)留40個字節(jié)單元,每單元為隨
13、機值個字節(jié)單元,每單元為隨機值隨機數(shù)隨機數(shù)占占1個字節(jié)單元個字節(jié)單元25應(yīng)用實例nM1 DB How are you?nM2 DW 3 DUP(11H),3344Hn M2 DB 4 DUP(?)(?)nM3 DB 3 DUP(22H,11H,?),?)變量在內(nèi)存中的分區(qū)變量在內(nèi)存中的分區(qū)26數(shù)據(jù)定義偽指令例M1How aM211H11H00H44H33H r e you?11H00H00H隨機數(shù)隨機數(shù)M311H22H11H22H11H22HXXXXXXXXXXXXXX兩點說明n變量類型與指令的要求必須相符變量類型與指令的要求必須相符n 27MOV AX,VAR1MOV BL, VAR2兩點說
14、明n在定義變量時,變量名對應(yīng)的是數(shù)據(jù)區(qū)的首地在定義變量時,變量名對應(yīng)的是數(shù)據(jù)區(qū)的首地址。如果數(shù)據(jù)區(qū)中有多個數(shù)據(jù),則在對其他數(shù)址。如果數(shù)據(jù)區(qū)中有多個數(shù)據(jù),則在對其他數(shù)據(jù)操作時,需修改地址。據(jù)操作時,需修改地址。n 28NUM DB 11H,22H,33H MOV AL, NUM+2送送33H到到AL中中【例【例3-153-15】數(shù)值變量的引用?!繑?shù)值變量的引用。 解:首先定義變量,然后引用,程序如下:解:首先定義變量,然后引用,程序如下: DA1 DB 0FFH DA1 DB 0FFH DA2 DW 2345H DA2 DW 2345H MOV AL MOV AL,DA1DA1 MOV BX M
15、OV BX,DA2DA229(AL)=0FFH(BX)=2345H【例【例3-163-16】 地址變量的引用。地址變量的引用。 解:引用變量名,取其偏移量,程序如下:解:引用變量名,取其偏移量,程序如下: DA3 DB 10H DUP(0) DA3 DB 10H DUP(0) DA4 DW 20H DUP(1) DA4 DW 20H DUP(1) MOV DA3SI MOV DA3SI,ALAL MOV DX MOV DX,DA4BXDIDA4BXDI 30313.表達式與運算符運算符運算符操作符操作符表達式:用運算符或操作符把常量、變量、標號表達式:用運算符或操作符把常量、變量、標號等連接起
16、來的式子,其值在程序匯編時是確定的。等連接起來的式子,其值在程序匯編時是確定的。算術(shù)操作符算術(shù)操作符邏輯運算符邏輯運算符關(guān)系運算符關(guān)系運算符數(shù)值返回操作符數(shù)值返回操作符屬性操作符屬性操作符(1)算術(shù)運算符n算術(shù)運算符算術(shù)運算符n+,-,*,/,MODnSHR和和SHL:移位運算符,用于邏輯移位,移:移位運算符,用于邏輯移位,移動的位數(shù)由動的位數(shù)由SHR/SHL右邊的次數(shù)決定。右邊的次數(shù)決定。n 若次數(shù)若次數(shù)16,結(jié)果恒為,結(jié)果恒為0。n :下標運算符,取表達式的值作為操作數(shù)地:下標運算符,取表達式的值作為操作數(shù)地址,若有兩個表達式,則以兩表達式的值之和址,若有兩個表達式,則以兩表達式的值之和作
17、為地址。作為地址。nHIGH與與LOW:取高:取高/低字節(jié)運算符。低字節(jié)運算符。32【例【例3-17】分析下面程序,確定變量的含義?!糠治鱿旅娉绦?,確定變量的含義。 NUM=5*4/7 ;NUM=2 NUM=NUM+5 ;NUM=7 NUM=NUM MOD 3 ;NUM=1 ORG 30H DATA1 DB 34H,56H,ABCD DATA2 DW 1234H,EF CONT=DATA2DATA1 DATA3=DATA2+2 33例例3-18】分析下面程序,確定移位運算符的作用?!糠治鱿旅娉绦颍_定移位運算符的作用。 NUM=10101101B MOV AX,NUM SHL 3 ADD DX
18、,NUM SHR 63435(2)邏輯運算符n邏輯運算符邏輯運算符nAND,OR,NOT,XORn例:例:nMOV AL,8 AND 4nMOV AL,8+4-1nMOV BH,VAR+2【例【例3-203-20】分析下面程序,確定邏輯運算符的作用?!糠治鱿旅娉绦?,確定邏輯運算符的作用。 MOV AX MOV AX,NOT 0F0F0H NOT 0F0F0H ;與指令;與指令MOV AXMOV AX,0F0FH0F0FH等效等效 MOV BL MOV BL,55H AND 0F0H 55H AND 0F0H ;與指令;與指令MOV BLMOV BL,50H50H等效等效 MOV BH MOV
19、BH,05H OR 30H 05H OR 30H ;與指令;與指令MOV BHMOV BH,35H35H等效等效 MOV CL MOV CL,55H XOR 0F0H 55H XOR 0F0H ;與指令;與指令MOV CLMOV CL,0A5H0A5H等效等效36(3)關(guān)系運算符n關(guān)系運算符如表關(guān)系運算符如表3-53-5所示,用于兩個表達式的所示,用于兩個表達式的比較,其結(jié)果為真(比較,其結(jié)果為真(1 1)或假()或假(0 0)。)。37表表3-5 關(guān)系運算符關(guān)系運算符 運算符運算符 語語 法法 運算(真)運算(真)EQ表達式表達式1 EQ 表達式表達式2 兩表達式相等為真兩表達式相等為真 N
20、E表達式表達式1 NE 表達式表達式2 兩表達式不相等為真兩表達式不相等為真LT表達式表達式1 LT 表達式表達式2表達式表達式1表達式表達式2為真為真GE表達式表達式1 GE 表達式表達式2表達式表達式1表達式表達式2為真為真 【例【例3-213-21】分析下面程序,確定關(guān)系表達式的作用?!糠治鱿旅娉绦?,確定關(guān)系表達式的作用。 MOV AX MOV AX,0FH EQ 1111B 0FH EQ 1111B MOV BX MOV BX,0FH NE 1111B0FH NE 1111B380FFFFH0(4)數(shù)值返回操作符n操作對象必須是變量或標號,操作后得到相應(yīng)操作對象必須是變量或標號,操作后
21、得到相應(yīng)的返回值。的返回值。n即即SEGSEG,OFFSETOFFSET,TYPETYPE,LENGTHLENGTH和和SIZESIZE。n用于分析存儲器操作數(shù)的屬性。用于分析存儲器操作數(shù)的屬性。3940返回變量名或標號所在段的段內(nèi)偏移量返回變量名或標號所在段的段內(nèi)偏移量返回變量名或標號所在段的段基值返回變量名或標號所在段的段基值TYPE 返回變量名或標號所屬類型的數(shù)字返回變量名或標號所屬類型的數(shù)字LENGTH 返回數(shù)組變量的元素個數(shù)返回數(shù)組變量的元素個數(shù)SIZE 返回數(shù)組變量所占的總字節(jié)數(shù)返回數(shù)組變量所占的總字節(jié)數(shù)OFFSETSEG41數(shù)值返回操作例 MOV AX,SEG DATA MOV
22、DS,AX MOV BX,OFFSET DATA LEA BX,DATA等價于等價于SEGn格式:格式:SEG 變量名或標號變量名或標號n功能:返回變量名或標號所在段的段基值。功能:返回變量名或標號所在段的段基值。42例例3-22:設(shè)變量:設(shè)變量K1和和ARRAY所在段的段基值分所在段的段基值分別是別是0314H和和0154H,取出后分別送,取出后分別送AX和和BX。 MOV AX,SEG K1 MOV BX,SEG ARRAYOFFSETn格式格式: OFFSET 變量名或標號變量名或標號n功能:返回變量名或標號所在段的段內(nèi)偏移量。功能:返回變量名或標號所在段的段內(nèi)偏移量。 43例例3-23
23、:設(shè)變量:設(shè)變量K1所在段的段內(nèi)偏移量是所在段的段內(nèi)偏移量是0125H,取出后送,取出后送SI。 MOV SI,OFFSET K1 TYPEn格式:格式:TYPE 變量名或標號變量名或標號n功能:返回變量名或標號所屬類型的數(shù)字。功能:返回變量名或標號所屬類型的數(shù)字。n對于對于DB,DW或或DD定義的變量名,返回值分定義的變量名,返回值分別為別為1,2,4;n對于對于NEAR與與FAR類型的標號,返回值分別為類型的標號,返回值分別為-1,-2。44LENGTHn格式:格式:LENGTH 變量名變量名n功能:返回數(shù)組變量的元素個數(shù),如果變量功能:返回數(shù)組變量的元素個數(shù),如果變量是用重復(fù)操作符是用重
24、復(fù)操作符DUP說明的,則返回最外層說明的,則返回最外層DUP給定的給定的N值值;如果沒有如果沒有DUP說明,返回值說明,返回值總是總是1。45SIZEn格式:格式:SIZE 變量名變量名n功能:返回數(shù)組變量所占總字節(jié)數(shù),其值等于功能:返回數(shù)組變量所占總字節(jié)數(shù),其值等于LENGTH*TYPE。4647數(shù)值返回操作例n若若BUFFERBUFFER存儲區(qū)用如下偽指令定義:存儲區(qū)用如下偽指令定義: n BUFFER DW 200 DUP(0) BUFFER DW 200 DUP(0)n 則:則:n TYPE TYPE BUFFER BUFFER 等于等于2 2n LENGTH BUFFER LENGT
25、H BUFFER等于等于200200n SIZE BUFFER SIZE BUFFER等于等于40040048(5)屬性運算符n 用于指定其后存儲器操作數(shù)的類型用于指定其后存儲器操作數(shù)的類型n 運算符:運算符:PTR,THISPTRn格式:類型格式:類型 PTR 地址表達式地址表達式n可以是可以是BYTE、WORD、DWORD或或NEAR、FAR。n地址表達式可以是用變量名或標號給出的有效地址表達式可以是用變量名或標號給出的有效地址以及其它形式的有效地址。地址以及其它形式的有效地址。n功能:臨時修改變量或標號的類型屬性。功能:臨時修改變量或標號的類型屬性。49 例: MOV BYTR PTRB
26、X,12H MOV AL, BYTE PTR VAR ADD BYTE PRT DA20, BLTHISn格式:格式:THIS 類型類型n功能:將功能:將THIS 后的類型屬性賦給變量所表示后的類型屬性賦給變量所表示的存儲單元,該單元的段與偏移量屬性不變。的存儲單元,該單元的段與偏移量屬性不變。50例如:例如: DAB EQU THIS BYTE JUMPF EQU THIS DAB LABEL BYTE JUMPF LABEL FAR513.4.3 常用偽指令由匯編程序執(zhí)行的由匯編程序執(zhí)行的“指令系統(tǒng)指令系統(tǒng)”,不能生成,不能生成目標代碼目標代碼-偽操作。偽操作。52(1)符號定義偽指令EQ
27、Un格式:格式:n 符號名符號名 EQU 表達式表達式n操作:操作:n用符號名取代后邊的表達式,不可重新定義用符號名取代后邊的表達式,不可重新定義以后在使用表達式時即可引用它所表示的內(nèi)以后在使用表達式時即可引用它所表示的內(nèi)容。容。nEQU說明的表達式不占用內(nèi)存空間。說明的表達式不占用內(nèi)存空間。n如果有符號名,則需要事先定義。如果有符號名,則需要事先定義。可以是常數(shù)、可以是常數(shù)、符號、數(shù)值符號、數(shù)值表達式表達式TEN EQU 0AHVAR EQU 2 MOV AL,TENMOV BX,VAR53 TEN=0AH VAR=偽操作后邊表達式的值 (AL)=0AH (BX)=102654DA EQU
28、1234H ADR1 EQU DS:BP+7 DATA EQU HEIGHT+91234H=DA段前綴的變址訪問賦給符號段前綴的變址訪問賦給符號ADR1地址表達式賦給符號地址表達式賦給符號DATA(2)賦值偽指令=n格式:格式:n 符號名表達式(或符號名)符號名表達式(或符號名)n功能:功能:n 與與EQUEQU語句類似,語句類似,EQUEQU中的符號不允許重復(fù)定中的符號不允許重復(fù)定義,而義,而“”允許符號名重復(fù)定義。允許符號名重復(fù)定義。55例:例: EXP=5 EXP=5 EXP=EXP+5 EXP=EXP+5 56(3)段定義偽指令SEGMENT/ENDSn說明邏輯段的起始和結(jié)束;說明邏輯
29、段的起始和結(jié)束;n說明不同程序模塊中同類邏輯段之間的聯(lián)系形說明不同程序模塊中同類邏輯段之間的聯(lián)系形n 態(tài)態(tài)57段定義偽指令格式段名段名 SEGMENT SEGMENT 定位類型定位類型 組合類型組合類型 類別類別 段名段名 ENDS ENDS對段起始邊界的對段起始邊界的要求,如要求,如PAGE,PARA,WORD,BYTE表示段與段的關(guān)系表示段與段的關(guān)系 定位類型:可以是定位類型:可以是PAGE、PARA、WORD或或BYTE。 組合類型:表示段與段之間的關(guān)系,可以是組合類型:表示段與段之間的關(guān)系,可以是NONE、PUBLIC、COMMON、AT表達式、表達式、STACK和和MEMORY。 類
30、別:用單引號括起來,連接時同類別的段類別:用單引號括起來,連接時同類別的段存放在連續(xù)的存儲區(qū)內(nèi),并組成段組名,典型存放在連續(xù)的存儲區(qū)內(nèi),并組成段組名,典型類別有類別有STACK、CODE等。等。5859(4)設(shè)定段寄存器偽指令n說明所定義邏輯段的性質(zhì)說明所定義邏輯段的性質(zhì)n格式:格式:n ASSUME 段寄存器名:段名,段寄存器名:段名, ,段,段寄存器名:段名寄存器名:段名段寄存器名可以段寄存器名可以是是CS,DS,ES,SS段名必須段名必須已經(jīng)定義已經(jīng)定義n功能功能n 指定變量與段寄存器之間的關(guān)系,但不能指定變量與段寄存器之間的關(guān)系,但不能把段地址裝入段寄存器中。把段地址裝入段寄存器中。n
31、段寄存器的初始化:段寄存器的初始化:n系統(tǒng)自動將代碼段的段地址放入系統(tǒng)自動將代碼段的段地址放入CS中,其他中,其他邏輯段的段地址由程序員自己裝入相應(yīng)的段邏輯段的段地址由程序員自己裝入相應(yīng)的段寄存器。寄存器。n在源程序中,在源程序中,ASSUME偽指令放在可執(zhí)行程偽指令放在可執(zhí)行程序開始位置的前面。序開始位置的前面。60n例:例:nASSUME CS:CODE,DS:DATA1,ES:DATA261(5)過程定義偽指令n格式:格式:n 過程名過程名 PROC NEAR/FARn n RETn 過程名過程名 ENDPn功能:定義一個過程,并說明它是功能:定義一個過程,并說明它是NEAR(段(段內(nèi)調(diào)
32、用)或內(nèi)調(diào)用)或FAR(段間調(diào)用)類型。(段間調(diào)用)類型。n注意:注意:PROC和和ENDP必須成對出現(xiàn)。必須成對出現(xiàn)。62過程入口的過程入口的符號地址符號地址63(6)程序結(jié)束偽指令n表示源程序結(jié)束表示源程序結(jié)束n格式:格式:n END 標號標號表示程序執(zhí)行的開始表示程序執(zhí)行的開始地址;可有可無地址;可有可無64(7)定義段起始偏移地址偽指令ORG 段內(nèi)程序代碼或變量的起始偏移地址格式: ORG 表達式例: ORG 2000H ORG $10計算值為計算值為非負常數(shù)非負常數(shù)ORGORG 30H DATA1 DB 34H,56H,ABCD DATA2 DW 1234H,EF 65定義下面定義下
33、面DATA1的起的起始偏移地址為始偏移地址為30H(8)標識符說明偽指令n格式:格式:n PUBLIC 標識符標識符n功能:功能:n 說明標識符的屬性是公共標識符。說明標識符的屬性是公共標識符。n 例:例:n PUBLIC NAME1 ,NAME2, n 66說明說明NAME1、NAME2屬于公共標識符,可以被屬于公共標識符,可以被其它模塊引用其它模塊引用(9)標識符說明偽指令EXTRNn格式:格式:n EXTRN 標識符標識符n功能:功能:n說明所使用的標識符在外部程序段中,即:說說明所使用的標識符在外部程序段中,即:說明當前模塊所使用的標識符中,哪些標識符是明當前模塊所使用的標識符中,哪些
34、標識符是已經(jīng)在其他模塊中被定義為指定類型的標識符已經(jīng)在其他模塊中被定義為指定類型的標識符。n標識符的含義與標識符的含義與PUBLIC中的標識符相同。中的標識符相同。n 例:例:n EXTRN NAME067(10)多文本匯編連接偽指令I(lǐng)NCLUDEn格式:格式:n INCLUDE 文件名文件名n功能:把指定的文本一起匯編,直到指定文本功能:把指定的文本一起匯編,直到指定文本文件的末尾,再繼續(xù)匯編其后的語句。文件的末尾,再繼續(xù)匯編其后的語句。68693.4.4 宏指令(1)宏定義指令n宏指令是利用宏指令是利用CPU指令系統(tǒng)中已有的指令按照指令系統(tǒng)中已有的指令按照一定的規(guī)則定義的新的指令。一定的規(guī)
35、則定義的新的指令。n宏指令的功能是根據(jù)用戶需要自己確定的。宏指令的功能是根據(jù)用戶需要自己確定的。n宏指令一但定義,在源程序中就可以像其它指宏指令一但定義,在源程序中就可以像其它指令一樣使用。令一樣使用。7071宏定義指令n 源程序中由匯編程序識別的具有獨n 立功能的一段程序代碼宏宏n由于宏指令不是指令系統(tǒng)提供的,所以,必由于宏指令不是指令系統(tǒng)提供的,所以,必須定義后才能使用。宏指令的定義是利用偽須定義后才能使用。宏指令的定義是利用偽指令實現(xiàn)的。指令實現(xiàn)的。 宏定義指令72n格式:格式:n 宏命令名宏命令名 MACRO n n n n n ENDM宏體(由指令語宏體(由指令語句組成的能句組成的能
36、完成某一特定功完成某一特定功能的一段程序)能的一段程序); ;宏定義開始偽指令宏定義開始偽指令; ;宏定義結(jié)束偽指令宏定義結(jié)束偽指令宏定義指令n說明:宏指令名由用戶指定,定義后在程序中可說明:宏指令名由用戶指定,定義后在程序中可以和指令一樣使用,即宏調(diào)用。其中形式參數(shù)為以和指令一樣使用,即宏調(diào)用。其中形式參數(shù)為可選項,多個參數(shù)之間用逗號可選項,多個參數(shù)之間用逗號“,”隔開;宏調(diào)隔開;宏調(diào)用時,用實參數(shù)代替形式參數(shù)。用時,用實參數(shù)代替形式參數(shù)。nMACRO/ENDM必須成對使用必須成對使用.匯編時,宏指令匯編時,宏指令中的偽指令不被匯編,其它指令的機器代碼插入中的偽指令不被匯編,其它指令的機器代
37、碼插入到調(diào)用處,同時在插入的每一條指令前添加到調(diào)用處,同時在插入的每一條指令前添加“+”號,這一過程稱為宏展開。號,這一過程稱為宏展開。73宏定義指令例74例例1.1.定義一條宏指令,實現(xiàn)對某寄存器算術(shù)左移定義一條宏指令,實現(xiàn)對某寄存器算術(shù)左移4 4次次 LSHIFT MACRO REG LSHIFT MACRO REG MOV MOV CL ,4CL ,4 SAL SAL REG ,CLREG ,CL ENDM ENDM形式參數(shù)形式參數(shù)宏指令宏指令LSHIFT實現(xiàn)對寄存器實現(xiàn)對寄存器REG左移左移4次。次。REG在調(diào)用時將由實際參數(shù)提供具體的寄存器名。在調(diào)用時將由實際參數(shù)提供具體的寄存器名。
38、 宏指令名宏指令名宏定義指令例75例例2.2.定義一條宏指令,定義一條宏指令, 實現(xiàn)對某寄存器左移實現(xiàn)對某寄存器左移/ /右移若干次右移若干次 SHIFT MACRO N, REG ,CC SHIFT MACRO N, REG ,CC MOV CL, N MOV CL, N S&CC REG, CL S&CC REG, CL ENDM ENDM 宏指令宏指令SHIFTSHIFT有三個形式參數(shù),有三個形式參數(shù),N N表表示移位的次數(shù),示移位的次數(shù),REGREG表示要移位的寄存表示要移位的寄存器,器,CCCC則指出移位方向。移位方向在指則指出移位方向。移位方向在指令的操作助記符中。
39、形式參數(shù)出現(xiàn)在助令的操作助記符中。形式參數(shù)出現(xiàn)在助記符中時,若不是在助記符的開頭,那記符中時,若不是在助記符的開頭,那么,前面必須加么,前面必須加 & &。 宏定義指令例76例例3.3.定義一條宏指令,實現(xiàn)將某字符串送屏幕顯示定義一條宏指令,實現(xiàn)將某字符串送屏幕顯示 SDISP MACRO MESSGE SDISP MACRO MESSGE LEA DX , LEA DX , MESSGEMESSGE MOV AH , 09 MOV AH , 09 INT 21H INT 21H ENDM ENDM形式參數(shù)形式參數(shù)該宏指令是顯示該宏指令是顯示MESSGEMESSGE所指明的緩沖
40、區(qū)的內(nèi)容,所以調(diào)用所指明的緩沖區(qū)的內(nèi)容,所以調(diào)用該宏指令時,代替形式參數(shù)的實際參數(shù)應(yīng)該是要顯示的緩該宏指令時,代替形式參數(shù)的實際參數(shù)應(yīng)該是要顯示的緩沖區(qū)的變量名。沖區(qū)的變量名。 宏調(diào)用格式:宏調(diào)用格式: 宏指令名宏指令名 宏調(diào)用與展開宏調(diào)用與展開1 .1 .宏調(diào)用宏調(diào)用 宏指令名是程序中已定義的宏指令的名宏指令名是程序中已定義的宏指令的名稱。實際參數(shù)應(yīng)與宏定義中的形式參數(shù)相對稱。實際參數(shù)應(yīng)與宏定義中的形式參數(shù)相對應(yīng)。應(yīng)。 當有多個形式參數(shù)時,提供的實際參數(shù)當有多個形式參數(shù)時,提供的實際參數(shù)的順序必須與形式參數(shù)的順序一致。的順序必須與形式參數(shù)的順序一致。 當提供的實際參數(shù)多于形式參數(shù)時,多當提供
41、的實際參數(shù)多于形式參數(shù)時,多余部分被忽略;當少于形式參數(shù)時,多余的余部分被忽略;當少于形式參數(shù)時,多余的形式參數(shù)變?yōu)榭?。形式參?shù)變?yōu)榭铡?SHIFT MACRO N, REG ,CC SHIFT MACRO N, REG ,CC MOV CL, N MOV CL, N S&CC REG, CL S&CC REG, CL ENDM ENDM SDISP MACRO MESSGE SDISP MACRO MESSGE LEA DX , LEA DX , MESSGEMESSGE MOV AH , 09 MOV AH , 09 INT 21H INT 21H ENDM ENDMSHI
42、FT 4,AX,AR SDISP STRING1宏調(diào)用,要宏調(diào)用,要對對AXAX的內(nèi)容的內(nèi)容右移右移4 4次。次。宏 調(diào) 用 , 指宏 調(diào) 用 , 指出顯示出顯示STRING1STRING1對應(yīng)對應(yīng)緩 沖 區(qū) 的 字緩 沖 區(qū) 的 字符串。符串。 宏展開是指在匯編過程中,當匯編到宏宏展開是指在匯編過程中,當匯編到宏調(diào)用語句時,它將用宏體中的一段程序來代調(diào)用語句時,它將用宏體中的一段程序來代替這條宏調(diào)用語句,并且語句中的形式參數(shù)替這條宏調(diào)用語句,并且語句中的形式參數(shù)被實際參數(shù)所取代。被實際參數(shù)所取代。 宏調(diào)用與展開宏調(diào)用與展開2 .2 .宏展開宏展開SHIFT MACRO N , REG , C
43、C MOV CL , N S&CC REG , CL ENDMCDISP MACRO MOV AH,02H INT 21H ENDM例如有如下的程序段:例如有如下的程序段: 宏定義:宏定義:形式參數(shù)形式參數(shù) 4.2.6 宏指令宏指令 MOV AL , BCD1 ;由由BCD1中取出中取出 ;一個字節(jié)的組合;一個字節(jié)的組合BCD碼碼 MOV DL , AL SHIFT 4 , DL , AR ;將將DL的內(nèi)容右移的內(nèi)容右移4次次 ADD DL , 30H CDISP ; 顯示高位顯示高位BCD碼碼 AND AL , 0FH ADD AL , 30H MOV DL, AL CDISP ;
44、顯示低位顯示低位BCD碼碼 宏調(diào)用:宏調(diào)用: 4.2.6 宏指令宏指令宏展開:宏展開:SHIFT MACRO N , REG , DIR MOV CL, N S&DIR REG,CL ENDM MOV MOV AL ,BCD1AL ,BCD1 MOV MOV DL ,ALDL ,AL SHIFT 4, SHIFT 4, DL ,ARDL ,AR + MOV + MOV CL ,4CL ,4 + SAR + SAR DL ,CLDL ,CL ADD ADD DL ,30H DL ,30H 宏體插入宏體插入 4.2.6 宏指令宏指令宏展開:宏展開:CDISP MACRO MOV AH, 0
45、2H INT 21H ENDM CDISP CDISP+ MOV AH,02H+ MOV AH,02H+ INT 21H+ INT 21H AND AL,0FH AND AL,0FH ADD AL,30H ADD AL,30H MOV DL,AL MOV DL,AL CDISP CDISP+ MOV AH,02H+ MOV AH,02H+ INT 21H + INT 21H 宏體插入宏體插入 4.2.6 宏指令宏指令 宏展開后,在每條宏調(diào)用指令語句后宏展開后,在每條宏調(diào)用指令語句后面是宏指令中所包含的語句(宏體),在面是宏指令中所包含的語句(宏體),在文件名文件名.LST.LST文件中,這些語
46、句前通常有標文件中,這些語句前通常有標志,如例中冠有加號志,如例中冠有加號+,也有些匯編程,也有些匯編程序匯編后在宏展開語句前冠以序匯編后在宏展開語句前冠以11。【例【例3-243-24】定義一條宏指令,可以實現(xiàn)移位操作功能?!慷x一條宏指令,可以實現(xiàn)移位操作功能。 解:使用宏定義指令來完成,定義過程如下:解:使用宏定義指令來完成,定義過程如下: SHIFT MACRO REG X SHIFT MACRO REG X, N N MOV CL MOV CL,N N S&X REG S&X REG,CLCL ENDM ENDM 參數(shù)參數(shù)REGREG代表寄存器名,代表寄存器名,X X
47、代表操作碼,代表操作碼,N N代表移位次數(shù)。為了使參代表移位次數(shù)。為了使參數(shù)可以出現(xiàn)在指令助記符中,用數(shù)可以出現(xiàn)在指令助記符中,用& &符號連接。宏調(diào)用:符號連接。宏調(diào)用: SHIFT AX SHIFT AX,ARAR,3 3 SHIFT DL SHIFT DL,HRHR,6 6 宏展開:宏展開: +MOV CL, 3 +MOV CL, 3 +SAR AX, CL +SAR AX, CL +MOV CL, 6 +MOV CL, 6 +SHR DL, CL +SHR DL, CL86(2)取消宏定義偽指令 PURGEn格式:格式:n PURGE 宏指令名宏指令名,n功能:功能:n
48、 取消宏指令名的定義,可以同時取消多個宏取消宏指令名的定義,可以同時取消多個宏定義。定義。87宏指令與子程序的區(qū)別宏指令與子程序的區(qū)別 通過上述內(nèi)容的介紹,宏指令在有些方通過上述內(nèi)容的介紹,宏指令在有些方面與子程序十分相似,它們都可以是程序中面與子程序十分相似,它們都可以是程序中可能多次使用的一個程序段,在定義后,它可能多次使用的一個程序段,在定義后,它們都可以被調(diào)用,對于源程序的編寫和程序們都可以被調(diào)用,對于源程序的編寫和程序的調(diào)試都帶來一定的方便。的調(diào)試都帶來一定的方便。 但是宏指令與子程序也有許多不同之處,但是宏指令與子程序也有許多不同之處,子程序匯編后的機器碼只出現(xiàn)在一處,而宏子程序匯
49、編后的機器碼只出現(xiàn)在一處,而宏指令則不同,匯編后,凡是宏調(diào)用處都將被指令則不同,匯編后,凡是宏調(diào)用處都將被宏體所代替,所以,采用子程序可以節(jié)省內(nèi)宏體所代替,所以,采用子程序可以節(jié)省內(nèi)存,而宏指令則不節(jié)省內(nèi)存。存,而宏指令則不節(jié)省內(nèi)存。 但子程序執(zhí)行時必須通過調(diào)用和返回使但子程序執(zhí)行時必須通過調(diào)用和返回使主程序與子程序聯(lián)系起來,而宏指令在執(zhí)行主程序與子程序聯(lián)系起來,而宏指令在執(zhí)行時不需要這樣的時間開銷,因而宏指令在執(zhí)時不需要這樣的時間開銷,因而宏指令在執(zhí)行時時間上要比子程序短,特別是某些多次行時時間上要比子程序短,特別是某些多次使用的程序段本身就很短的時候,采用宏定使用的程序段本身就很短的時候,
50、采用宏定義,這一優(yōu)點就更為明顯。義,這一優(yōu)點就更為明顯。 程序設(shè)計中究竟采用子程序還是采用程序設(shè)計中究竟采用子程序還是采用宏指令要根據(jù)時間和空間矛盾的具體情況而宏指令要根據(jù)時間和空間矛盾的具體情況而定。定。 923.4.5 條件匯編n格式:格式: n IF n n ELSEn n ENDIFn功能:當條件為真,匯編程序段功能:當條件為真,匯編程序段1,跳過程序段,跳過程序段2;當條件為假,跳過程序段;當條件為假,跳過程序段1,匯編程序段,匯編程序段2。93(1 1)IF IF 表達式表達式 功能:表達式的值不為功能:表達式的值不為0 0,條件為真。,條件為真。(2 2)IFE IFE 表達式表
51、達式 功能:表達式的值為功能:表達式的值為0 0,條件為真。,條件為真。(3 3)IFB IFB 功能:參數(shù)為空,條件為真。功能:參數(shù)為空,條件為真。(4 4)IFNB IFNB 功能:參數(shù)不為空,條件為真。功能:參數(shù)不為空,條件為真。9495963.4.6 保護方式編程指令n保護方式和實地址方式以同樣的方式使用和執(zhí)行保護方式和實地址方式以同樣的方式使用和執(zhí)行指令,區(qū)別在于生成主存物理地址的不同。指令,區(qū)別在于生成主存物理地址的不同。n在實地址方式中,是段寄存器左移在實地址方式中,是段寄存器左移4 4位加偏移量位加偏移量而生成物理地址。而生成物理地址。n在保護方式中,段寄存器中是一個在保護方式
52、中,段寄存器中是一個1313位的選擇符位的選擇符,根據(jù)選擇符可訪問一個,根據(jù)選擇符可訪問一個8 8字節(jié)的描述符,再從字節(jié)的描述符,再從中獲取段起始地址。中獲取段起始地址。97保護方式控制指令n裝 入 全 局裝 入 全 局 / 中 斷 描 述 符 表 寄 存 器 指 令中 斷 描 述 符 表 寄 存 器 指 令LGDT/LIDTn裝入局部描述符表寄存器指令裝入局部描述符表寄存器指令LLDTn裝入任務(wù)狀態(tài)段寄存器指令裝入任務(wù)狀態(tài)段寄存器指令LTRn裝入機器標志字指令裝入機器標志字指令LMSWn調(diào)整選擇符特權(quán)級調(diào)整選擇符特權(quán)級RPL指令指令A(yù)RPLn清除任務(wù)切換標志清除任務(wù)切換標志CLTS98裝入全
53、局/中斷描述符表寄存器指令LGDT/LIDTn格式:格式:LGDT/LIDT SRCn功能:把功能:把SRC指定的指定的6B(48位)數(shù)據(jù)裝入描述位)數(shù)據(jù)裝入描述符表寄存器符表寄存器GDTR/IDTR中,前中,前2個茲節(jié)是描述個茲節(jié)是描述符表的界限值,后符表的界限值,后4個字節(jié)是描述符表線性基個字節(jié)是描述符表線性基地址值。對狀態(tài)標志無影響。地址值。對狀態(tài)標志無影響。n例:例:n LGDT DI99裝入局部描述符表寄存器指令LLDTn格式:格式:LLDT SRCn功能:把功能:把SRC指定的數(shù)據(jù)作為選擇符裝入描述指定的數(shù)據(jù)作為選擇符裝入描述符表寄存器符表寄存器LDTR中。源操作數(shù)可以是中。源操作
54、數(shù)可以是16位寄位寄存器或存儲器單元,其中選擇符是指向全局描存器或存儲器單元,其中選擇符是指向全局描述表述表GDT中類型為中類型為LDT的選擇符。對狀態(tài)標志的選擇符。對狀態(tài)標志無影響。無影響。n例如:例如:n LLDT BX100裝入任務(wù)狀態(tài)段寄存器指令LTRn格式:格式:LTR SRCn功能:把功能:把SRC指定的數(shù)據(jù)作為選擇符裝入任務(wù)指定的數(shù)據(jù)作為選擇符裝入任務(wù)狀態(tài)段寄存器狀態(tài)段寄存器TR中,并使裝入的任務(wù)狀態(tài)段中,并使裝入的任務(wù)狀態(tài)段標記為忙,但不發(fā)生任務(wù)切換。源操作數(shù)可以標記為忙,但不發(fā)生任務(wù)切換。源操作數(shù)可以是是16位寄存器或存儲器單元,它指向位寄存器或存儲器單元,它指向GDT中一中
55、一個忙的個忙的TSS描述符。對狀態(tài)標志無影響。描述符。對狀態(tài)標志無影響。101裝入機器標志字指令LMSWn 格式:格式:LMSW SRCLMSW SRCn 功能:把功能:把SRCSRC指定的數(shù)據(jù)裝入控制寄存器指定的數(shù)據(jù)裝入控制寄存器CR0CR0的低的低1616位。位。102調(diào)整選擇符特權(quán)級RPL指令A(yù)RPLn格式:格式:ARPL DEST,REGn功能:若操作數(shù)功能:若操作數(shù)DEST的的RPL小于或等于操作小于或等于操作數(shù)數(shù)REG的的RPL,則,則ZF置置1,并用操作數(shù),并用操作數(shù)REG的的RPL修改操作數(shù)修改操作數(shù)DEST的的RPL;若操作數(shù);若操作數(shù)DEST的的RPL大于操作數(shù)大于操作數(shù)R
56、EG的的RPL,則,則DEST不變不變,ZF清清0。103清除任務(wù)切換標志CLTSn格式:格式:CLTSn功能:清除控制寄存器功能:清除控制寄存器CR0中的任務(wù)切換標志中的任務(wù)切換標志TS,即,即TS清清0。104保護參數(shù)檢驗指令n檢查數(shù)組邊界指令檢查數(shù)組邊界指令BOUNDn控制寄存器裝入指令控制寄存器裝入指令n控制寄存器存儲指令控制寄存器存儲指令n保存保存GDTR/IDTR指令指令SGDT/SIDTn保存保存LDTR指令指令SLDTn保存機器標志字指令保存機器標志字指令SMSW105檢查數(shù)組邊界指令BOUNDn 格式:格式:BOUND REG,MEMn 功能:檢查數(shù)組下標(索引)是否違反了邊
57、界功能:檢查數(shù)組下標(索引)是否違反了邊界,若違反則產(chǎn)生異常中斷,若違反則產(chǎn)生異常中斷5。106控制寄存器裝入指令n 格式:格式:MOV CRn,SRCn 功能:把源操作數(shù)功能:把源操作數(shù)SRC指定的指定的32位寄存器中的位寄存器中的數(shù)據(jù)裝入數(shù)據(jù)裝入CR0、CR2或或CR3中。中。107控制寄存器存儲指令n 格式:格式:MOV DEST,CRnn 功能:把控制寄存器功能:把控制寄存器CR0、CR2或或CR3中的數(shù)中的數(shù)據(jù)存入據(jù)存入DEST指定的指定的32位寄存器中。位寄存器中。108保存GDTR/IDTR指令SGDT/SIDTn 格式:格式:SGDT/SIDT DESTn 功能:把描述符表寄存
58、器功能:把描述符表寄存器GDTR/IDTR中的內(nèi)中的內(nèi)容存入容存入DEST指定的連續(xù)指定的連續(xù)6B(48位)單元中。位)單元中。109保存LDTR指令SLDTn 格式:格式:SLDT DESTn 功能:把局部描述符表寄存器功能:把局部描述符表寄存器LDTR中的內(nèi)容中的內(nèi)容存入存入DEST指定的指定的16位目的寄存器或存儲器單位目的寄存器或存儲器單元中。元中。110保存機器標志字指令SMSWn格式:格式:SMSW DESTn功能:把功能:把CR0的低的低16位存儲到位存儲到DEST指定的寄指定的寄存器或存儲器單元中。存器或存儲器單元中。111進入保護方式n在開機或在開機或RESET復(fù)位之后,復(fù)位
59、之后,80486進入實地址方進入實地址方式,如果進入保護方式需要對各系統(tǒng)表和寄存式,如果進入保護方式需要對各系統(tǒng)表和寄存器進行初始化。器進行初始化。n建立全局建立全局/中斷描述符表中斷描述符表GDT/IDT、任務(wù)狀態(tài)段、任務(wù)狀態(tài)段TSS等;等;n執(zhí)行指令執(zhí)行指令MOV CRn,SRC,將控制寄存器,將控制寄存器CR0中的中的PE置置1。n在進入保護方式后首先執(zhí)行段間跳轉(zhuǎn)在進入保護方式后首先執(zhí)行段間跳轉(zhuǎn)JMP,轉(zhuǎn),轉(zhuǎn)向保護方式下的初始化程序,對代碼段寄存器向保護方式下的初始化程序,對代碼段寄存器CS、數(shù)據(jù)段寄存器、數(shù)據(jù)段寄存器SS、DS、ES、FS、GS及任及任務(wù)狀態(tài)段寄存器務(wù)狀態(tài)段寄存器TR等
60、進行設(shè)置。等進行設(shè)置。1121133.5 匯編語言程序設(shè)計概述n一個完整的程序一般由若干段構(gòu)成,即數(shù)據(jù)一個完整的程序一般由若干段構(gòu)成,即數(shù)據(jù)段、代碼段、堆棧段,有時還有附加段,其段、代碼段、堆棧段,有時還有附加段,其核心是代碼段。核心是代碼段。n程序可分為順序程序、分支程序、循環(huán)程序程序可分為順序程序、分支程序、循環(huán)程序和子程序。和子程序。114設(shè)計步驟可歸納如下:設(shè)計步驟可歸納如下: (1 1)分析問題,確定算法;)分析問題,確定算法; (2 2)繪制流程圖;)繪制流程圖; (3 3)編寫程序;)編寫程序; (4 4)上機調(diào)試。)上機調(diào)試。115概述順序程序設(shè)計n順序程序是按照指令序列順序執(zhí)行。順序程序是按照指令序列順序執(zhí)行。116n【例【例3-25】 把字節(jié)存儲單元把字節(jié)存儲
溫馨提示
- 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)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 軟件安全人才隊伍建設(shè)研究-詳解洞察
- 梧州2025年廣西梧州市事業(yè)單位招聘1257人筆試歷年參考題庫附帶答案詳解
- 2025年中國塑鋼垂簾軌市場調(diào)查研究報告
- 2025年針織橫機配件項目可行性研究報告
- 廣州廣東廣州市花都區(qū)花山鎮(zhèn)和郁小學(xué)臨聘教師招聘筆試歷年參考題庫附帶答案詳解
- 廣東廣東海洋大學(xué)后勤保障部招聘非編制水電維修工(第二次)筆試歷年參考題庫附帶答案詳解
- 2025年球衣網(wǎng)布項目可行性研究報告
- 2025年水電解器架項目可行性研究報告
- 2025至2031年中國旋風(fēng)式二級回收裝置行業(yè)投資前景及策略咨詢研究報告
- 2025年抗菌防霉乳膠漆項目可行性研究報告
- 混凝土地坪施工方案
- 反腐倡廉廉潔行醫(yī)
- 健身教練基礎(chǔ)知識匯編
- 大頭兒子和小頭爸爸簡介課件
- 綜合性學(xué)習(xí)“孝親敬老從我做起”歷年中考語文試題匯編
- 高中體育與健康-足球運球教學(xué)課件設(shè)計
- GMS要素-持續(xù)改進(CI)-上汽通用五菱-課件
- 信訪事項復(fù)查復(fù)核申請書
- 神經(jīng)遞質(zhì)和神經(jīng)調(diào)質(zhì)生
- 18CS01 裝配式箱泵一體化消防給水泵站選用及安裝-MX智慧型泵站
- 枇杷常見病蟲害一覽表專家講座
評論
0/150
提交評論