《汇编语言第三版》王爽学习历程——assume的重新认识

本文探讨了汇编语言中assume指令的作用,指出assume并非必须,且详细解释了在不同情况下,如标号加冒号时,如何影响段地址的设定。作者通过实验发现,assume伪指令用于关联段寄存器和段地址,但并不实际修改寄存器值。当标号加冒号出现在代码段外,编译将失败。总结强调,标号加冒号的段地址通常关联到CS,而其他段则关联相应的寄存器。
摘要由CSDN通过智能技术生成

assume重新认识

以下都是我自己分析的,请大神来指点迷津,只是从实验的现象来总结的,并未从真正的本质入手的,只是学习到第16章的时候犯嘀咕,所以也别用太深奥的知识来说明。

assume是一定要写的吗?
答案是不一定的

code segment
        mov ax, 4c00h
        int 21h
code ends
end

这里写图片描述
调试后寄存器的状态,在没有代码开始的标号时,CS = 076A,IP = 0000, DS = 075A的,符合书本上说的,前256个字节是空出来的(这个我还不懂),程序真正的入口是第256个字节开始的。当然你前面写的不是代码段,你不指名入口,程序的入口依然是第256个字节开始。

如果出现标号加冒号,那么情况就有所改变了。
首先,标号加冒号里面存的是一条代码的偏移地址,就存在个问题。那么段地址在哪。
我们必须加上assume cs:code时,才能正常编译,这时就知道了

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值