汇编语言等号=伪指令
等號(hào)偽指令(equal-sign directive)把一個(gè)符號(hào)名稱與一個(gè)整數(shù)表達(dá)式連接起來,其語法如下:
?
name = expression
通常,表達(dá)式是一個(gè) 32 位的整數(shù)值。當(dāng)程序進(jìn)行匯編時(shí),在匯編器預(yù)處理階段,所有出現(xiàn)的 name 都會(huì)被替換為 expression。假設(shè)下面的語句出現(xiàn)在一個(gè)源代碼文件開始的位置:
COUNT = 500
然后,假設(shè)在其后 10 行的位置有如下語句:
mov eax, COUNT
那么,當(dāng)匯編文件時(shí),MASM 將掃描這個(gè)源文件,并生成相應(yīng)的代碼行:
mov eax, 500
為什么使用符號(hào)?
程序員可以完全跳過 COUNT 符號(hào),簡(jiǎn)化為直接用常量 500 來編寫 MOV 指令,但是經(jīng)驗(yàn)表明,如果使用符號(hào)將會(huì)讓程序更加容易閱讀和維護(hù)。
設(shè)想,如果 COUNT 在整個(gè)程序中出現(xiàn)多次,那么,在之后的時(shí)間里,程序員就能方便地重新定義它的值:
COUNT = 600
假如再次對(duì)該源文件進(jìn)行匯編,則所有的 COUNT 都將會(huì)被自動(dòng)替換為 600。
當(dāng)前地址計(jì)數(shù)器
最重要的符號(hào)之一被稱為當(dāng)前地址計(jì)數(shù)器(current location counter),表示為 $。例如,下面的語句聲明了一個(gè)變量 selfPtr,并將其初始化為該變量的偏移量:
selfPtr DWORD $
鍵盤定義
程序通常定義符號(hào)來識(shí)別常用的數(shù)字鍵盤代碼。比如,27 是 Esc 鍵的 ASCII 碼:
Esc_key = 27
在該程序的后面,如果語句使用這個(gè)符號(hào)而不是整數(shù)常量,那么它會(huì)具有更強(qiáng)的自描述性。
使用
mov al,Esc_key ;好的編程風(fēng)格
而非
mov al,27????? ;不好的編程風(fēng)格
使用DUP操作符
《數(shù)據(jù)定義》一節(jié)說明了怎樣使用 DUP 操作符來存儲(chǔ)數(shù)組和字符串。為了簡(jiǎn)化程序的維護(hù),DUP 使用的計(jì)數(shù)器應(yīng)該是符號(hào)計(jì)數(shù)器。
在下例中,如果已經(jīng)定義了 COUNT,那么它就可以用于下面的數(shù)據(jù)定義中:
array dword COUNT DUP(0)
重定義
用“=”定義的符號(hào),在同一程序內(nèi)可以被重新定義。下例展示了當(dāng) COUNT 改變數(shù)值后,匯編器如何計(jì)算它的值:
COUNT = 5
mov al,COUNT ; AL = 5
COUNT = 10
mov al,COUNT ; AL = 10
COUNT = 100
mov al,COUNT ; AL = 100
符號(hào)值的改變,例如 COUNT,不會(huì)影響語句在運(yùn)行時(shí)的執(zhí)行順序。相反,在匯編器預(yù)處理階段,符號(hào)會(huì)根據(jù)匯編器對(duì)源代碼處理的順序來改變數(shù)值。
下一篇:計(jì)算數(shù)組和字符串長(zhǎng)度
強(qiáng)力推薦閱讀文章
年薪40+W的大數(shù)據(jù)開發(fā)【教程】,都在這兒!
總結(jié)
以上是生活随笔為你收集整理的汇编语言等号=伪指令的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: vsftpd的虚拟账户配置
- 下一篇: HTML常用标签+CSS基础