发新话题
打印

8086段寄存器与通用寄存器

8086段寄存器与通用寄存器

8086内部的寄存器之间是不是有包括和被包括的关系,例如,段寄存器是否包括通用寄存器

TOP

娈靛瘎瀛桦櫒ds,es,ss,cs
阃氱敤瀵勫瓨鍣╝x,bx,cx,dx,si,di,sp,bp
镌囦护瀵勫瓨鍣╥p
镙囧织瀵勫瓨鍣`R

8086瀵勫瓨鍣ㄥ彧灞炰簬涓婇溃锲涚镄勪竴绉,鏄浉浜掑钩绾х殑姒效康,鏁呮瀵勫瓨鍣ㄨ偗瀹氢笉浼氩寘鎷氱敤瀵勫瓨鍣

鍦ㄩ氱敤瀵勫瓨鍣╝x,bx,cx,dx涓,鍙妸瀹冧滑鍒嗘垚镌夊瓧鑺备娇鐢ㄧ殑瀵勫瓨鍣,濡俛x ah,al
bx bh,bl绛

璇峰弬钥冧互涓嬫枃绔
http://baike.baidu.com/view/6159.htm

TOP

8086里是有你所说的包括与被包括的关系,例如eax包括了ax,而ax包括了ah和al,但段寄存器不是这个用途。所谓通用寄存器是指用户可以拿来存放自己的数据的寄存器,通常他们都是要参与算术或者逻辑运算的。段寄存器不是通用寄存器,它的用途是专门用来方便用户对内存操作时寻址用的。有了段寄存器,用户可以以一个地址为基地址写程序了,例如,用户期望把自己的数组放在0xA0001000的位置,变量放在0xA0002000的位置,而程序的代码放在0x20000000的位置,那么他只要把数据段的段寄存器ds设置为0xA0000000,他拜候数组时就只要记得0x1000的偏移,拜候变量只要记得0x2000的偏移。而把代码段段寄存器设置为0x20000000,那么他想跳转到0x20000018的地方去执行,他只要记得0x18就行了。当然段寄存器还有别的好处。例如他可以让你拜候更大的空间,保护数据段、代码段、堆栈段之间不会轻易互相破坏,更多的知识需要你看一下内存的段式治理内容了。

TOP

8086内部共有14个16位的寄存器。
其中有:8个16位的通用寄存器(通用数据寄存器和通用地址寄存器各4个);
        4个16位的段寄存器;
        1个16位的状态标志寄存器;
        1个16位的指令指针寄存器。

TOP

发新话题