Win32汇编学习[7]: 定义符号常量(=、EQU、TEXTEQU)

您所在的位置:网站首页 定义符号常数 Win32汇编学习[7]: 定义符号常量(=、EQU、TEXTEQU)

Win32汇编学习[7]: 定义符号常量(=、EQU、TEXTEQU)

2024-06-20 16:57| 来源: 网络整理| 查看: 265

 

关于符号常量 =的例子

.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   ;2    ret main endp end  main -------------------------------------------------------------------------------------------------------------------------------------------

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   ; 可用 equ 定义字符串, 应使用         szTxt db txt, 0   ; 使用 equ 定义的常量 .code main proc     PrintDec num3    ;5     PrintString szTxt ;Asm    ret main endp end main

------------------------------------------------------------------------------------------------------------------------------------------

Equ函数宏定义

------------------------------------------------------------------------------------------------------------------------------------------

.386 .model flat,stdcall include   windows.inc include   kernel32.inc includelib kernel32.lib include   user32.inc includelib user32.lib ; 用 equ 给函数重命名Msg equMessageBox Exit equ ;尖括号可保证字符串的完整、并避免和关键字冲突 ; 甚至代替整个表达式 ShowMsg equ .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 .modelflat,stdcall include   windows.inc include   kernel32.inc includelib kernel32.lib include   user32.inc includelib user32.lib Msg textequ MessageBox Exit textequ ShowMsg textequ .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

------------------------------------------------------------------------------------------------------------------------------------------

.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         ; 如果用 textequ 定义整数或表达式也要放在 中     num3 textequ ; 这曾是 num3 equ num1+num2         txt textequ     ;     txt textequ ; textequ 可重复定义         szTxt db txt, 0 .code main proc     PrintDec num3    ;5     PrintString szTxt ;Delphi    ret main endp end main ------------------------------------------------------------------------------------------------------

 

哈哈  强大的宏替换吧   



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3