通用寄存器和专用寄存器有什么区别和联系?

如题所述

对于8086的系统:\x0d\x0a1.寄存器按照功能的不同可分为通用寄存器(AX,BX,CX,DX,SP,BP,SI,DI。其中的前四个寄存器可分别分成AH,AL ;BH,BL;CH,CL;DH,DL的八位寄存器)、指令指针寄存器(IP)、标志寄存器(FLAGS)、段寄存器(CS,DS,ES,SS)。它们的区别和联系体现在它们的功能上,对它们的深入了解和正确运用需要通过编写程序来实现。\x0d\x0a2.大致功能如下:\x0d\x0aAX,可存放一般数据,而且可作为累加器使用;\x0d\x0aBX,可存放一般数据,而且可用来存放数据的指针(偏移地址),常常和DS寄存器连用;\x0d\x0aCX,可存放一般数据,而且可用来做计数器,常常将循环次数用它来存放;\x0d\x0aDX,可存放一般数据,而且可用来存放乘法运算产生的部分积,或用来存放输入输出的端口地址(指针);\x0d\x0aSP,用于寻址一个称为堆栈的存储区,通过它来访问堆栈数据;\x0d\x0aBP,可存放一般数据,用来存放访问堆栈段的一个数据区,作为基地址;\x0d\x0aSI,可存放一般数据,还可用于串操作中,存放源地址,对一串数据访问;\x0d\x0aDI,可存放一般数据,还可用于串操作中,存放目的地址,对一串数据访问;\x0d\x0aIP,用于寻址当前需要取出的指令字节,程序员不能对它直接操作;\x0d\x0aFLAGS,用于指示微处理器的状态并控制它的操作;\x0d\x0aCS,代码段寄存器,代码段是一个存储区域,存放的是CPU要使用的代码,CS存放代码段的段基地址;\x0d\x0aDS,数据段寄存器,数据段是包含程序使用的大部分数据的存储区,DS中存放数据段的段基地址;\x0d\x0aES,附加段寄存器,附加段是为某些串操作指令存放目的操作数而附近的一个数据段,ES中存放该数据段的段基地址;\x0d\x0aSS,堆栈段寄存器,堆栈段是内存中一个特殊的存储区,用于暂时存放程序运行时所需的数据或地址信息。SS中存放该存储区的段基地址。\x0d\x0a\x0d\x0a基本功能就是这些,要想透彻掌握深层的寄存器功能,必须要编写汇编源程序,可用微软的masm汇编程序进行编译,用dos系统自带的debug命令调试,直到程序正确运行,才能体会其中的奥妙。\x0d\x0a\x0d\x0a最后,还是用我的导师给我的一句话吧:“记住,学好汇编语言最重要的环节永远是上机调试出正确程序!” \x0d\x0a 共勉!
温馨提示:答案为网友推荐,仅供参考