找回密码
 开放注册

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

搜索
查看: 1511|回复: 0

变量,标号与数据结构

[复制链接]

19

主题

3

回帖

41

牛毛

初生牛犊

积分
41
发表于 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[1024]:byte        ;例1
local        loc2默认类型DWORD  32位        ;例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-00***21b798a/
您需要登录后才可以回帖 登录 | 开放注册

本版积分规则

帮助|Archiver|小黑屋|通信管理局专项备案号:[2008]238号|NB5社区 ( 皖ICP备08004151号;皖公网安备34010402700514号 )

GMT+8, 2025-4-25 17:22 , Processed in 0.212768 second(s), 33 queries .

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表