Pointers


A variable containing the address of another variable is called a pointer.

add ax, [pointer] add ax, SWORD PTR [pointer]
 INCLUDE Irvine32.inc
 .data
  array    SWORD  10, 20, 30, 40
  pointer  DWORD  array 
 .code
 main PROC
     mov   ecx, LENGTHOF array
     mov   eax, 0
 L1: add   ax, [pointer]
     add   pointer, 2
     loop  L1
     call  WriteInt
     exit
 main ENDP
 END main

 INCLUDE Irvine32.inc
 .data
  array    SWORD  10, 20, 30, 40
  pointer  DWORD  array
 .code
 main PROC
     mov   ecx, LENGTHOF array
     mov   eax, 0
 L1: add   ax, SWORD PTR [pointer]
     add   pointer, 2
     loop  L1
     call  WriteInt
     exit
 main ENDP
 END main

Output Output

 

 

 

 
add ax, [esi] add al, [esi]

 INCLUDE Irvine32.inc
 .data
  array    SWORD  10, 20, 30, 40
  pointer  DWORD  array
 .code
 main PROC
     mov   ecx, LENGTHOF array
     mov   eax, 0
     mov   esi, pointer
 L1: add   ax, [esi]
     add   esi, 2
     loop  L1
     call  WriteInt
     exit
 main ENDP
 END main

 INCLUDE Irvine32.inc
 .data
  array    SWORD  0102h, 0304h, 0506h
  pointer  DWORD  OFFSET array
 .code
 main PROC
     mov   ecx, 6
     mov   eax, 0
     mov   esi, pointer
 L1: add   al, [esi]
     inc   esi
     loop  L1
     call  WriteHex
     exit
 main ENDP
 END main
Output Output

 

 

 

 






      “Why do they call it rush hour when nothing moves?”    
      ― Robin Williams