微機原理及應(yīng)用 課件 6.3匯編語言的表達(dá)式_第1頁
微機原理及應(yīng)用 課件 6.3匯編語言的表達(dá)式_第2頁
微機原理及應(yīng)用 課件 6.3匯編語言的表達(dá)式_第3頁
微機原理及應(yīng)用 課件 6.3匯編語言的表達(dá)式_第4頁
微機原理及應(yīng)用 課件 6.3匯編語言的表達(dá)式_第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

微機原理及應(yīng)用第六章匯編語言程序設(shè)計第三講匯編語言的表達(dá)式下面我們來學(xué)習(xí)匯編語言的表達(dá)式在匯編語言中,表達(dá)式不是指令,所以它本身是不能執(zhí)行的,z匯編語言的表達(dá)式表達(dá)式不是指令不能執(zhí)行但是在對程序匯編的時候,表達(dá)式就會被計算當(dāng)程序執(zhí)行的時候,這些表達(dá)式就用計算的數(shù)值代替表達(dá)式匯編:運算表達(dá)式程序執(zhí)行:表達(dá)式有指定數(shù)值常用的表達(dá)式運算符有算數(shù)運算符,邏輯運算符,取值運算符和屬性運算符,我們分別來看一下,表達(dá)式常用的運算符算術(shù)運算符邏輯運算符取值運算符屬性運算符首先是算數(shù)運算符,算數(shù)運算符包括加減乘除和取余運算算術(shù)運算符01+、-、x、÷MOD取余運算舉個例子N1DB45h×6+9,這里的45h×6+9就是一個表達(dá)式,這個表達(dá)式在匯編之前是不會被計算的,在匯編之后,就有了自己的初值,這個初值就是45hx6+9計算出來的數(shù)值,算術(shù)運算符01N1DB45H×6+9匯編前:不被計算匯編后:有初值45hx6+9計算出的數(shù)值表達(dá)式MOVAL,8+7十進制數(shù)再比如moveal,8+7,這里的8+7是一個十進制的數(shù)在完成匯編以后,當(dāng)程序執(zhí)行到這里時,AL就會被附成15算術(shù)運算符01附成15再來看看邏輯運算符,邏輯運算符包括與或非和異或邏輯運算符02AND、OR、XOR、NOT與或非和異或MOVAL,0ADHAND0CCH比如我們這個例子,就是算ADh和ccH的與,并將結(jié)果賦值給AL邏輯運算符02ADh和ccH的與AL還有算術(shù)取值運算符它可以獲取一個標(biāo)號或者變量的偏移地址取值算術(shù)運算符03標(biāo)號變量的偏移地址比如MOVSI,OFFSETDATA1這里OFFSET就能獲取DATA1的偏移地址,并把這個值送給SI取值算術(shù)運算符03MOVSI,OFFSETDATA1將變量DATA1的偏移地址送SI同樣的功能,我們也可以用LEA指令來完成,使用LEA指令的話,這句話可以寫成LEASI,DATA1LEA指令就可以直接獲取目的操作數(shù)DATA1的偏移地址取值算術(shù)運算符03LEASI,DATA1直接獲取目的操作數(shù)DATA1的偏移地址取值運算符還包括SEG,SEG能夠獲取到標(biāo)號或者變量的段地址取值算術(shù)運算符03標(biāo)號SEG變量的段地址舉例說明:MOVAX,SEGDATA,這里SEG獲取了DATA的段地址并將這個值送往AX取值算術(shù)運算符03MOVAX,SEGDATADATA段地址AXPTR的作用再來看一下屬性運算符PTR這個運算符我們之前用過很多次,大家還記得它的作用嗎?它就是來限定存儲器操作數(shù)的字長的屬性運算符04限定存儲器操作數(shù)字長指定位于其后的存儲器操作數(shù)的類型比如,CALLDwordPTR[bx],這里bx放到了方括號里,它是寄存器間接尋址,那他究竟尋址多少個字節(jié)空間呢?屬性運算符04CALLDWORDPTR[BX]寄存器間接尋址比如,CALLDwordPTR[bx],這里bx放到了方括號里,它是寄存器間接尋址,那他究竟尋址多少個字節(jié)空間呢?屬性運算符04尋址多少個字節(jié)空間?PTR前面的Dword對它進行了限定,Dword的意思是doubleword也就是雙字,即4個字節(jié)那我們就知道這條指令會從內(nèi)存中取出4個字節(jié)的數(shù)據(jù)以進行子程序調(diào)用。屬性運算符04CALLDWORDPTR[BX]Dword對PTR進行限定doublewordDword4個字節(jié)存儲器操作數(shù)為4字節(jié)長子程序調(diào)用再來看第二個例子MOVAL,bytePTR[SI]這條指令中PTR的前面是BYTE,所以是從內(nèi)存單元中取出一個字節(jié),其實在這條指令中,不寫B(tài)YTEPTR也是可以的。屬性運算符04MOVAL,BYTEPTR[SI]內(nèi)存單元中取出一個字節(jié)將SI指向的字節(jié)數(shù)送AL我們來看一下這個判斷題,VRDW1234h,VR是一個變量,它的字長是兩個字節(jié)VARDW1234H變量兩個字節(jié)長如果用MOVAL,VAR的話,這條指令是錯的。因為在逗號兩邊,字長是不相等的,如果能讓兩端相等呢?你可以使用ptr限制只取VR一個字節(jié)的長度VARDW1234HMOVAL,VAR字長不相等ptr限制只取VR一個字節(jié)的長度比如下面這條指令它就用byteptr限制了只取VR的低地址的這個字節(jié),這樣程序就對了VARDW1234HMOVAL,VARMOVAL,BYTEPTRVAR再來看一下方括號指令,方括號指令表示存儲器操作數(shù)方括號里面的內(nèi)容就是存儲器操作數(shù)的偏移地址其他運算符05方括號[]存儲器操作數(shù)[]中的內(nèi)容表示操作數(shù)的偏移地址例如方括號中放了BX意思就是用BX的值作為存儲器操作數(shù)的偏移地址其他運算符05

MOVAX,[BX]BX值:存儲器操作數(shù)的偏移地址最后來看段超越運算符,段超越運算符用冒號表示它跟在段名之后,表示段超越,用來指明存儲器操作數(shù)的段屬性段超越運算符:在段名之后,表示段超越指明存儲器操作數(shù)的段

溫馨提示

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

評論

0/150

提交評論