| 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 |