win32汇编界面编程系列教程第三讲 符号.doc_第1页
win32汇编界面编程系列教程第三讲 符号.doc_第2页
win32汇编界面编程系列教程第三讲 符号.doc_第3页
win32汇编界面编程系列教程第三讲 符号.doc_第4页
win32汇编界面编程系列教程第三讲 符号.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

win32汇编界面编程系列教程第三讲 符号宏的补充我们看看以下几个宏:=ADDREG MACRO rgs,var ?ADD E&rgs,varENDM szMsg MACRO szName,text1 .data?szName? ? ? ? db &text1, 0dh,0ah,0.codeENDM argcount?MACRO args:VARARG? ? ? ? LOCAL cnt? ? ? ? cnt = 0? ? ? ? FOR item, ? ? ? ? cnt = cnt + 1? ? ? ? ENDM? ? ? ? EXITM %cnt? ? ? ? ?; return as a numberENDM以下为调用代码:.codebegin:? ? ? ? mov eax,1234h? ? ? ? ADDREG AX,1234h? ? ? ? DbgPrintHex eax? ? ? ? szMsg szName1,? ? ? ? lea? ? ? ? ? ? ? ? eax,szName1? ? ? ? DbgPrintStringByAddr eax? ? ? ? ? ? ? ? szMsg szmsg1,%1+2+3? ? ? ? lea? ? ? ? ? ? ? ? eax,szmsg1? ? ? ? DbgPrintStringByAddr eax? ? ? ? ? ? ? ? szMsg szmsg2,1+2+3? ? ? ? lea? ? ? ? ? ? ? ? eax,szmsg2? ? ? ? DbgPrintStringByAddr eax? ? ? ? ? ? ? ? ? ? ? ? szMsg szmsg3,%1+2!+3? ? ? ? lea? ? ? ? ? ? ? ? eax,szmsg3? ? ? ? DbgPrintStringByAddr eax? ? ? ? ? ? ? ? mov eax,argcount(abc,def,ghi,jkl,mno)? ? ? ? DbgPrintDec eax? ? ? ? ? ? ? ? invoke? ? ? ? ExitProcess,NULLend begin=看下输出结果:attach913/attach符号注意看以下几句:szMsg szName1,? ? ? ? ? ? ? ? szMsg szmsg1,%1+2+3? ? ? ? szMsg szmsg2,1+2+3? ? ? ? szMsg szmsg3,%1+2!+3第一句括号中的字符完整输出,第二句对其表达式进行计算后输出,第三句输出原表达式,批四句先将“!”前面的表达式计算后组合成完整表达式输出。Date and Time Information? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?Date;今天日期 格式(年/日/年)? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer,CTXT(CatStr(, %Date, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? Time;现在时间 格式(时:分:秒)? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer,CTXT(CatStr(, %Time, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? Environment Information? ? ? ? ? ? ? ? ?Cpu;cpu模式? ? ? ? mov ebx, Cpu? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? DbgPrintDec ebx,CpuEnviron? ? ? ? ;环境变量? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer,CTXT(CatStr(,%Environ(LUA_PATH), ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? Inte*ce;语言参数(整数)? ? ? ? mov? ? ? ? ebx, Inte*ce? ? ? ? ? ? ? ? DbgPrintDec ebx,Inte*ce? ? ? ? Version;编译器版本? ? ? ? mov? ? ? ? ebx, Version? ? ? ? ? ? ? ? ? ? ? ? DbgPrintDec ebx,Version? ? ? ? File Information? ? ? ? ? ? ? ? ? ? ? ? ?%FileCur;当前文件名? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer,CTXT(CatStr(, %FileCur, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? %FileName;文件名(不含扩展名)? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer,CTXT(CatStr(, %FileName, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? ? ? ? ? mov ebx, Line? ? ? ? ? ? ? ? ? ? ? ? ? ? ?;当前行? ? ? ? DbgPrintDec ebx,LineMacro Functions? ? ? ? ? ? ? ? ? ? ? ? ?CatStr;连接字符串? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer, CTXT(CatStr(, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? InStr;返回第二个字符串在第一个字符串中出现的位置? ? ? ? mov? ? ? ? ebx,InStr(1,abcdefghi,def)? ? ? ? ? ? ? DbgPrintDec ebx,InStr? ? ? ? ? ? ? ? mov ebx, SizeStr(abc) + 3? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ;字符串长度? ? ? ? DbgPrintDec ebx,SizeStr? ? ? ? SubStr;从一个字符串中提取一个子字符串? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer, CTXT(CatStr(,%SubStr(hello world, 7, 5),) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx Miscellaneous? ? ? ? ? ? ? ? ? ? ? ? ? ? ? $;位置计数器DbgPrintDec $? ? ? ? ?;数据段声明中,表示未初使化的数据.data?dwVar? ? ? ? dd ?:;声明一个代码段标号B;上一个:标号F;下一个:标号Segment Information? ? code;代码段名称:_TEXT? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer, CTXT(CatStr(,%code, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? ? ? ? ? CodeSize;TINY, SMALL, COMPACT和FLAT模式为0,MEDIUM,LARGE和HUGE模式为1? ? ? ? mov ebx,CodeSize? ? ? ? DbgPrintDec ebx ? ? ? ? CurSeg;当前段名称? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer, CTXT(CatStr(,%CurSeg, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? ? ? ? ? data;数据段名称,FLAT模式下为FLAT? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer, CTXT(CatStr(,%data, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? ? ? ? ? DataSize;TINY,SMALL,MEDIUM和FLAT模式为0,COMPACT和LARGE模式为1,HUGE为2? ? ? ? mov ebx,DataSize? ? ? ? DbgPrintDec ebx ? ? ? ? fardata;.FARDATA段名称,FLAT模式下默认为FLAT? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer, CTXT(CatStr(,%fardata, ) ? ? ? ? lea? ? ? ? ebx,szBuffer? ? ? ? DbgPrintStringByAddr ebx? ? ? ? ? ? ? ? Model;TINY=1, SMALL=2, COMPACT=3, MEDIUM=4, LARGE=6, HUGE=6, FLAT=7? ? ? ? mov? ? ? ? ebx,Model? ? ? ? DbgPrintDec ebx ? ? ? ? stack;FLAT模式下默认为FLAT? ? ? ? invoke? ? ? ? lstrcpy,addr szBuffer, CTXT(CatStr(,%stack, ) ? ? ?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论