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中的数据,程序会不会出现矛盾呢?

目录
相关文章
|
2月前
|
关系型数据库 MySQL Linux
Packet for query is too large (4467936 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable
【10月更文挑战第15天】解决Packet for query is too large (4467936 > 4194304). You can change this value on the server by setting the max_allowed_packet' variable
68 1
|
7月前
What value should kernel parameter AIO-MAX-NR be set to ?
What value should kernel parameter AIO-MAX-NR be set to ?
62 0
|
7月前
|
关系型数据库 MySQL
Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by se
Packet for query is too large (4,544,730 > 4,194,304). You can change this value on the server by se
236 0
|
7月前
|
存储
tracker_query_storage fail, error no: 28, error info: No space left on device
tracker_query_storage fail, error no: 28, error info: No space left on device
165 0
|
存储 缓存 大数据
Starrocks执行查询报错:Memory of process exceed limit. Used: XXX, Limit: XXX. Mem usage has exceed the limit of BE
Starrocks执行查询报错:Memory of process exceed limit. Used: XXX, Limit: XXX. Mem usage has exceed the limit of BE
|
前端开发 5G
Search space set group switching(一)
根据R17 38.300的描述,UE可以通过PDCCH monitoring adaptation机制实现power saving的目的,这其中就包括PDCCH monitoring skipping和search space set group (SSSG) switching两种机制。PDCCH monitoring skipping是R17才提出的机制,就是UE 可以在PDCCH skipping的时间内不监视 PDCCH的功能;search space set group (SSSG) switching R16提出,R17进行了部分增强。
Sap Ds Data is not available. Increase the time-out interval values in Debug | Options
Sap Ds Data is not available. Increase the time-out interval values in Debug | Options
135 0
|
缓存 Java 关系型数据库
关于page Cache和memory mappped Files 和zero copy
关于page Cache和memory mappped Files 和zero copy
171 0
关于page Cache和memory mappped Files 和zero copy
SAP WM Storage Type Capacity Check Method 5 (Usage check based on SUT)
SAP WM Storage Type Capacity Check Method 5 (Usage check based on SUT)
SAP WM Storage Type Capacity Check Method 5 (Usage check based on SUT)