汇编中的LABEL详解
LABEL 偽指令可以插入一個標號,并定義它的大小屬性,但是不為這個標號分配存儲空間。LABEL 中可以使用所有的標準大小屬性,如 BYTE、WORD、DWORD(雙字)、QWORD(四字) 或 TBYTE。
LABEL 常見的用法是,為數據段中定義的下一個變量提供不同的名稱和大小屬性。如下例所示,在變量 val32 前定義了一個變量,名稱為 val16 屬性為 WORD:
.data
val16 LABEL WORD
val32 DWORD 12345678h
.code
mov ax,val16 ; AX = 5678h
mov dx,[val16+2] ; DX = 1234h
val16 與 val32 共享同一個內存位置。LABEL 偽指令自身不分配內存。
有時需要用兩個較小的整數組成一個較大的整數,如下例所示,兩個 16 位變量組成一個 32 位變量并加載到 EAX 中:
.data
LongValue LABEL DWORD
val1 WORD 5678h
val2 WORD 1234h
.code
mov eax,LongValue ; EAX = 12345678h
LABEL的功能是定義變量或標號的類型,而變量或標號的段屬性和偏移屬性由該語句所處的位置確定。
外文名
LABEL
格式
變量/標號
變量的類型:BYTE、WORD、DWORD、DQ、DT
標號的類型:NEAR、FAR
匯編語言
符號定義偽指令——LABEL偽指令
格式:變量/標號 LABEL 類型
變量的類型有:BYTE、WORD、DWORD、DQ、DT;
標號的類型有:NEAR、FAR;
例如:
Buffer1 LABEL WORD
Buffer2 DB 20 DUP (0)
通常,緊接著的下一條語句定義的類型與LABEL指定的類型不同。而實際上,Buffer1是Buffer2的別名,兩者指向內存中的同一個存儲地址。換言之,同一組數據定義了兩種不同的類型,在接受不同數據類型的訪問時,可以指定相應的標號。如接受一個字類型數據訪問時,使用Buffer1;接受字節類型數據訪問時,使用Buffer2。否則因為數據類型不匹配,編譯器編譯時將出現異常。
來源:https://wapbaike.baidu.com/item/LABEL/2259659?fr=aladdin&ms=1&rid=9431757271298324024
總結
以上是生活随笔為你收集整理的汇编中的LABEL详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C++中的union(联合体,共用体,数
- 下一篇: 标号的类型是near还是far有什么区别