刚接触汇编与逆向,记录一些学习笔记。

源代码:

IDA汇编代码:

首先 1字=2字节  1字节=8位(8比特)=2位16进制

var_6=dword ptr -6
ptr-6表示指针上移6个单位处,这里的单位是指计算机的寻址单位,一般按字节寻址,[EBP+var_6]就表示EBP-6个字节的地址处。
DWORD 表示双字,是对存入数据的说明。双字=4字节,也就是8位16进制,也就是32比特(二进制)。
mov [EBP+var_6] eax(eax的值为0x00000000,EAX为32位寄存器)表示的就是将0以双字(4字节)形式存入EBP-6地址处。双字形式的0也就是8位16进制的0,32位比特的0。那将占用实际地址几位呢?这里牵扯到计算机的寻址方式。一般以字节进行寻址,一个字节2位16进制。也就是说一个地址单元只能存8比特。
那mov [EBP+var_6] eax要存32比特,就存在了EBP-6,EBP-5,EBP-4,EBP-3四个地址单元上了。

var_2=word ptr -2
ptr-2表示指针上移2个单位处,这里的单位同样是字节,[EBP+var_2]就表示EBP-2字节处。这里和DWORD是一样的。
Word 表示单字=2字节=16比特,是对存入数据的要求,也就是16比特。
mov [EBP+var_2] ax 表示的是将0以单字节的形式存入EBP-2地址处,AX是取EAX的低16位。符合word(单字)的要求。
根据之前说的按字节(4位16进制=16比特)为单位寻址,ax的值存入EBP-2和EBP-1处,这两个地址单元。

short[4]=[100,]的生成
short型长度为2字节,占16位。汇编代码中的执行过程为:首先存入16位的0x64(100),即short[0],再存入32位的(0x00),实际上是两个16位的0x00,即short[1]=0,short[2]=0,最后通过ax寄存器存入16位的0x00,即short[3]=0.
因此汇编代码中表面上只有两步赋0操作。

OD中动态观察:

初始状态:

存入1字Word(双字节)的0x64

存入双字DWORD(4字节=8位16进制)的0x00,赋值short[1]和short[2]

存入单字(双字节=4位16进制)的0x00,short[3]=0

double型

double型占8字节(64位),在内存地址中占8个单位。是分两次存入的,一次赋值4个字节的内容。之后的赋0操作略有不同,是通过一个循环实现的。

ECX=6表示循环6次,XOR EAX EAX 将EAX初始化为0从[EBP+var_50]开始向下循环6次,每次存入32为的0x00(EAX为32位)即4字节,共24字节的0,即为3个double型的0,。赋值完毕。

文章同步到我的博客http://www.zjzhhb.com/archives/556

禁止转载

汇编–从数据类型看WORD与DWORD相关推荐

  1. c语言打印qword类型,c/c++开发分享c语言中数据类型BYTE,WORD和DWORD的格式说明符?...

    在 例如,如果我尝试使用"%lu"显示BPB_BytsPerSec,我会得到不同寻常的数据. printf("Bytes per Sector: %lu", b ...

  2. 用汇编的眼光看C++(开篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 很多朋友,包括我自己在内,对C++语言的很多特性不是很明白.特别是几年前找工作的时候,为了应付 ...

  3. 用汇编的眼光看C++(之退出流程)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 无论是在判断还是在循环的过程中,通常在遇到合适的条件的时候就会退出相应的模块.跳出模块运行的方 ...

  4. 用汇编的眼光看C++ (之x86汇编)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 说到用汇编的眼光看C++语言,那么怎么阅读汇编代码就成了我们需要解决的一个问题.其实,实话说, ...

  5. WORD 和DWORD

    WORD与DWORD 在看C/C++的书或者试题时,有时会见到利用word或dword定义的变量,第一次看到的时候并不知其是什么,更不用说word或dword占几个字节了.幸好在VC安装文件夹下有相关 ...

  6. word或dword区别

    word或dword区别 在看C/C++的书或者试题时,有时会见到利用word或dword定义的变量,第一次看到的时候并不知其是什么,更不用说word或dword占几个字节了.幸好在VC安装文件夹下有 ...

  7. windows下WORD 和DWORD

    WORD与DWORD 在看C/C++的书或者试题时,有时会见到利用word或dword定义的变量,第一次看到的时候并不知其是什么,更不用说word或dword占几个字节了.幸好在VC安装文件夹下有相关 ...

  8. 用汇编的眼光看C++(之 总结篇)

    [ 声明:版权所有,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 早在八月份的时候,就陆陆续续写了二十多篇用汇编语言看C++的博客内容.在此为了做一个概括,也为 ...

  9. linux看电影软件下载,LINUX总结第5篇:Cent os常用软件(看电影、听音乐、看pdf、看word等)...

    掐指一算,我用LINUX已经有2年的时间,但是仔细向来,貌似常用的也就是cp\ls\cd等命令,搭建服务器等一概没玩过.故,痛下绝心,将自己的电脑改装成Cent OS 6.4,能不用WINDOWS坚决 ...

最新文章

  1. 我们常用的 Integer 内部为什么会去实现 Comparable 接口?
  2. SGU 109 Magic of David Copperfield II
  3. SoapUI 请求 https 报 javax.net.ssl.SSLHandshakeException: Received fatal alert: handshake_failure
  4. 1个人,耗时2年半,这款大型仙侠3D硬核ARPG是怎么做出来的?
  5. 【Tools】Visual Studio 2019搭建Qt开发环境
  6. 送人玫瑰,手留余香,如果本博客帮助到你了,帮忙点开本篇投上一票
  7. 计算机网络笔记----应用层
  8. MySql学习之varchar类型
  9. 彻底理清重载函数匹配
  10. 《大数据》2015年第2期“研究”——大数据时代的数据传输网
  11. 两款高大尚广告GO跳转页PHP源码
  12. java 流 flush_Java CharArrayWriter flush()方法
  13. 应该如何理解mobx_如何使用mobx观察observable数组上的object.property更改
  14. python之路 《四》 字典
  15. 信号与系统2020参考答案(网络试卷)
  16. 宇视手机客户端共享/分享设备配置操作
  17. pytest框架之fixture测试夹具详解
  18. Linux下Mysql的解压安装 5.7.32
  19. 批量注册163邮箱的代码
  20. py语言和php,php和python什么区别

热门文章

  1. 卡西欧计算机怎么算反函数,卡西欧fx-9750GII计算器-卡西欧计算器
  2. 记录在IE下,JS下载保存文件方法
  3. 现代计算机理论基础是什么_为什么旧游戏在现代计算机上运行得太快?
  4. 笑谈,人兽分界线 多贝网课程分享
  5. ppt年终总结(计算机专业),计算机系学工办年终工作汇报总结PPT.ppt
  6. EDB数据库创建流程指南
  7. INA219 datasheet详解 INA219使用方法
  8. TAPD——需求关联
  9. 海天讲座(四)最优传输理论
  10. vi笔记 - 使用vi加xxd完成对二进制文件的内容修改