I believe you are using the Irvine library? That cannot print out 64bit numbers, at least I don't remember it being able to.
So, unless you want to write out your own 64bit number printing routine, just use the c function printf
, masm32 calls it crt_printf
.
You can either create a qword variable to store edx:eax, or you can use a structure.
include masm32rt.inc
include msvcrt.inc
includelib msvcrt.lib
BigNum struc
LoWord dd ?
HiWord dd ?
BigNum ends
.data
fmtqw1 db "100000 * 100000 = %llu",13, 10, 0
fmtqw2 db "400030 * 500020 = %llu",13, 10, 0
.data?
myqword dq ?
BigNumber BigNum <>
.code
start:
mov eax, 100000
mov ecx, 100000
mul ecx
mov dword ptr[myqword], eax
mov dword ptr[myqword + 4], edx
invoke crt_printf, offset fmtqw1, myqword
mov eax, 400030
mov ecx, 500020
mul ecx
mov BigNumber.LoWord, eax
mov BigNumber.HiWord, edx
invoke crt_printf, offset fmtqw2, BigNumber
inkey
invoke ExitProcess, 0
end start