ASSUME伪指令

assume最典型的用法:

     是指明变量与段寄存器的联系,比如   assume     ds:data,它是告诉编译器以后所有在data段中定义的变量寻址时,使用ds作为段地址,但是它不对程序作任何事,比如你必须自己对ds赋值,这也就是为什么dos下典型的汇编段如下:

.data 
........ 
.code 
........ 
        assume     cs:code,ds:data 
proc       main     far 
        mov     ax,data 
        mov     ds,ax 
        ... 
endp 
end 

 

需要注意的是cs不需要赋值,因为它是由操作系统调用程序时赋值的。

      ASSUME伪指令是配合SEGMENT伪指令使用的,其作用是通知MASM寻址某一特定段时要使用哪一个段寄存器。MASM在生成实际指定寻址方式操作数的机器代码时要用到这些信息。要认识到ASSUME伪指令的存在只是为了告诉MASM如何将各种段寄存器同符号表中的符号关联起来,MASM实际上并不将任何值装入任何段寄存器,也就是说用户必须自己通过CPU指令完成。

 

给你个实例:

assume   edi:ptr   NM_TREEVIEW   
.if   [edi].hdr.code==TVN_BEGINDRAG   
    .... 
.endif 


assume   语句用来告诉编译器MASM把edi作为指向NM_TREEVIEW   的结构体的变量使用
明白些了吗? 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值