即墨公司做网站,设计师作品集网站,网站的建设部署与发布,网站建设功能需求方案一个变量如果包含的是另一个变量的地址#xff0c; 则该变量就称为指针(pointer) 。指针是操作数组和数据结构的极好工具#xff0c;因为它包含的地址在运行时是可以修改的。
.data
arrayB byte 10h, 20h, 30h, 40h
ptrB dword arrayB
ptrB1 dword OFFSET arrayBarray…
一个变量如果包含的是另一个变量的地址 则该变量就称为指针(pointer) 。指针是操作数组和数据结构的极好工具因为它包含的地址在运行时是可以修改的。
.data
arrayB byte 10h, 20h, 30h, 40h
ptrB dword arrayB
ptrB1 dword OFFSET arrayBarrayW WORD 1000h,2000h,3000h
ptrW DWORD arrayW
32位汇编时指针都是32位的
TYPEDEF定义指针类型 .386
.model flat,stdcall
option casemap:none
.stack 4096PBYTE TYPEDEF PTR BYTE ;PBYTE指向8位数据的指针类型
;这样的声明通常放在靠近程序开始的地方 在数据段之前 使得接下来就可以用PBYTE 来定义变量
PWORD TYPEDEF PTR WORD ;指向字的指针类型
PDWORD TYPEDEF PTR DWORD ;指向双字的指针类型.data
arrayB BYTE 10h,20h,30h,40h
ptr6 PBYTE ? ;指针变量ptr6末初始化
ptr1 PBYTE arrayB ;指针变量ptr2指向arrayB数组arrayW WORD 1, 2, 3
arrayD DWORD 4, 5, 6
ptr2 PWORD arrayW
ptr3 PDWORD arrayDExitProcess PROTO,dwExitCode:DWORD .code
main PROC mov esi, ptr1 ;把ptr1的值(arrayB的地址)给esimov al, [esi] ;al10hmov esi, ptr2 mov ax, [esi] ;ax0001hmov esi, ptr3mov eax, [esi] ;eax00000004INVOKE ExitProcess,0
main ENDP
END main