汇编原理(二)寄存器——内存访问

一个字 = 两个字节

双字

字节为8位

字为16位(看两格)

双子dword32位(看四格)

内存中字的存储:

0地址单元中存放的字节型数据是多少?

0地址字单元中存放的字型数据是多少?

2地址字单元中存放的字节型数据是多少?

2地址单元中存放的字型数据是多少(0012。字型要考虑两个字节)

1地址字单元中存放的字型数据是多少(124E)(单元和字单元有什么区别?)

任何两个地址连续的内存单元,N号单元和N+1号单元,可以将他们看成两个内存单元,也可以看成一个地址为N的字节单元中的高位字节单元和低位字节单元

**DS和 [ address ]:**回过头来看,这两个玩意一定是成对出现的,才能唯一确定一个物理地址

DS(data)寄存器用来存放要访问的数据的段地址

mov功能:1.(1)将数据直接送入寄存器(2)将一个寄存器中的内容送入另一个寄存器。 除此之外,mov还可以将一个内存单元中的内容送入一个寄存器

对上面指令的解释:

1.先说明:[ ... ]中存放偏移地址,DS中存放段地址

2.10000H表示1000:0(段地址:偏移地址)(为什么能唯一确定只能是这个比值?)

3.将段地址1000H放入ds

4.用mov al,[0]完成传送( [ ] 中只用说明偏移地址,段地址默认放在ds中)

那能否直接mov ds, 1000H?这样写指令合法吗?

不行,不能将数据直接送入段寄存去,数据只能送入通用寄存器(硬件设计问题)

数据 -> 通用寄存器 -> 段寄存器 (间接)

这样就完成了将内存单元中的数据送入寄存器。

那如何将数据送入内存单元?

放到一起对比一下

有例题:配置好环境后需要自己实现

mov、add、sub指令:

推测:mov 寄存器,段寄存器 也是正确的

add和sub同理:

数据段:

在内存和寄存器之间传送字型数据时,高地址单元和高8位寄存器、低地址单元和低8位寄存器相对应

栈(Fist In Last Out):

push和pop:入栈和出栈都是以字为单位

push ax : 将寄存器ax中的数据送入栈中;

pop ax : 从栈顶取出数据送入ax

cpu怎么知道一段内存空间被当作栈使用?如何知道那个单元时栈顶?

第一个问题:

有两个寄存器:S(stack)S(段寄存器:记录栈顶段地址)和SP(记录栈顶偏移地址)

SS:SP就指向栈顶单元

任何一个时刻SS:SP指向栈顶(容易搞混)

第二个问题:

push ax. 该指令发生后,会(自动)进行SP = SP - 2;所以SS:SP将会指向新的栈顶

push的过程:

pop的过程:

pop之后只会使SS:SP移动,但内存单元中的数据不会删除,下次在push会对它进行覆盖(删不干净)

栈顶越界的问题:(溢出攻击)

**栈和内存:**栈就是内存空间的一部分

push和pop指令:

比如段地址现在指向1000,那就将这个16进制数放入SS:SP所指向的位置

栈操作都是以字为单位

模拟函数调用过程:

注意因为bx后入栈,所以一定要先出栈 ,对顺序是有要求的

交换两数的值:

对pop ax理解应该是:弹出最后一个值,将其赋值给ax

执行push和pop指令与mov指令不同,mov执行传送指令只需要一步操作,而执行push和pop指令却需要两部操作:执行push时:先改变SP,后向SS:SP处传送;执行pop时,先读取SS:SP处的数据,后改变SP。

栈段:

一个栈段最大可以设为多少?2的16次方

对于数据段,将段地址放在DS中,对于代码段,段地址放在CS中,对于栈段,将段地址放在SS中

相关推荐
切糕师学AI20 小时前
ARM 汇编指令系列文章导读
汇编·arm开发
果粒蹬i21 小时前
从割裂到融合:MATLAB与Python混合编程实战指南
开发语言·汇编·python·matlab
AUVpwoxkW3 天前
关键词:混合储能,VMD,麻雀搜索算法,遗传算法,混合储能容量配置优化,混合储能功率分配
汇编
取个名字太难了a3 天前
x64(一)
汇编
xiaobuding_QAQ4 天前
51汇编仿真proteus8.15学习篇四(附源码)
汇编·单片机·学习·proteus
xiaobuding_QAQ4 天前
51汇编仿真proteus8.15学习篇三(附源码)
汇编·单片机·学习·proteus
188号安全攻城狮5 天前
【PWN】HappyNewYearCTF_2_栈上变量覆写1
linux·运维·汇编·安全·网络安全
草莓熊Lotso5 天前
Linux 进程创建与终止全解析:fork 原理 + 退出机制实战
linux·运维·服务器·开发语言·汇编·c++·人工智能
爱编码的小八嘎5 天前
汇编语言全接触-105.Natas 幽灵王病毒的分析
汇编
老鱼说AI6 天前
深入理解计算机系统1.5:抽象的重要性:操作系统与虚拟机
c语言·开发语言·汇编