=、equ、textequ 功能差不多, 它們定義的符號都將在編譯前輩替換成它們指定的常量值.
相比之下 equ 更好用些.
= 舉例
; test13_1.asm.386
.model
flat
, stdcall
include
windows.inc
include
kernel32.inc
include
masm32.inc
include
debug.inc
includelib
kernel32.lib
includelib
masm32.lib
includelib
debug.lib
.data
n =
1; = 偽指令只能定義整數或整數表示式n = n +
1; 可
重複定義
.code
main
proc
printdec n
;2ret
main
endp
endmain
equ 例一
; test13_2.asm.386
.model
flat
, stdcall
include
windows.inc
include
kernel32.inc
include
masm32.inc
include
debug.inc
includelib
kernel32.lib
includelib
masm32.lib
includelib
debug.lib
.data
num1
equ
2 ; equ 可以定義整數和整數表示式
num2
equ
3 ;
它不能像 = 一樣重複定義
num3
equ num1+num2; (我嘗試了重複定義, 竟然有時也可以, 只是偶爾)
txt
equ <
'asm'
> ;可用 equ 定義字串, 應使用 <>
sztxt
db txt,
0 ; 使用 equ 定義的常量
.code
main
proc
printdec num3 ;5
printstring sztxt;asm
retmain
endp
end main
equ 例二
; test13_3.asm.386
.model
flat
, stdcall
include
windows.inc
include
kernel32.inc
includelib
kernel32.lib
include
user32.inc
includelib
user32.lib
; 用 equ 給函式重新命名
msg
equ messagebox
exit
equ ;尖括號可
保證字串的完整、並避免和關鍵字衝突(
是否類似於c中巨集定義的()?
)
; 甚至代替整個表示式
showmsg
equ <
invoke
messagebox,
null
, addr
szmsg,
addr
szcaption, mb_ok>
.data
szmsg db
'hello world!', 0
szcaption db
'hi', 0
.code
main
proc
invoke
msg,
null
, addr
szmsg,
addr
szcaption, mb_ok
showmsg
invoke
exit,
null
main
endp
end main
用 textequ 重做上乙個例子, 完全可行:
; test13_4.asm.386
.model
flat
, stdcall
include
windows.inc
include
kernel32.inc
includelib
kernel32.lib
include
user32.inc
includelib
user32.lib
msg
textequ
messagebox
exit
textequ
showmsg
textequ
<
invoke
messagebox,
null
, addr
szmsg,
addr
szcaption, mb_ok>
.data
szmsg db
'hello world!', 0
szcaption db
'hi', 0
.code
main
proc
invoke
msg,
null
, addr
szmsg,
addr
szcaption, mb_ok
showmsg
invoke
exit,
null
main
endp
end main
用 textequ 重做 equ 的第乙個例子(test13_2.asm), 有區別:
; test13_5.asm.386
.model
flat
, stdcall
include
windows.inc
include
kernel32.inc
include
masm32.inc
include
debug.inc
includelib
kernel32.lib
includelib
masm32.lib
includelib
debug.lib
.data
num1
equ
2 ; 這裡的 equ 換做 textequ 不行
num2
textequ
<
3> ; 如果用 textequ 定義整數或表示式也要放在 <> 中
num3
textequ
; 這曾是 num3 equ num1+num2
txt
textequ
<
'asm'
> ;
txt
textequ
<
'delphi'
> ; textequ 可重複定義
sztxt
db txt, 0.
code
main
proc
printdec num3 ;5
printstring sztxt;delphi
retmain
endp
end main
常量符號定義
1 特點 編譯時符號所在的位置就會替換為它代表的常量 2 偽指令 2.1 語法 name expreion 2.1.1 expression 只能是整數或整數表示式 2.1.2 name 可以重複定義為不同的整數或整數表示式 例如 count 500 size list 3 equ 偽指令 3.1 ...
c語言 陣列定義 符號常量定義
1在定義語句中用乙個初始值列表來初始化乙個陣列 include includeint main for size t b 0 b 5 b system pause return 0 如果初始值列表提供的初始值少於陣列元素個數,則餘下的陣列元素將初始化為0.如 int a 5 則有a 1 34 a 2...
常量與符號常量
通過 數學中的變數與常量 章節的介紹,我們知道了常量的定義,就是其資料不可以修改的量。例如100這個數值,它的數值就是100,不可以改變,所以,稱為常量,可以稱為 常量100。那麼,在c語言中定義的資料報括有數值 整數,浮點數 字元等等。其內容不可改變的量,就稱為常量,有 100,20,30 這樣的...