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

源代码:

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. traceroute/tracert--获取网络路由路径
  2. 十折交叉验证10-fold cross validation, 数据集划分 训练集 验证集 测试集
  3. SimpleDateFormat处理 dd-MMM-yy类型日期
  4. iOS 中KVC、KVO、NSNotification、delegate 总结及区别
  5. android 两端对齐,LinearLayout子控件两端对齐
  6. python学习: 如何循序渐进学习Python语言
  7. grootjs 简明教程
  8. 初分配和再分配图解_针织好看暖和的儿童帽子图解教程,宝妈们千万不要错过...
  9. 事务对性能影响_不是事务的事务!(分布式事务系列-完结篇)
  10. 2018-04-22jenkins+maven+svn环境搭建学习心得
  11. 概率扩散模型 Probabilistic Diffusion Model
  12. android模拟器设置静态ip,安卓模拟器多开挂手游改IP防封号技术讲解
  13. 小米手机miui截图后游戏重启的问题
  14. 如何做私域?私域流量运营怎么做?为什么今年都布局企业微信运营?(附企微运营干货)
  15. FPGA学习汇总(六)----数码管显示(1)
  16. table+jq实现日期排期表
  17. 《电子商务与企业经营管理》
  18. 为什么在Google上搜不到我的网页
  19. mysql怎么启用sa用户_安装SQL SERVER开启SA用户登录的方法
  20. Oracle的emp表的基本函数学习

热门文章

  1. 网络安全工程师-①文件共享服务器
  2. 西门子840D HMI ADVANCED FOR PC
  3. minio 文件预览_MinIO Docs | MinIO快速入门指南
  4. 计算机3级有用,计算机三级有用吗
  5. 电化学发光分析仪常用分析方法
  6. 将台式电脑声音无线传输到IOS,安卓手机上播放,再到蓝牙音箱上播放
  7. 通用网吧管理系统源码 C/S架构
  8. mapgis10-10.28
  9. 申请ISO13485认证的周期及费用
  10. java计算机毕业设计学籍管理系统源码+数据库+系统+lw文档+部署