+ -
当前位置:首页 → 问答吧 → 伪指令EQU和$ -问题

伪指令EQU和$ -问题

时间:2010-11-29

来源:互联网

ARRA DW -1,75,9,-289,300,27,32,77,1000,45
COUNT EQU $-ARRA

COUNT EQU $-ARRA这句是什么意思?count的值是多少?

EQU, $, - 解释下

作者: wayaoqiang   发布时间: 2010-11-29

count是一个常量 他的值 是此指令首地址的偏移-ARRA的偏移=ARRA的长度

equ编辑本段表达式赋值操作符EQU
  有时候程序中多次出现同一个表达式,为方便起见,可以用赋值伪操作给表达式赋予一个名字。   其格式如下:   Expression_name EQU Expression   此后程序中凡需要用到该表达式指出,就可以用表达式名来代替了。可见,EQU的引入提高了程序的可读性,也是其容易修改。   上始终的表达式可以是任何有效的操作数格式,可以是任何可求出常数值的表达式,也可以是任何有效的助记符。   
举例如下:   
CONSTANT EQU 256 数值赋以符号名  
DATA EQU HEIGHT+12 地址表达式赋以符号名   
ALPAHA EQU 7

$-----------------
汇编地址计数器用符号$表示,它用来记录正在被汇编程序翻译的语句的地址,即$的内容标示了汇编程序当前的工作位置。
  在一个源程序中往往包含多个段。汇编程序在将该源程序翻译成目标程序时,每遇到一个新的段,就为该段分配一个初置为0的汇编地址计数器,然后,再对该段中 的语句汇编。在汇编过程中,对凡是需要申请分配存储单元的语句和产生目标代码的语句,汇编地址计数器则按该语句目标代码的长度增值。因此,段内定义的所有标号和变量的偏移地址就是翻译该语句时当前汇编地址计数器$的值。

 说白了就是当前指令的偏移用$表示

作者: znxllyuan   发布时间: 2010-11-29

count EQU $-ARRA
count DW $-ARRA 
这两句指令功能一样吗?

不一样。

count EQU $-ARRA 定义了一个常量,不占用内存单元,代码段中使用它,等价于使用一个立即数。

count DW $-ARRA 定义了一个变量,占用2个字节的内存单元,代码段中使用它,就变成一个[偏移地址]。


作者: znxllyuan   发布时间: 2010-11-29

引用 2 楼 znxllyuan 的回复:
count EQU $-ARRA
count DW $-ARRA
这两句指令功能一样吗?

不一样。

count EQU $-ARRA 定义了一个常量,不占用内存单元,代码段中使用它,等价于使用一个立即数。

count DW $-ARRA 定义了一个变量,占用2个字节的内存单元,代码段中使用它,就变成一个[偏移地址]。


 引用shzhfu的回到 原帖地址
 http://topic.csdn.net/u/20101110/16/314856f1-80a6-4a00-bcf4-0b529e000c3b.html

作者: znxllyuan   发布时间: 2010-11-29

基本同意楼上意见!!!

作者: nanlingcg   发布时间: 2010-11-29

引用 4 楼 nanlingcg 的回复:
基本同意楼上意见!!!

哇哈哈 谢谢 谢谢

作者: znxllyuan   发布时间: 2010-11-29