代码1:
TITLE Fibonacci Numbers            (Finbon.asm)

; This program shows how use the WHILE directive
; to generate doubleword variables containing
; all Fibonacci numbers less than a given limit.
; Last update: 10/14/01

INCLUDE Irvine32.inc

.data
val1  = 1
val2  = 1
DWORD val1    ; first two values
DWORD val2
val3 = val1 + val2

WHILE val3 LT 0F0000000h
    DWORD val3
    val1 = val2
    val2 = val3
    val3 = val1 + val2
    
ENDM

.code
main PROC
    exit
main ENDP
END main
问题1:[color=FF0000][size=2]DWORD val3 一句写到 DWORD val2 后面为什么编译出错?[/size][/color]
代码2:TITLE Creating a Linked List            (List.asm)

; This program shows how the STRUC directive
; and the REPT directive can be combined to
; create a linked list at assembly time.
; Last update: 11/8/02

INCLUDE Irvine32.inc

ListNode STRUCT
  NodeData DWORD ?
  NextPtr  DWORD ?
ListNode ENDS

TotalNodeCount = 15
NULL = 0
Counter = 0

.data
LinkedList LABEL PTR ListNode
REPT TotalNodeCount
    Counter = Counter + 1
;    ListNode <Counter, ($ + SIZEOF ListNode)>            ; TRY THIS
    ListNode <Counter, ($ + Counter * SIZEOF ListNode)>
ENDM
ListNode <0,0>    ; tail node

.code
main PROC
    mov  esi,OFFSET LinkedList

; Display the integers in the NodeData members.
NextNode:
    ; Check for the tail node.
    mov  eax,(ListNode PTR [esi]).NextPtr
    cmp  eax,NULL
    je   quit

    ; Display the node data.
    mov  eax,(ListNode PTR [esi]).NodeData
    call WriteDec
    call Crlf

    ; Get pointer to next node.
    mov  esi,(ListNode PTR [esi]).NextPtr
    jmp  NextNode

quit:
    exit
main ENDP
END main
问题2:ListNode <Counter, ($ + Counter * SIZEOF ListNode)> 我觉得应该是ListNode <Counter, ($ +  SIZEOF ListNode)>。因为$伪指令是取当前指令的地址。请高手指点一下。
先在这里谢谢各位了。