lucas_w17
un1verses
2017-05-16 13:20
采纳率: 100%
浏览 2.0k
已采纳

汇编语言的Call指令的问题

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

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • fjqisba
    fjqisba 2017-05-16 14:06
    已采纳

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

    点赞 评论
  • qq_20095747
    Ephemeral108 2020-02-12 12:11

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

    点赞 评论

相关推荐