伪指令EQU和$ -问题

娃娃GO 2010-11-29 06:50:20
ARRA DW -1,75,9,-289,300,27,32,77,1000,45
COUNT EQU $-ARRA

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

EQU, $, - 解释下
...全文
3038 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
nanlingcg 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 masmaster 的回复:]

在对同一个I/O端口连续发出IO指令时,为确保I/O设备有足够的电路恢复时间, 通常在I/O指令之间加上一条“jmp $+N”这样的指令。 其意义在于延迟,以满足I/O端口的需要。
[/Quote]
不过,某些人士说,现在不必要喘气了,现在的机子肺活量都很好,大量运用中都不需要喘气了...呵呵!!!
娃娃GO 2010-11-29
  • 打赏
  • 举报
回复 1
好了, 此贴告一段落, 谢谢以上各位的讲解, 很详细很生动, 说句心理话你们别不高兴, 其实我还听不太懂, 个人比较愚钝, 哈哈, 不过没所谓, 以后多多学习, 再见, 散分
znxllyuan 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 masmaster 的回复:]
在对同一个I/O端口连续发出IO指令时,为确保I/O设备有足够的电路恢复时间, 通常在I/O指令之间加上一条“jmp $+N”这样的指令。 其意义在于延迟,以满足I/O端口的需要。
[/Quote]
哎,,根你比 我那些大白话都没法看了
masmaster 2010-11-29
  • 打赏
  • 举报
回复
在对同一个I/O端口连续发出IO指令时,为确保I/O设备有足够的电路恢复时间, 通常在I/O指令之间加上一条“jmp $+N”这样的指令。 其意义在于延迟,以满足I/O端口的需要。
znxllyuan 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wayaoqiang 的回复:]
还有, "$"要跟"-"连用

$-标号

这个表示 标号那块内存的长度是吗?
[/Quote]
C语言我没学
A EUQ 1
A就是个常量 他就是1 但是EQU定义的标号不可以重复定义
$不是非要和-连用
ARRA DW -1,75,9,-289,300,27,32,77,1000,45
COUNT EQU $-ARRA ;这里的$就是这条指令的偏移 比如是09H, 减去ARRA的偏移(比如是01H)
那么ARRA的长度 就是08H
$也可以在指令中使用 比如
out 71h,al
jmp $+1
IN AL,72H

这条指令什么也不做 直接跳到下一条指令
为什么要加这条指令呢? 端口也要喘口气嘛
nanlingcg 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 wayaoqiang 的回复:]

还有, "$"要跟"-"连用

$-标号

这个表示 标号那块内存的长度是吗?
[/Quote]
COUNT EQU $-ARRA
COUNT==(COUNT地址[即当前地址]-ARRA地址)
masmaster 2010-11-29
  • 打赏
  • 举报
回复 1
COUNT EQU $-ARRA
当前的偏移地址$减去标号为ARRA的偏移地址,得到(数组)ARRA的个数。
娃娃GO 2010-11-29
  • 打赏
  • 举报
回复
还有, "$"要跟"-"连用

$-标号

这个表示 标号那块内存的长度是吗?
娃娃GO 2010-11-29
  • 打赏
  • 举报
回复
哦,
A EQU 1

用c语言来描述是不是

#define A 1 //这样是吗?
znxllyuan 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 nanlingcg 的回复:]
基本同意楼上意见!!!
[/Quote]
哇哈哈 谢谢 谢谢
nanlingcg 2010-11-29
  • 打赏
  • 举报
回复
基本同意楼上意见!!!
znxllyuan 2010-11-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 znxllyuan 的回复:]
count EQU $-ARRA
count DW $-ARRA
这两句指令功能一样吗?

不一样。

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

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

引用shzhfu的回到 原帖地址
http://topic.csdn.net/u/20101110/16/314856f1-80a6-4a00-bcf4-0b529e000c3b.html
znxllyuan 2010-11-29
  • 打赏
  • 举报
回复
count EQU $-ARRA
count DW $-ARRA
这两句指令功能一样吗?

不一样。

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

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


znxllyuan 2010-11-29
  • 打赏
  • 举报
回复 1
count是一个常量 他的值 是此指令首地址的偏移-ARRA的偏移=ARRA的长度

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

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

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

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧