汇编中关于EQU指令的问题

一.

COUNT EQU 100;令COUNT的值为100,存储器中为变量分配 0个字节
COUNT DB 100 ;令COUNT的值为100,存储器中为变量分配 1个字节
COUNT DW 100 ;令COUNT的值为100,存储器中为变量分配 2个字节

 

 

 

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

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

二.

 

 

引用 7 楼 wayaoqiang 的回复:
还有, "$"要跟"-"连用

$-标号

这个表示 标号那块内存的长度是吗?


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

这条指令什么也不做 直接跳到下一条指令 
为什么要加这条指令呢? 端口也要喘口气嘛

在对同一个I/O端口连续发出IO指令时,为确保I/O设备有足够的电路恢复时间, 通常在I/O指令之间加上一条“jmp $+N”这样的指令。 其意义在于延迟,以满足I/O端口的需要。

 

 

你可能感兴趣的:(汇编)