サンキュー、 >>6 の言うとおりにしたら動いたよ。

ソースはこれ。コンパイル結果を読みやすいようにレジスタアドレスを10進に変えてある。
http://codepad.org/SBJtR0is

GCCのコンパイル結果。見事にREG_A、REG_Bへの代入に成功している。
.loc 1 10 0
movl $12345678, %edx
movl $foo, %eax
movl %eax, (%edx)
.loc 1 11 0
movl $12345674, %edx
movl $foo, %eax
movl %eax, (%edx)
.loc 1 12 0
addl $4, %esp
popl %ecx
popl %ebp
leal -4(%ecx), %esp
ret

本当にありがとう。