zoukankan      html  css  js  c++  java
  • 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   的结构体的变量使用
    明白些了吗?  

  • 相关阅读:
    「ZJOI2019」开关
    「ZJOI2019」Minimax 搜索
    杨氏矩阵学习笔记
    「LibreOJ NOI Round #2」简单算术
    「LibreOJ NOI Round #2」小球进洞
    组合总和 II(力扣第40题)
    组合总和 I(力扣第39题)
    组合(力扣第77题)
    使用MapReduce解决蚂蚁森林第二题
    Hive练习--蚂蚁森林习题二
  • 原文地址:https://www.cnblogs.com/johnpher/p/2570667.html
Copyright © 2011-2022 走看看