。。80×86存储器寻址方式
变址寻址和比例变址寻址
存储器结构
程序对存储器的分配
数据类型强制转换
80×86栈
动态存储器分配
运行时存储器的结构: 有 代码段 静态段(static) 只读数据段(readonly) 存储断storage
@nostorage属性,,允许在静态段,只读段,存储段中声明变量,但并不为这些变量分配实际的存储空间,,只是将当前地址分配给变量,并不为这个对象分配任何存储空间,该变量与出现在变量声明段的下一个对象共享相同的存储器地址
readonly
abcd: dword ;@nostorage;
byte ‘a’,‘b’,‘c‘,’d‘;
inc和dec指令:
mem.alloc(128);
for(mov(0,ebx);ebx<128;inc(ebx))do
mov(0,(type byte [eax+ebx]));
endfor;
获取存储器对象的地址: “&”获得静态变量的地址,,但是不能获得自动变量的地址(var段中的地址),使用lea指令
lea(reg32,变量内存) 第一个参数必须为32位的寄存器,第二个参数可以是任何合法的内存引用
static
b: byte; @nostorage;
byte 7,0,6,1,5,2,4;
;;;;
;;;;;
;;;;;
lea(ebx,b);
for( mov(0,ecx);ecx<8;inc(ecx) )do
stdout.put("[ebx+ecx]=",(type byte [ebx+ecx]),nl);
endfor