根据不同的功能,寄存器可分为通用寄存器(ax、bx、cx、dx、sp、bp、si、di)。前四个寄存器可分为ah、al、bh、bl、ch、cl、dh、dl八位寄存器、指令指针寄存器(ip)、标志寄存器(flags)、段寄存器(cs、ds、es、ss)。它们的区别和联系体现在它们的功能上,它们的深入理解和正确使用需要通过编程来实现。
2.一般功能如下:
ax,可存储一般数据,可用作累加器;
bx,可存储一般数据,可用作存储数据的指针(偏移地址),常用于ds寄存器;
cx,可存储一般数据,可用作计数器,并且经常使用它来存储循环时间;
dx,它可以存储一般数据,并且可以用作计数器来存储乘法运算生成的部分积,或者存储输入和输出的端口地址(指针);
sp用来寻址一个名为stack的存储区,通过它可以访问堆栈数据;
bp用来存储一般数据,访问堆栈段的一个数据区,作为基址;
si用于存储一般数据,也可以在字符串操作中用于存储源数据地址,访问字符串数据;
di用于存储一般数据,也可以用于字符串操作,存储目标地址,访问一串数据;
ip,寻址需要取出的指令字节,程序员不能直接操作;
标志,指示微处理器的状态并控制其操作;
cs,代码段寄存器,代码段是一个存储区字段,存储cpu使用的代码,cs存储代码段的段基址;
ds,数据段寄存器,数据段是包含程序使用的大部分数据的存储区域,ds存储数据段的段基址;
es,附加段寄存器,它是一些字符串操作指令的目标操作数附近的一个数据段,es存储段基址段基址;
ss,stacksegmentregister,stacksegment是内存中的一个特殊存储区,用于临时存储程序运行所需的数据或地址信息。ss存储存储区的段基址。
(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给出了这样的指令。在某些情况下,可以使用您提到的两个说明。
fs和gs从80386开始添加。没有全名。这些名字按字母顺序排列在cs、ds和es之后。cs、ds、es和ss的全称为:cs(代码段)codesegmentds(数据段)datasegmentes(额外段)additionalsegmentss(堆栈段)stacksegment