专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

【100分】【马上结贴】Win32汇编有关问题:equ的作用想借

发布时间:2010-06-14 15:51:19 文章来源:www.iduyao.cn 采编人员:星星草
【100分】【马上结贴】Win32汇编问题:equ的作用想借
C/C++ code
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
; Equ 等值定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ICO_MAIN    equ        1000h    ;图标
DLG_MAIN    equ        1

这里的equ主要有什么作用?回答清楚的第一时间结贴,我一直在刷新帖子。

------解决方案--------------------
=、EQU、TEXTEQU 功能差不多, 它们定义的符号都将在编译前辈替换成它们指定的常量值.相比之下 EQU 更好用些.

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 
   ret 
main 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 <ExitProcess> 
; 甚至代替整个表达式 
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 


------解决方案--------------------
masm中的equ你可以当成是C/C++中的#define,比如你前面写的:

DLG_MAIN equ 1
like : #define DLG_MAIN 1

同样的,equ也常常用来模仿C/C++中的enum功能。

具体来说有2种使用方法:

1 name EQU exp(exp为有效整数)

2 name EQU sym 或 <sym>
当masm后面遇到已定义的sym时,就用该名字代表的整数值或文本代替。
------解决方案--------------------
当然你要更好的了解equ,你还要同样了解=,TEXTEQU等伪指令,这些伪指令

看起来绝不像一些asm教材说的那样简单,还是要仔细琢磨的。
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: