chenrenfei 发表于 2011-1-31 18:48:20

变量,标号与数据结构

我是大家的讲师 SOLOVEYOU
标号:
当程序中要跳转到另一位置时,需要有一个标识来指示新的位置,这就是标号,通过在目的地址的前面放上一个标号,可以在指令中使用标号来代替直接使用地址。
JMP NEXT
在程序中使用一条跳转指令的时候,可以用标号来表示跳转的目的地,编译器在编译的时候会把它替换成地址,标号既可以定义在目的指令同一行的头部,也可以在目的指令前一行单独用一行定义,标号定义的格式是:
标号名:                        目的指令

标号名:                        
目的指令
配最近的一个
变量:
全局变量的作用域是整个程序,Win32汇编的全局变量定义在 .data或 .data?段内,可以同时定义变量的类型和长度,格式是:
变量名      类型    初始值1,初始值2,……
变量名      类型    重复数量 dup (初始值1,初始值2,……)
MASM用local伪指令提供了对局部变量的支持。定义的格式是:
local       变量名1[[重复数量]][:类型],变量名2[[重复数量]][:类型]……
local伪指令必须紧接在子程序定义的伪指令proc后、其他指令开始前,这是因为局部变量的数目必须在子程序开始的时候就确定下来
local      loc1:byte      ;例1
local      loc2默认类型DWORD32位      ;例2
local      loc3:WNDCLASS      ;例3
TestProc      proc
      local      @loc1:dword,@loc2:word
      local      @loc3:byte
      mov      eax,@loc1
      mov      ax,@loc2
      mov      al,@loc3
      ret
TestProc      endp
这是一个名为TestProc的子程序,用local语句定义了3个变量,@loc1是dword类型,@loc2是word类型,@loc3是byte类型,在程序中分别有3句存取3个局部变量的指令,然后就返回了,编译成可执行文件后,再把它反汇编就得到了以下指令:
下载地址:http://www.rayfile.com/files/bb6 ... -a156-0014221b798a/
页: [1]
查看完整版本: 变量,标号与数据结构