Hola, me parece que tienes un error aqui:
add ebx,[resultado]
es al reves.
add [resultado], ebx
Luego, resultado es un dword. MessageBox puede imprimir cadenas. Para eso tendrias que convertir de DWORD a STRING de alguna u otra manera.
Una opcion facil, es usar la api de windows, la funcion wsprintf.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms647550(v=vs.85).aspx
(se parece al printf de c)
Acordate que esta funcion no es STDCALL, despues de hacer el call, tienes que limpiar la pila de los parametros que hiciste push.
.data
resultado dd 0
szInt db '%i',0
str_resultado db 24 dup ?
.code
start:
mov [resultado], 7
;
push [resultado]
push szInt
push str_resultado
call [wsprintf]
add esp, 12 ;wsprintf es cdecl, 3 parametros = 3 * 4bytes = 12.
;
;listo, ahora str_resultado es un puntero a una cadena.
Saludos.