鱼C论坛

 找回密码
 立即注册
查看: 2647|回复: 3

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

[复制链接]
发表于 2017-7-19 19:26:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
按照书上的代码 mov ax,1000H
                       mov ds,ax
                       mov ds,[0]

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

但是把段寄存器 ds 改为 cs 结果就不对了
求解答。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-19 21:29:43 | 显示全部楼层
本帖最后由 我是大神哥哥 于 2017-7-19 21:31 编辑

首先要知道8086CPU不支持 mov 段寄存器,内存单元的,CS寄存器只是用于CPU执行的当前指令的段地址。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-19 22:00:30 | 显示全部楼层
本帖最后由 little豆宝 于 2017-7-19 22:02 编辑

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

所以,这两个寄存器有不同的作用。你换了cs存放指令的段,CUP执行时还是去ds中找,就找的不是你想给的了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-7-20 23:06:57 | 显示全部楼层
本帖最后由 erh 于 2017-7-20 23:09 编辑

mov cs,ax是不允许的。cs是代码段,不能用mov指令赋值。想改的话可以试试push ax,  然后iret或retf
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-24 19:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表