导航:首页 > 源码编译 > 编译语言中es寄存器的用法

编译语言中es寄存器的用法

发布时间:2022-08-16 14:38:31

1. 汇编语言中 cs,ds,ss,es分别是那些英文单词的缩写

cs: 代码段寄存器,是 code segment 的缩写;


ds:数据段寄存器,是 data segment 的缩写;


ss:堆栈段寄存器, 是 stack segment 的缩写;


es:附加段寄存器,是 extra segment 的缩写;

2. 汇编中的“附加段寄存器ES”有什么用的

附加段寄存器ES:存放当前执行程序中一个辅助数据段的段地址。

段寄存器
CS IP
SS SP或BP
DS BX、DI、SI
ES DI(用于串指令)

3. 汇编中的 附加段寄存器ES 有什么用的

附加段寄存器ES:存放当前执行程序中一个辅助数据段的段地址。
段寄存器
偏移地址寄存器
CS
IP
SS
SP或BP
DS
BX、DI、SI
ES
DI(用于串指令)
例子:
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
data_seg1
segment
;
定义数据段
.
.
data_seg1
ends
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
data_seg2
segment
;
定义附加段
.
.
data_seg2
ends
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
code_seg
segment
;
定义代码段
assume
cs:code_seg,
ds:data_seg1,
es:data_seg2
start:
;
程序执行的起始地址
;
set
DS
register
to
current
data
segment
mov
ax,
data_seg1
;
数据段地址
mov
ds,
ax
;
存入DS寄存器
;
set
ES
register
to
current
extra
segment
mov
ax,
data_seg2
;
附加段地址
mov
es,
ax
;
存入ES寄存器
.
.
code_seg
ends
;
代码段结束
;
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
end
start
希望能对你有所帮助。

4. 汇编中的ES是什么意思

ES寄存器 附加段寄存器:定义附加段的起始地址。

程序中其他段得起始地址。 用于某些串操作中和DI寄存器相关联 (ES)+(DI)=串地址的结尾

例子:
; * * * * * * * * * * * * * * * * * * * * * * *
data_seg1 segment ; 定义数据段
. .
data_seg1 ends
; * * * * * * * * * * * * * * * * * * * * * * *
data_seg2 segment ; 定义附加段
. .
data_seg2 ends
; * * * * * * * * * * * * * * * * * * * * * * *
code_seg segment ; 定义代码段
assume cs:code_seg, ds:data_seg1, es:data_seg2
start: ; 程序执行的起始地址
; set DS register to current data segment
mov ax, data_seg1 ; 数据段地址
mov ds, ax ; 存入DS寄存器
; set ES register to current extra segment
mov ax, data_seg2 ; 附加段地址
mov es, ax ; 存入ES寄存器
. .
code_seg ends ; 代码段结束
; * * * * * * * * * * * * * * * * * * * * * * * * * *
end start

5. 32位汇编 段寄存器 cs ds ss es的用处是什么

实模式的段是为了读取更多的内存,保护模式的段是主要为了保护数据,防止恶意篡改,这几个寄存器都指向GDT或者LDT,32位用这几个寄存器是为了保护程序、系统还有数据,特权级什么的需要基于他们,他们把各个程序严格的分开,不允许低权级访问高权级,有效保护了系统内核,一定程度上防止了数据溢出(有不对的地方希望大佬指出)

6. 在汇编语言的串操作中, MOV DI, DS MOV ES, DI 这两条指令到底有什么作用

(1)这两条指令没有上下文的情况下,无法为您判断它们的实际意义。看不出与串操作有什么直接关系。在串操作中,一般是将两个串分别放在DS:SI和ES:DI寻址的内存单元中,以方便于串的比较、移动等操作。
(2)mov
si,ds指令的意义是:将数据段寄存器的段地址值赋给SI,执行完成后:SI=DS
(3)MOV
DI,ES
的意义是将扩展数据段寄存器的段地址值赋给DI.即执行完成后,DI=ES
一般情况下,程序中很少用到这样的指令,如果要保护DS和ES的值,通常用PUSH
DS和PUSH
ES指令。如果要计算物理地址,也是将段地址放到AX寄存器中。当然,即8086CPU给出了这样的指令,在某些情况下,可能会用到你提到的这两条指令。
希望能帮到你。

阅读全文

与编译语言中es寄存器的用法相关的资料

热点内容
加密的电梯卡怎么复制苹果手机 浏览:218
warez压缩 浏览:137
黑马程序员培训机构官网天津 浏览:904
mainjavasrc 浏览:58
如何买服务器挖矿 浏览:292
php批量上传文件夹 浏览:560
安卓固件怎么更新 浏览:169
单片机代码例程网站 浏览:923
UG编程如何多平面轮廓2D倒角 浏览:438
视频压缩渐变纹 浏览:852
什么app能看财经新闻 浏览:40
数学奇迹神奇运算法 浏览:360
大厂的程序员的水平如何 浏览:701
遗传算法入门经典书籍 浏览:879
源码炮台脚本 浏览:621
在位编辑命令 浏览:348
曲式分析基础教程pdf 浏览:15
php生成静态html页面 浏览:965
怎么分割pdf 浏览:813
压缩垃圾报警器 浏览:629