harrysha 发表于 2017-7-19 19:26:50

关于mov 段寄存器,内存单元

按照书上的代码 mov ax,1000H
                     mov ds,ax
                     mov ds,

能够把对应内存里的数据放入ds

但是把段寄存器 ds 改为 cs 结果就不对了
求解答。。。。

我是大神哥哥 发表于 2017-7-19 21:29:43

本帖最后由 我是大神哥哥 于 2017-7-19 21:31 编辑

首先要知道8086CPU不支持 mov 段寄存器,内存单元的,CS寄存器只是用于CPU执行的当前指令的段地址。

little豆宝 发表于 2017-7-19 22:00:30

本帖最后由 little豆宝 于 2017-7-19 22:02 编辑

1.ds是存放指令的段寄存器,它指向的内存存放的是代码(CPU执行的)
2.cs是存放数据的段寄存器,它指向的内存是存放数据的(比如某个变量需要的值)

所以,这两个寄存器有不同的作用。你换了cs存放指令的段,CUP执行时还是去ds中找,就找的不是你想给的了。

erh 发表于 2017-7-20 23:06:57

本帖最后由 erh 于 2017-7-20 23:09 编辑

mov cs,ax是不允许的。cs是代码段,不能用mov指令赋值。想改的话可以试试push ax,然后iret或retf
页: [1]
查看完整版本: 关于mov 段寄存器,内存单元