c语言标号:汇编语言标号、变量



4.5 标号
标号是种特殊标识符它代表代码段中某个具体位置它主要用于表明转移目标位置其介绍说明形式如下:
标号:  汇编语言指令   ;注释
解释:标号必须是个合法标识符在其后面紧跟个冒号\":\"冒号和汇编语言指令的间要有分隔符通常用若干个空格、TAB来作分隔符般用分隔符使有关内容对齐为宜
4.6 内存变量和标号属性
变量是个符号地质其值会根据其数据类型来对应从该地址以后若干个存储单元中所存数值标号也是个符号地址它所对应存储单元中存放是指令代码虽然它们在某些性质上有所区别但它们都是个符号地址代表个存储单元地址所以它们都具有存储单元属性除此的外它们还有各自特殊属性
下面介绍内存变量和标号属性及其有关操作符
4.6.1 段属性操作符
段属性操作符(SEG)返回该标识符所在段段地址我们般只会取内存变量所在段段地址而很少取标号所在段段地址
假设有下面变量定义:

SCORE DW ?
NAME  DB 10 DUP(10) ;数据段变量定义

MOV AX, SEG SCORE;代码段指令
MOV BX, SEG NAME

由于SCORE和NAME在同段中定义所以寄存器AX和BX值是相等
4.6.2 偏移量属性操作符
偏移量属性操作符(OFFSET)返回该标识符离它所在段段地址有多少字节般情况员只会取内存变量偏移量而不太关心标号偏移量
假设有下面变量定义:
FIRST  DD 12345678H, 0 ;数据段变量定义
SCORE DW ?, 12H
NAME  DB 10 DUP(10)

MOV AX, OFFSET SCORE;代码段指令
MOV BX, OFFSET NAME


假设FIRST是数据段个被定义变量名偏移量为0SCORE偏移量为8它要跳过 2个双字其它如此类推
由于NAME在SCORE的后且SCORE的后有 2个字占 4个字节所以BX值要比AX值大4
Tags:  c语言标号

延伸阅读

最新评论

发表评论