0x02全局变量和局部变量

全局变量在什么地方定义?

  .data和.data?

格式如下:

  变量名 类型 初始值1,初始值2...

  变量名 类型 重复数 dup(初始值1,初始值2,...)

  变量名 类型 ?

类型有哪些?

  字节 byte/db 字 word/dw 双字dword/dd 三字fword/df 四字qword/dq 十字节 tbyte/dt 有符号字节 sbyte 单精度浮点 real4

  val db ? ;定义变量

  buffer dw 64 dup(0)  ;定义64个字的缓冲区

  szText db 'abc123',0dh,0ah  ;定义字符串 ASCII字符串加回车换行

注意:定义字节和字在内存中存放的区别

  内存以字为存储单位,低位在前,高位在后;

LIST

10   VAL 34H
LIST+1 20   VAL+1 12H
LIST+2 30   VAL+2 78H
LIST+3 40    VAL+3 56H

list db 10,20,30,40

  mov al,list

  mov bl,list+1

  mov cl,list+2

  mov dl,list+3

val dw 1234h,5678h

  mov ax,val      ;ax=1234h 

  mov bx,val+2

  mov dx,word ptr val+1

  mov eax,dword ptr val

疑问?

 

注:单引号和双引号的区别,可以相互定义对应的字符,比如:
"aaa'a'" -> 输出结果:aaa'a'

'aaa"a"' -> 输出结果:aaa"a"

局部变量 

  作用域在单个子程序,属于堆栈变量,伪指令 LOCAL

  LOCAL 变量名1[重复数量]:[类型],...

  test proc

    LOCAL @val:dword      ;@定义一个局部变量,便于区分,

    LOCAL @buffer[1024]:btye

    LOCAL @wnd:WNDCLASS  ;定义一个WNDCLASS数据结构

    mov eax,0FFFFFFFFH

    mov @val,eax

  test endp 

原文地址:https://www.cnblogs.com/zhuzhuqwa/p/5480559.html