計算機(jī)組成技術(shù)ch51_第1頁
計算機(jī)組成技術(shù)ch51_第2頁
計算機(jī)組成技術(shù)ch51_第3頁
計算機(jī)組成技術(shù)ch51_第4頁
計算機(jī)組成技術(shù)ch51_第5頁
已閱讀5頁,還剩44頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第五章匯編語言及其程序設(shè)計5.1匯編程序及其開發(fā)過程5.2指令格式及尋址方式5.38086宏匯編語言的基本語法5.4順序結(jié)構(gòu)程序設(shè)計5.5分支結(jié)構(gòu)程序設(shè)計5.6循環(huán)結(jié)構(gòu)程序設(shè)計5.7子程序設(shè)計5.38086宏匯編語言的基本語法5.3.1匯編語句5.3.2基本元素5.3.3指示性語句使用說明5.3.1匯編語句1.指令性語句(執(zhí)行性語句)經(jīng)匯編之后,有機(jī)器指令與之對應(yīng),是有實際操作的語句。2.指示性語句(說明性語句)功能:對程序的起止信息、分段情況、變量說明、內(nèi)存結(jié)構(gòu)等進(jìn)行說明。又稱為:偽指令指令性語句格式

[標(biāo)號:][前綴]指令助記符[操作數(shù)][,操作數(shù)][;注釋]標(biāo)號:代表“:”后面語句的存儲地址,供轉(zhuǎn)移指令(JMP)、轉(zhuǎn)子指令(CALL)、循環(huán)指令(LOOP)使用。標(biāo)號由字母、數(shù)字組成(第一個字符非數(shù)字)前綴:是與串操作運算(MOVS、CMPS、SCAS、LODS、STOS)以及總線封鎖指令(LOCK)配合使用的部分。它們是REP、REPZ、REPE、REPNZ、REPNE等等。例如:

LOOP1:REPMOVSDEST,SOURCE操作數(shù)的數(shù)目可以為0,1或2,用“,”隔開

2.指示性語句(偽指令)功能:對程序的起止信息、分段情況、變量說明、內(nèi)存結(jié)構(gòu)等進(jìn)行說明。匯編后不產(chǎn)生任何可執(zhí)行代碼。格式:

[名字]偽操作指令[參數(shù),……,參數(shù)][;注釋]PC宏匯編的偽指令段定義偽指令:SEGMENT,ENDS,ASSUME,GROUP,ORGPC宏匯編的偽指令(續(xù))符號定義偽指令:EQU,=數(shù)據(jù)定義偽指令:DB,DW,DD,DQ,DT過程定義偽指令:PROC,ENDP5.38086宏匯編語言的基本語法5.3.1匯編語句5.3.2基本元素5.3.3指示性語句使用說明5.3.2基本元素匯編語言字符集常量與數(shù)值表達(dá)式變量地址表達(dá)式5.3.2基本元素1.匯編語言字符集字母:A~Z,a~z注:匯編語言源程序中,大小寫字母作用相同數(shù)字:0~9符號:+,-,*,/,<,>,(,),[,],;,,,.,:,_,‘,“,@,$,&,#,?,!。

2.常量與數(shù)值表達(dá)式(1)常量在匯編時已經(jīng)確定的值。在指令中作為直接操作數(shù),或者給變量賦初值。類型數(shù)值常量:以數(shù)值的形式直接寫在語句中符號常量:預(yù)先為它定義一個名字,然后在語句中用名字來表示該常量(提高程序的可讀性)用EQU或=來定義例:PORTEQU83H,ALPHT=35*21數(shù)據(jù)形式格式X取值范圍例子注釋二進(jìn)制XXXXXXXXB0,101110101B八進(jìn)制XXXXOXXXXQ0~70~7735O421Q十進(jìn)制XXXXXXXXD0~90~937562358D缺省形式十六進(jìn)制XXXXH0~F0FB23H最前面的一個字符必須是0~9ASCII‘XX’“XX”ASCII字符128個‘OK’“Pass”十進(jìn)制實數(shù)XX.XXE±XX0~923.456E-7各種形式常量的格式(2).標(biāo)號標(biāo)號是為一條機(jī)器指令所起的名字,用于擔(dān)任程序轉(zhuǎn)移指令、調(diào)用指令和循環(huán)指令的操作數(shù)(轉(zhuǎn)向地址)。標(biāo)號一般在同一個CS段內(nèi)定義和使用。標(biāo)號的屬性:段地址、段內(nèi)偏移地址和類型標(biāo)號所處的代碼段的段基址,稱為該標(biāo)號的段地址??捎肧EG算符求取。標(biāo)號所處的位置相對于段首地址的相對地址,稱為該標(biāo)號的段內(nèi)偏移地址??捎肙FFSET算符求取。標(biāo)號的形式形式一:標(biāo)號形式二:OFFSET標(biāo)號LC1:MOVAL,20H……JMPLC1MOVBX,OFFSETLB1MOVBX,OFFSETLB1與MOVBX,LB1有什么不同?

標(biāo)號的類型標(biāo)號有

FAR(遠(yuǎn)標(biāo)號)和NEAR(近標(biāo)號)兩種類型近標(biāo)號:該標(biāo)號的定義在本段在機(jī)器指令助記符之前,加一標(biāo)號名字,后面緊跟一個冒號“:”

LC1:MOVAL,20H……JMPLC1“近標(biāo)號”只保存偏移地址。遠(yuǎn)標(biāo)號:該標(biāo)號的定義不在本段過程定義時,過程的名字也是標(biāo)號,可作為轉(zhuǎn)子指令的操作數(shù),這類標(biāo)號的類型在定義子過程時確定為遠(yuǎn)標(biāo)號

PROPPROCFAR……

PROPENDP“遠(yuǎn)標(biāo)號”同時保存段地址和偏移地址。標(biāo)號在使用時的注意事項

(1)循環(huán)指令、條件轉(zhuǎn)移指令只能引用NEAR型,并且定義標(biāo)號語句和使用標(biāo)號語句的相對距離只能在–128~+127字節(jié)范圍內(nèi)。(2)無條件轉(zhuǎn)移指令、調(diào)用(轉(zhuǎn)子)指令可引用NEAR和FAR兩種類型的標(biāo)號。(3)如果同一段內(nèi),無條件轉(zhuǎn)移指令語句到定義該標(biāo)號語句的距離在–128~+127字節(jié)范圍內(nèi),則可在使用的標(biāo)號前指定為短標(biāo)號。記為:SHORT標(biāo)號。5.3.2基本元素匯編語言字符集常量與數(shù)值表達(dá)式變量變量的定義及存儲分配語句變量的屬性段地址偏移地址類型地址表達(dá)式變量名:用戶定義(符合標(biāo)識符定義的規(guī)范)變量1.變量的定義及存儲分配語句變量是內(nèi)存中一個數(shù)據(jù)區(qū)的名字,可以作為指令的存儲器操作數(shù)來引用變量定義的格式:[變量名]變量類型表達(dá)式[,……]

變量類型:DB:1個字節(jié)

DW:2個字節(jié),1個字DD:4個字節(jié),2個字,DQ:8個字節(jié),4個字,DT:10個字節(jié),5個字變量定義的格式:[變量名]變量類型表達(dá)式[,……]

表達(dá)式算術(shù)運算符:+,-,*,/,邏輯運算符:NOT,AND,OR,XOR關(guān)系運算符:EQ----相等NE----不相等LT----小于GT----大于LE----小于或等于GE----大于或等于存儲內(nèi)容初始化語句數(shù)值表達(dá)式如:DATA_ADW3*20?

保留存儲空間但不存入數(shù)據(jù)例:ABCDB0,?,?,0DEFDW?,52ASCII字符串例:MESSAGEDB‘HELLO’00----00----3400……………………ABCDEF48H45H

4CH4CH4FH……………………MESSAGEnDUP(?)–重復(fù)因子n為正整數(shù),表示數(shù)據(jù)項重復(fù)n次例:ARRAY1DB2DUP(0,1,2,?)ARRAY2DB100DUP(?)000102--000102----…………ARRAY1ARRAY2--……100個字節(jié)變量1.變量的定義及存儲分配語句2.變量的屬性段地址偏移地址類型可通過:SEG

變量名

OFFSET

變量名

取得變量的段地址和偏移地址5.3.2基本元素匯編語言字符集常量與數(shù)值表達(dá)式變量地址表達(dá)式屬性取代類:“PRT”,“:”,屬性分離類:“SEG”,“OFFSET”,

“強制轉(zhuǎn)換為地址”符PTR

格式:類型PTR表達(dá)式類型:BYTE,WORD,DWORD

表達(dá)式:存儲器中的操作數(shù)說明:用來給已分配的存儲地址賦予另一種屬性,使該地址對應(yīng)另一種數(shù)據(jù)類型例:MOV[BX],5非法指令MOVBYTEPTR[BX],5MOVWORD

PTR[BX],5

越段前綴

:”說明:用來指明一個標(biāo)號、變量或地址表達(dá)式的段屬性例:用越段前綴來指定某段的地址操作數(shù)

MOVAX,ES:[BX+SI]5.3.2基本元素匯編語言字符集常量與數(shù)值表達(dá)式變量地址表達(dá)式屬性取代類:“PRT”,“:”屬性分離類:“SEG”,“OFFSET”,

取段地址符SEG

格式:SEG變量或標(biāo)號

說明:回送該變量或標(biāo)號的段地址例:MOVBX,SEGOPR將OPR所在的段基址送入BX寄存器取偏移地址符OFFSET

格式:OFFSET

變量或標(biāo)號

說明:回送該變量或標(biāo)號的偏移地址例:MOVBX,OFFSETOPR

則匯編程序?qū)PR的偏移地址回送給指令,在執(zhí)行時,將該偏移地址裝入BX寄存器中5.3.2基本元素匯編語言字符集常量與數(shù)值表達(dá)式變量地址表達(dá)式屬性取代類:“PRT”,“:”,屬性分離類:“SEG”,“OFFSET”,5.38086宏匯編語言的基本語法5.3.1匯編語句5.3.2基本元素5.3.3指示性語句使用說明1.段定義2.過程定義3.DOS下正常結(jié)束的方式1.段定義(1)段定義語句段名SEGMENT[邊界類型][連接類型][‘類別’]……段名ENDS其中:邊界類型:用來指明段的起始邊界。通常可空。連接類型:段的連接方式。通??煽?。類別:表示段的類別,連接程序只使同類別的段發(fā)生關(guān)聯(lián)。通??煽铡?2)段值設(shè)定偽指令語句ASSUME格式

ASSUME

段寄存器:段名[,段寄存器:段名,…]1.段定義SEGASEGMENT……SEGAENDSSEGBSEGMENT……SEGBENDSCODESEGMENTASSUMEDS:SEGA,ES:SEGB,CS:CODE,SS:NOTHINGMOVAX,SEGAMOVDS,AXMOVAX,SEGBMOVES,AX……CODEENDSMOVAX,4C00HINT21H(3)置匯編單元計數(shù)器語句ORG功能:指定其后的程序段或數(shù)據(jù)塊存放的起始地址的偏移量格式:ORG表達(dá)式匯編程序把ORG語句中表達(dá)式的值作為分配存儲空間的起始地址,連續(xù)存放程序和數(shù)據(jù),直到出現(xiàn)下一個ORG語句。ORG語句也可以省略,此時用從本段的起始地址開始連續(xù)地存放程序和數(shù)據(jù)。1.段定義例:VECTORSSEGMENTORG10VECT1DW47A5HORG20VECT2DWC596H……VECTORSENDSVECT1偏移地址為0AHVECT2偏移地址為14H(3)置匯編單元計數(shù)器語句ORG地址計數(shù)器$匯編程序?qū)υ闯绦蜻M(jìn)行匯編時,使用$保存當(dāng)前正在匯編的指令的偏移地址。開始匯編或在每一段開始時,地址計數(shù)器初始化為0,以后在匯編過程中,每處理一條指令,地址計數(shù)器增加一個值,此值為該指令所占的字節(jié)數(shù)。地址計數(shù)器$例JNE$+6

當(dāng)上一條指令執(zhí)行的結(jié)果不為零時,轉(zhuǎn)向地址是JNE指令的首地址加上6

注:$+6必須為另一條指令的首地址,否則,匯編程序?qū)⒅甘境鲥e信息。地址計數(shù)器$例:計算字符串的長度COUNT

STRINGDB“THISISABOOK”COUNTEQU$-STRINGCOUNTEQU($-ARRAY)/2計算數(shù)組元素的個數(shù)

COUNT

ARRAYDW1,2,3,4,5,6010002000300040005000600……$ARRAY0000H0001H0002H0003H0004H0005H0006H0007H0008H0009H000A

H000BH5.38086宏匯編語言的基本語法5.3.1匯編語句5.3.2基本元素5.3.3指示性語句使用說明1.段定義2.過程定義3.DOS下正常結(jié)束的方式2.過程定義過程,也稱為“子程序”,是一段可以反復(fù)調(diào)用的程序。CALL指令調(diào)用過程,RET指令結(jié)束過程過程具有“NEAR”屬性和“FAR”屬性NEAR屬性的過程,只能由屬于定義該過程的段中的其它程序調(diào)用具有FAR屬性的過程,可以由任意段調(diào)用如果不特殊說明,過程的默認(rèn)屬性是“NEAR”2.過程定義格式

過程名

PROCNEAR或FAR……RET

過程名

ENDPSEGXSEGMENT……SUBTPROCFAR……

RETSUBTENDP……CALLFARPTRSUBY……SEGXENDSSEGYSENGMENT……CALLFARPTRSUBT……SEGYENDS5.38086宏匯編語言的基本語法5.3.1匯編語句5.3.2基本元素5.3.3指示性語句使用說明1.段定義2.過程定義3.DOS下正常結(jié)束的方式3.DOS下程序正常結(jié)束的方式

方式1:MOVAH,4CH

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論