变量和标号的属性

变量和标号的属性

ID:20734787

大小:27.50 KB

页数:7页

时间:2018-10-15

变量和标号的属性_第1页
变量和标号的属性_第2页
变量和标号的属性_第3页
变量和标号的属性_第4页
变量和标号的属性_第5页
资源描述:

《变量和标号的属性》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、变量和标号的属性  1.标号由一组放在语句前头的标识符后跟一个“:“来定义,用以指定相应程序段在内存的首地址位置。  任何一个标号一经定义就具有3种属性:  标号的段地址;  标号的偏移地址;  标号的类型;1)NEAR--该标号只能在段内转移;2)FAR--在段间使用;  标号和名字一经定义便具有以下两类三种属性:  ①段值  标号和名字对应存储单元的段地址  ②偏移值  标号和名字对应存储单元的偏移地址  ③类型  标号、子程序名的类型可以是NEAR(近)和FAR(远),分别表示段内或段间  2.变量的属性:  变量一经定义,通常具有5种

2、属性(即特征):  1)变量的段地址(SEG);2)变量的偏移地址(OFFSET);  3)变量类型(TYPE):所定义变量所占字节数;由DB、DW、DD、DQ、DT伪指令定义的变量类型分别为1,2,4,8,10。前3种类型又分别称为BYTE类、WORD类、DWORD类。  4)变量长度(LENGTH):所定义变量的个数;  5)变量大小(SIZE):定义中分配给同一变量名所有变量的总字节数;  变量定义实质上是对数据区内存的一种安排,这种安排对汇编语言编程是非常重要的,它是在汇编过程中完成的。编写程序时,直接引用变量的名字,而汇编过程中,对

3、任何变量的引用,都自动转换为变量相应的偏移地址。  变量名的类型可以是BYTE(字节)、WORD(字)和DWORD(双字)等  地址操作符  取得名字或标号的段地址和偏移地址两个属性  []将括起的表达式作为存储器地址  $当前偏移地址  :采用指定的段地址寄存器  OFFSET名字/标号  返回名字或标号的偏移地址  SEG名字/标号  返回名字或标号的段地址  org$+10  arraydb45,45h  .code  movax,segarray  movds,ax  movbx,offsetarray  ;等价于leabx,arra

4、y  movcl,array+4  ;等效于movcl,array[4]  movax,es:[2000h]  moval,byteptrw_var;w_var是一个字变量  jmpfarptrn_label;n_label是一个标号  使用PTR操作符,可以临时改变名字或标号的类型  THIS类型名  利用THIS说明的操作数具有汇编时的当前逻辑地址,但具有指定的类型  b_varequTHISbyte  ;按字节访问变量b_var,但与w_var的地址相同  w_vardw10dup(0);按字访问变量w_var  f_jumpequTH

5、ISfar  ;用f_jump为段间转移(f_jumplabelfar)  n_jump:movax,w_var  ;用n_jump为段内近转移,但两者指向同一条指令  LABEL伪指令的功能等同于“EQUTHIS”  SHORT标名  指定标号作为-128~+127字节范围内的短转移  jmpshortn_jump  当然,如果标号实际上超出了这个范围,则出错。  TYPE名字/标名  返回表明名字或标号类型的一个字量数值  对字节、字和双字变量依次返回1、2和4;  对短、近和远转移依次返回ff01h、ff02h和ff05h  movax

6、,TYPEw_var;汇编结果为movax,2  movax,TYPEn_jump  ;汇编结果为movax,0ff02h(near标号)  操作符SIZEOF返回整个变量占用的字节数  LENGTHOF返回整个变量的数据项数(即元素数)  SIZEOF=LENGTHOF×TYPE  .modelsmall  .stack  .data  v_byteequthisbyte  ;v_byte是字节类型,与变量v_word的地址相同  v_worddw3332h,3735h  ;v_word是字类型的变量  targetdw5dup(20h) 

7、 ;分配数据空间2×5=10字节  crlfdb0dh,0ah,’$’  flagdb0  n_pointdwoffsets_label  ;取得标号s_label的偏移地址  例:属性及其应用  .code  .startup  moval,byteptrv_word  ;用PTR改变v_word的类型,否则类型不匹配  decal  movv_byte,al  ;对v_word的头一个字节操作,原为32H、现为31H  n_label:cmpflag,1  jzs_label;flag单元为1转移  incflag  jmpshortn_

8、label;进行短转移  s_label:cmpflag,2  jznext;flag单元为2转移  incflag  jmpn_point  ;段内的存储器间接寻

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。