masm汇编 assume 伪指令

群里很多人都在问 assume ds:xxxxx , ss:xxxx 这些指令有啥用

就是用来跟 数据标号 结合使用的. 主要是为了确定数据标号的段地址将使用哪个段寄存器

数据标号就是没有冒号的标号. 相当于c中的变量

数据标号:

;一般的地址标号,后面有冒号
start:

;数据标号, 后面不跟冒号,一般用在数据段中
data_segment segments

    first_block db 10 dup(0)  
    second_block dw 10 dup(0)

data_segment ends


 

first_block 是地址,同时带着单位字节 byte,
这个带字节的作用是: mov first_block[0],1 相当于 mov byte ptr ds:[0], 1

second_block 类似, 带2个字节
mov second_block[0],1  , 相当于 mov word ptr ds:[10],1

像mov , add, inc 等这些操作指令都会根据 数据标号后面跟的单位来操作, 如: inc second_block -> inc word ptr second_block ; 

把原本需要对内存操作N个字节[word ptr , byte ptr, dword ptr] 这些在写的时候省掉了
但编译后并没有省去.具体可以看编译后的

以上是数据标号的默认动作, 你也可以 mov byte ptr second_block[0],1  或  mov word ptr first_block[0],1 自己写清楚到底要操作几个字节;

 

接下来是 数据标号 跟 assume ds:xx 的关系, 主要是来确定编译后 标号 使用哪个段寄存器

如上代码

如果不写 assume ds:data_se

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值