title: 汇编达人视频学习3
date: 2021年8月2日 09点30分
tags: 汇编达人
categories: 汇编达人
9、学习汇编不是为了写代码
10、通用寄存器_上
11、通用寄存器_下
12、内存
这个4GB(32位,2的32次方)是假的,当我们去读或者写的时候,操作系统会把它映射到物理内存上面。
物理内存,跟内存条之间,还有一个映射。
使用内存
把数写到内存
mov byte ptr ds:【地址】,1 //根据第二个是1个字节还是4个字节来判断写入的宽度
mov dword ptr ds:【地址】,0x12345678
把寄存器的值写入到内存
mov dword ptr ds:【地址】,eax
前提是宽度必须一样
把内存的值写入到寄存器
mov eax,dword ptr ds:【地址】
13、内存地址的五种形式
要点回顾:
形式一:立即数
形式二:【reg】reg代表寄存器 可以是8个通用寄存器中的任意一个
形式三:【reg + 立即数】
形式四:【reg + reg *{1,2,4,8}】
在高级语言中,对数组进行赋值的时候,反汇编的代码就是这样的。
形式五:【reg + reg *{1,2,4,8} + 立即数】
14、小端大端存储模式
(3)的大端存储如下图
15、DTDEBUG内存窗口的使用
以字节查看,db
以字查看, dw
以双字查看, dd
在x86计算机中,大多是用小端存储。
从上图的反汇编窗口,可以看到,我们通过命令:
mov dword ptr ds:【133fd74】,0x11223344
向地址为0133fd74的内存里写入了11223344,
然后在内存窗口处,我们通过命令,db 133fd74,以字节的形式查看内存窗口
可以看到,11是高字节,存放到了高地址,44是低字节存放到了低地址。
16、常用的汇编指令
1、MOV指令
mov word ptr ds:【18ff94】,ax //把ax寄存器的值,存入到内存中
2、ADD指令
add eax,ecx // 把eax和ecx相加,结果存放到eax里
3、SUB指令
当涉及到内存的时候,就有一个固定的写法。
宽度byte,word,dword / ptr / ds:【地址】
比如:
sub al,byte pte ds:【18ff94】
4、AND指令,与运算
比如
and ax,word ptr ds:【18ff58】
5、OR指令,或运算
比如
or dword ptr ds:【133fd58】,eax //将eax的内容和地址为133fd58的值进行或运算,结果放到内存中