Win32ASM学习[3]:局部变量

.386
.modelflat,
stdcall

include
   windows.inc

include
   kernel32.inc
include
   masm32.inc
include
   debug.inc
includelib
kernel32.lib
includelib
masm32.lib
includelib
debug.lib

.code
main proc
   ;局部变量中的类型不能使用缩写
   LOCAL v1: dword
   
   ;可用逗号间隔写在一行
   LOCAL v2: dword, v3: dword
   
   ;不指定类型时默认 DWORD(在 Win32 下)
   LOCAL v4
   
   ;数组
   LOCAL v5[3]: dword
   
   ;在手动初始化前, 局部变量中都是些垃圾值:
    PrintDec v1
    PrintDec v2
    PrintDec v3
    PrintDec v4
    mov eax, v5[0]
    PrintDec
eax
    ret

main
endp
end
main

----------------------------------------------------------------------------------------------------------------
理论上应该输出垃圾值才对     但是并不是这样

v1 = 0 (Test.asm, 52)
v2 = 0 (Test.asm, 53)
v3 = 0 (Test.asm, 54)
v4 = 0 (Test.asm, 55)
eax = 0 (Test.asm, 57)

全部为0了  - -

由于DumpMem不支持局部变量   我到debug.inc文件中找到了这个宏实现的语句  实际上是调用了HexDump2这个函数

测试一个局部变量  得到结果

0018FF84 : 00 00 00 00 - 00 00 00 00 - 00 00 00 00 - 00 00 00 00
00000004 : BYTES TOTAL

okay   全部Zero了   难道RadASM帮我们把变量都初始化了么?

测试data?同样是这样

 

main proc
    LOCAL val:DWORD
    invoke HexDump2,addr val,4
 ret
main endp

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375384.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

WPF笔记(1.1 WPF基础)——Hello,WPF!

WPF笔记(1.1 WPF基础)——Hello,WPF! 原文:WPF笔记(1.1 WPF基础)——Hello,WPF!Example 1-1. Minimal C# WPF application//MyApp.csusingSystem;usingSystem.Windows; //the root WPF namespacenamespaceMyFirstAvalonApp { cla…

c#入门系列——类和对象的代码实现

面向对象 说起面向对象,大家因该都听说过,也知道是一个编程的方法,简称oop技术。它将对象的算法和数据结构看作一个整体,而一个程序就是由多个对象结合的整体。这样做可以提高代码的复用率,提高了软件的可维护性。 属性…

安卓TCP通信版本2

PC做服务器,安卓做客户端。 安卓获取输入框的内容并发送,然后等待接收服务器的消息 服务器先行开启,接收到客户端的数据,然后回复消息。 实现了对线程类的封装,通过按钮启动线程发送并接收 服务器代码(java…

Win32ASM学习[5]: 数据对齐相关的伪指令(ALIGN、EVEN、ORG)

32 位的寄存器容量是 4 字节, 如果内存中的数据都按 4*n 字节对齐, 肯定会加快吞吐速度; 但事实并非如此, 不同大小的数据可能会让寄存器别别扭扭地去处理, 从而降低了运行速度! 如果使用对齐, 就会浪费掉一些内存空间; 其实这是一个需要权衡 "速度" 与 "内存&…

常用Jquery前端操作

input只能输入正整数 οnkeyup"this.valuethis.value.replace(/\D/g,)"if(!confirm("删除后无法恢复,确认继续?")){return false;}//判断字符串里是否存在指定字符 if(str.indexOf("abc") ! -1){//表示存在}1.双引号替换…

【Linux/Ubuntu学习 10】unbuntu 下 eclipse 中文乱码的解决

wangddwdd-pc:~$ gedit /var/lib/locales/supported.d/local 添加: zh_CN.GBK GBKzh_CN.GB2312 GB2312 终端执行命令: sudo dpkg-reconfigure --force localesGenerating locales... en_AG.UTF-8... done en_AU.UTF-8... done en_BW.UTF-8... done …

Win32ASM学习[6]: PTR、OFFSET、ADDR、THIS

PTR: 指定要操作的数据尺寸 ------------------------------------------------------------------------------------------------------------------------------------------ .386 .model flat, stdcall include windows.inc include kernel32.inc include masm…

简述WebService的使用(一)

环境: vs版本:vs2013 windows版本:win7 IIS版本:IIS7.0 (如果觉得对您有用,请点击右下角【推荐】一下,让更多人看到,谢谢) 配置环境: 主要针对于IIS 首先&…

【Java基础】用LinkedList实现一个简单栈的功能

栈的基本功能 栈的最基本功能是保障后进先出,然后在此基础上可以对在栈中的对象进行弹入弹出,此外,在弹出时,如果栈为空,则会报错,所以还需要提供获取当前栈大小的方法。 构造存储对象Student /*** Created…

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

关于符号常量 的例子 .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 ; 伪指令只能定义整数或整数表达式…

oracle 删除表中重复记录,并保留一条

1、查找表中多余的重复记录,重复记录是根据单个字段(Id)来判断 select * from 表 where Id in (select Id from 表 group byId having count(Id) > 1) 2、删除表中多余的重复记录,重复记录是根据单个字段(Id&#x…

透过WinDBG的视角看String

摘要 : 最近在博客园里面看到有人在讨论 C# String的一些特性. 大部分情况下是从CODING的角度来讨论String. 本人觉得非常好奇, 在运行时态, String是如何与这些特性联系上的. 本文将侧重在通过WinDBG来观察String在进程内的布局, 以此来解释C# String的一些特性. 问题 C# Stri…

Win32ASM学习[8]: 进制转换的库函数

在 masm32.inc 中有这样几个函数的声明: byt2bin_ex PROTO :BYTE, :DWORD wrd2bin_ex PROTO :WORD, :DWORD dw2bin_ex PROTO :DWORD, :DWORD dw2hex_ex PROTO :DWORD, :DWORD bin2byte_ex PROTO :DWORD -------------------------------------------------------------…

SOJ 2800_三角形

真的是O不是0【看了discuss才发现。。。。。一个大写的蠢 【题意】多个黑白三角形组成的倒三角,求白三角形组成的最大倒三角的面积 【分析】由于问的是倒三角个数,所以只需看与行数奇偶性相同的白色倒三角形,设v[i][j]为以第i行第j列的倒三角…

ueditor富文本编辑器 修改框宽度和高度的方法

在使用ueditor的时候&#xff0c;用的textarea <textarea name"content" id"myEditor">这里写这条规则的回复内容</textarea> 给它加style"width:300" 属性的时候&#xff0c;发现不起作用。 正确的方法应该是&#xff1a; <scri…

Win32ASM学习[9]: 标志寄存器

TF(Trap Flag)——位8&#xff0c;跟踪标志。置1 则开启单步执行调试模式&#xff0c;置0 则关闭。在单步执行模式下&#xff0c;处理器在每条指令后产生一个调试异常&#xff0c;这样在每条指令执行后都可以查看执行程序的状态。如果程序用POPF、POPFD 或者ET 指令设置TF 标志…

TCP多进程并发服务端 Linux socket编程入门(2)

这里很简单的使用了fork()函数&#xff0c;在执行了fork()以后的所有代码都会由子进程和父进程同时执行。 他们同时拥有相同的资源&#xff08;两份拷贝&#xff09;&#xff0c;所以在子进程执行的过程中&#xff0c;子进程需要先close掉listenfd&#xff08;监听套接字&#…

ArcEngine 打开shape文件

IWorkspaceFactory wsf new ShapefileWorkspaceFactory(); IWorkspace pWorkspace wsf.Open(filePath, 0) ;//filePath为shapefile所在的文件夹 IFeatureWorkspace pFeatureWorkspace pWorkspace ; IFeatureClass pFeatureClass pFeatureWorkspace.OpenFeatureClass(&quo…

Win32ASM学习[10]:传送指令

汇编指令的一般性要求: 1、两个操作数的尺寸必须一致; 2、操作数不能同为内存. --------------------------------------------------------------------------------------------------------------- ;mov ;该指令不影响 EFlags ;指令格式: (其中的 r、m、i 分别表示: 寄存器、…

SQL Server 中关于 @@error 的一个小误区

SQL Server 中关于 error 的一个小误区 原文:SQL Server 中关于 error 的一个小误区在SQL Server中&#xff0c;我常常会看到有些前辈这样写&#xff1a; if(error<>0)ROLLBACK TRANSACTION T elseCOMMIT TRANSACTION T 一开始&#xff0c;我看见别人这么写&#xff0c;我…