Use DS and SS to access the same memory

简介: Use DS and SS to access the same memory eryar@163.com CPU要读写一个内存单元时,必须先要给出这个内存单元的地址,在8086PC中内存地址由段地址和偏移地址组成。

Use DS and SS to access the same memory

eryar@163.com

CPU要读写一个内存单元时,必须先要给出这个内存单元的地址,在8086PC中内存地址由段地址和偏移地址组成。8086CPU中有一个DS(Data Segment)寄存器,通常用来存放要访问数据的段地址。

8086CPU也提供相关的指令以栈的方式LIFO(Last In First Out后进先出)来访问内存空间。这意味着在基于8086CPU编程的时候,可以将一段内存当作栈来使用。8086CPU提供入栈和出栈的指令:push和pop。比如push ax表示将寄存器AX中的数据入栈;pop AX表示从栈顶取出数据送入AX。

8086CPU中有两个寄存器,段寄存器SS和寄存器SP,栈顶的段地址存放在SS中,偏移地址存放在SP中。任意时刻,SS:SP指向栈顶元素。

由上可知,通过DS可以用来访问指定内存中的数据。同样地,通过SS和SP也可以用来访问指定内存中的数据。

如下代码通过DS将内存10000H~10002H中的数据设置成1111:

mov ax, 1000  
mov ds,ax 
mov ax,
1111  
mov [
0 ],ax 

 

wps_clip_image-15972

在debug中输入上述指令,并查看10000H的内存情况。执行这些指令后内存中的数据为:

wps_clip_image-14001

由上图可知,通过DS的方式改变了内存10000H~10001H中的值。下面我们通过栈的方式将同样的内存单元设置成2222。

mov ax, 1000  
mov ss,ax 
mov sp,
2  
mov ax,
2222  
push ax 

 

wps_clip_image-13420

将上述代码输入到debug中,并执行后,得到如下图所示的结果:

wps_clip_image-30020

由上图可知,相同的内存单元中的值被修改了。说明也可以通过SS来设置内存中的数据。只不过用SS的方式要复杂一些,需要自己来通过SP管理栈的大小。

那么问题来了,如果用DS或SS修改CS中的数据,程序会不会出现矛盾呢?

目录
相关文章
|
10月前
|
人工智能 API
OmniSearch:阿里巴巴通义推出的多模态检索增强生成框架
本文介绍了阿里巴巴通义实验室推出的多模态检索增强生成框架 OmniSearch,该框架具备自适应规划能力,能够动态拆解复杂问题,根据检索结果和问题情境调整检索策略,从而提升检索效率和准确性。
922 5
OmniSearch:阿里巴巴通义推出的多模态检索增强生成框架
|
前端开发 rax Shell
Shellcode Injection(√)
Shellcode Injection(√)
228 0
|
算法 Java vr&ar
保持无损连接和函数依赖的3NF合成算法(详细简介)期末必备
保持无损连接和函数依赖的3NF合成算法(详细简介)期末必备
246 0
|
达摩院 计算机视觉
给语言大模型加上综合视听能力,达摩院开源Video-LLaMA
给语言大模型加上综合视听能力,达摩院开源Video-LLaMA
621 0
|
存储 缓存 持续交付
Dockerfile 文件是干什么的?底层原理是什么?
Dockerfile 文件是干什么的?底层原理是什么?
1244 0
Dockerfile 文件是干什么的?底层原理是什么?
|
Rust 算法 数据安全/隐私保护
【密码学】一文读懂ElGamal
上篇文章我们聊到了Diffie-Hellman的密钥交换协议,这次来聊一个和Diffie-Hellman相似的一个加密算法--ElGamal加密算法,该算法同样选择一个素数p和它的一个原根作为公开密钥。
1630 0
【密码学】一文读懂ElGamal
|
存储 安全 IDE
使用C编译器编写shellcode
有时候程序员们需要写一段独立于位置操作的代码,可当作一段数据写到其他进程或者网络中去。该类型代码在它诞生之初就被称为shellcode,在软件中黑客们以此获取到shell权限。方法就是通过这样或那样的恶意手法使得这段代码得以执行,完成它的使命。当然了,该代码的编写仅能靠它自己,作者无法使用现代软件开发的实践来推进shellcode的编写。
341 0
使用C编译器编写shellcode
|
开发工具 git Python
Ropper - 显示有关不同文件格式的二进制文件的信息
版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024 https://blog.csdn.net/dajitui2024/article/details/79396458 ...
1526 0
|
Linux Ubuntu Ruby
tmux 终端分屏利器使用
介绍 Tmux 是一个工具,用于在一个终端窗口中运行多个终端会话。 不仅如此,你还可以通过 Tmux 使终端会话运行于后台或是按需接入、断开会话,这个功能非常实用。 很好的工具,记录一下,以后要常用。
5613 0