汇编语言的Call指令的问题

如图所示,其他几个寄存器的执行结果我都懂,为什么cs的值是0?他的值应该跟ds一样吧?或者原因是ds的值本身就是0?图片说明

2个回答

整段代码CS都是一直为0的啊,这只是当前CS为0的一个特例而已,不用在意那个CS=0
ds是data stack,即数据段的基址

lucas_w17
un1verses 好吧。。因为我debug的时候ds都是0b5c之类的,没想到还能是0 。。
3 年多之前 回复

我怎么感觉上面那位仁兄的解答有问题呢?cs是代码段地址指针 ip是代码偏移地址 也就是说cs和ip指向哪里cpu就执行到哪里,
执行call命令相当于push cs,push ip 后jump 内存地址, 而执行jump命令相当于设置cs和ip的值 上面已经把内存地址0设置为0123h即偏移地址,
而后面又把内存地址赋值0000h即段地址 所以 cs-->0000h, ip-->0123h 以上是个人见解,自己也在学汇编 如果哪里有问题说的不对还望能及时指正

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问