汇编(二)环境及软件
前言
这篇是很久以前写好没发的,刚刚抛出来,改了改。
涉及了DTdebug的使用和寄存器介绍,以及一些指令。
以下是原文:
date: 2021-03-13 13:42:10
cover: https://s3.ax1x.com/2021/03/11/6NaG8J.png
tags: 汇编语言
top_img: https://s3.ax1x.com/2021/03/11/6NawVK.png
date: 2021-03-13 13:42:10
cover: https://s3.ax1x.com/2021/03/11/6NaG8J.png
tags: 汇编语言
top_img: https://s3.ax1x.com/2021/03/11/6NawVK.png
海哥名言:
“汇编是所有语言里面最简单的语言,因为他很好理解,很好实验。”
所以学习汇编最重要的是上手实验。了解了汇编基础以后,我开始进入汇编的正式学习,本篇使用工具和参考文章,都会放在文末。
这一部分强烈建议读一下《有趣的二进制》,目前我个人感觉这本书对汇编入门很有帮助,由浅入深通俗易懂。当然 也要记得动手试验一下书上的实例。
环境
使用软件:DTdebug(出品单位:昆山滴水信息技术有限公司)
第一次运行程序需要进行配置,无视进入软件的报错。在最上方菜单栏依次选择
Options-Appearance-Directories
将udd和 plugin的目录设置为下载好解压的文件目录,选中相应的文件夹。
界面分为四个窗口:
反汇编窗口、寄存器窗口、堆栈窗口、内存窗口。
基本操作
在反汇编窗口进行基础的汇编语言编写,F8逐步运行并观察寄存器窗口变化。
黑色表示为当前CPU正在执行语句,mov在汇编中的意思我举一个例子:
1 | CODE |
按照惯例,小阳子又来提问了:
呵,就这?我能看懂,是“MOVE AXE CX”你打错了!翻译过来是移动cx的斧头。——小阳子
真正含义就是“EAX=ECX” 即将ECX的值存入EAX。
这里我再附上一些基础的汇编指令。初学没必要记住全部,不要贪多。
详细指令介绍可以自行百度或者参考《有趣的二进制》第一章第四节。
寄存器
为小阳子解惑环节:
寄存器是CPU内部用来存放数据的地方。我会百度了没想到吧!——小阳子
32位通用寄存器
32位通用寄存器为八个,32位就是他的数据宽度,超过32位部分会被丢弃。
EAX | ESP |
---|---|
ECX | EBP |
EDX | ESI |
EBX | EDI |
再回到上文的MOV指令,他是移动指令,用来移动数据的,那么就要分情况了:
1、立即数到寄存器
2、寄存器到寄存器
举个实例,建议自己试验一下,观察一下寄存器窗口。
1 | CODE |
右下角那玩意儿是堆栈窗口,详情请等待第四篇文章。