小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

匯編語言的基本知識

 goandlove 2016-09-25

一、匯編語言的語句格式

    由匯編語言編寫的源程序是由許多語句(也可稱為匯編指令)組成的。每個語句由1~4個部分組成,其格式是:

    [標號]  指令助記符  [操作數(shù)]  [;注解]

    其中用方括號括起來的部分,可以有也可以沒有。每部分之間用空格(至少一個)分開,一行最多可有132個字符。

    1.標識符

    給指令或某一存儲單元地址所起的名字??捎上铝凶址M成:

    字母:A ~ z??; 數(shù)字:0 ~ 9 ; 特殊字符:?、· 、@、一、$ 。

    數(shù)字不能作標識符的第一個字符,而圓點僅能用作第一個字符。標識符最長為31個字符。當標識符后跟冒號時,表示是標號。它代表該行指令的起始地址;當標識符后不帶冒號時,表示變量;偽指令前的標識符不加冒號。

    2.指令助記符    

    表示不同操作的指令,可以是8086的指令助記符,也可以是偽指令。

    3.操作數(shù)

    指令執(zhí)行的對象。依指令的要求,可能有一個、兩個或者沒有,

    例如: RET    ;無操作數(shù)

    COUNT: INC  CX   ?。灰粋€操作數(shù)

    如果是偽指令,則可能有多個操作數(shù),例如:

    COST    DB    3,4,5,6,7  ;5個操作數(shù)

    MOV    AX,[BP+4]   ??;第二個操作數(shù)為表達式

    4.注解

    該項可有可無,是為源程序所加的注解,用于提高程序的可讀性。


二、匯編語言的運算符

1.算術(shù)運算符、邏輯運算符和關(guān)系運算符

    算術(shù)運算符可以應(yīng)用于數(shù)字操作數(shù),結(jié)果也是數(shù)字。而應(yīng)用于存儲器操作數(shù)時,只有+、-運算符有意義。


2.取值運算符SEG、OFFSET、TYPE、SIZE和LENGTH

    · SEG和OFFSET分別給出一個變量或標號的段地址和偏移量。

    例如,定義:    SLOT  DW  25

    則: MOV  AX,SLOT;從SLOT地址中取一個字送入AX

    MOV  AX,SEG  SLOT;將SLOT所在段的段地址送入AX

    MOV  AX,OFFSET  SLOT;將SLOT所在段的段內(nèi)偏移地址送AX

    · TYPE操作符返回一個表示存儲器操作數(shù)類型的數(shù)值。各種存儲器地址操作數(shù)類型部分的值如表4-1所示。

    

    ·LENGTH和SIZE操作符只應(yīng)用于數(shù)據(jù)存儲器操作數(shù)。(用DB/DW/DD等定義的操作數(shù))

    LENGTH返回一個與存儲器地址操作數(shù)相聯(lián)系的單元數(shù),

    SIZE操作數(shù)返回一個為存儲器操作數(shù)分配的字節(jié)數(shù)。

    例如:若  MULT-WORD DW 50DUP(0)

    則  LENGTH(MULT-WORD)=50

    SIZE(MULT-WORD)=100

    注意:SIZE(X)=(LENGTH X)*(TYPE X)


3.屬性運算符

    屬性運算符用來給指令中的操作數(shù)指定一個臨時屬性,而暫時忽略當前的屬性。常用的有:

    (1) 合成運算符PTR

    它作用于操作數(shù)時,則忽略了操作數(shù)當前的類型(字節(jié)或字)及屬性(NEAR或FAR),而給出一個臨時的類型或?qū)傩裕?/p>

    一般格式:類型    PTR   表達式

    功能:建立一個存儲器地址操作數(shù),它與其后的存儲器地址操作數(shù)有相同的段地址偏移量,但有不同的類型。

    例如:SLOT  DW  25

    此時SLOT已定義成字單元。若我們想取出它的第一個字節(jié)內(nèi)容,則可用PTR對其作用,使它暫時改變?yōu)樽止?jié)單元,

即 MOV  AL,BYTE  PTR  SLOT


三、表達式

由運算符和操作數(shù)組成的序列,在匯編時產(chǎn)生一個確定的值。這個值可以僅表示一個常量,也可以表示一個存儲單元的偏移地址,相應(yīng)的表達式稱為常量表達式和地址表達式。


1. 常數(shù)

匯編語言語句中出現(xiàn)的常數(shù)可以有7種:

    ① 二進制數(shù)  后跟字母B,如01000001B。

    ② 八進制數(shù)  后跟字母Q或O,如202Q或202O。

    ③ 十進制數(shù)  后跟D或不跟字母,如85D或85。

    ④ 十六進制數(shù)  后跟H,如56H,0FFH。注意,當數(shù)字的第一個字符是A~F時,在字符前應(yīng)添加一個數(shù)字0,以示和變量的區(qū)別。

另有,十進制浮點數(shù)、十六進制實數(shù)、字符和字符串


2.常量操作數(shù)

常量操作數(shù)是一個數(shù)值操作數(shù),一般是常量或者是表示常量的標識符??梢詾閿?shù)字常量操作數(shù)或字符串常量操作數(shù)。前者可采用二進制、八進制、十進制或十六進制等計數(shù)形式;而后者則為相應(yīng)字符的ASCII碼。


3.存儲器操作數(shù)

存儲器操作數(shù)是一個地址操作數(shù),代表一個存儲單元的地址,通常以標識符的形式出現(xiàn)。

    存儲器操作數(shù)可以分為變量及標號兩種類型,如果存儲器操作數(shù)所代表的是某個數(shù)據(jù)在數(shù)據(jù)段、附加段或堆棧段中的地址,那么這個存儲器操作數(shù)就稱為變量;如果存儲器操作數(shù)所代表的是某條指令代碼在代碼段中的地址,那么這個存儲器操作數(shù)稱為標號。(http://www.diangon.com/版權(quán)所有)變量所對應(yīng)的存儲單元內(nèi)容在程序的運行過程中是可以改變的,標號通常作為轉(zhuǎn)移指令或調(diào)用指令的目標操作數(shù),在程序運行過程中不能改變。

存儲器操作數(shù)有三個方面的屬性。

    (1)、段地址:即存儲器操作數(shù)所對應(yīng)的存儲單元所在段的段地址;

    (2)、偏移地址:即存儲器操作數(shù)所對應(yīng)的存儲單元在所在段內(nèi)的偏移地址;

    (3)、類型:變量的類型是相應(yīng)存儲單元所存放的數(shù)據(jù)項的字節(jié)數(shù);而標號的類型則反映了相應(yīng)存儲單元地址在作為轉(zhuǎn)移或調(diào)用指令的目標操作數(shù)時的尋址方式,可有兩種情況,即  NEAR和FAR。具體值可見表4-1

4.常量表達式

    由常量操作數(shù)及運算符構(gòu)成,在匯編時產(chǎn)生一個常量。

    如PORT、VAL+1、 OFFSET SUM、SEG SUM、TYPE CYCLE等。

5.地址表達式

    由存儲器操作數(shù)與運算符構(gòu)成,必須有明確的物理意義。

    例如  SUM+2、CYCLE-5

表達式SUM+2、CYCLE-5的值仍然是一個存儲器操作數(shù),該存儲器操作數(shù)的段地址與類型屬性分別與存儲器操作數(shù)SUM及CYCLE相同,但偏移地址分別比SUM及CYCLE大2或小5。表達式是在匯編時計算的,而變量單元的內(nèi)容在程序的運行過程中可以改變。


四、匯編語言程序匯編步驟

匯編語言程序要能在機器上運行,還必需將匯編源程序匯編成可執(zhí)行程序。為此必須完成以下幾個步驟。

1.編輯源程序

2.調(diào)用宏匯編對源程序進行匯編

3.對目標程序進行連接

4.運行可執(zhí)行程序并調(diào)試

電子愛動手,關(guān)注電子DIY

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多