Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: CATBro en 30 Julio 2014, 05:14 am



Título: No puedo restar XD
Publicado por: CATBro en 30 Julio 2014, 05:14 am
Hola a todos, resulta que me dejaron de tarea un programa que sume y reste, muestre el resultado en la pantalla de la consala pero con GoASM,  pero no puedo hacer que reste, esto es lo que llevo, les pego solo la parte de la resta que no sale...

Código:
.Data
inicio DD 0
var1 DD 5   ;modificar
var2 DD 4   ;modificar
resultado DD 1
suma DD 43
resta DD 45
igual DD 61
show DD 1
.Code

start:


Push - 11
Invoke GetStdHandle
Push 0, Addr inicio
Push 2, Addr show
Mov Bx, [var1]
Add Bx, 30H
Mov [show], Bx
Push Eax
Call WriteFile

Push - 11
Invoke GetStdHandle
Push 0, Addr inicio
Push 2, Addr resta
Push Eax
Call WriteFile

Push - 11
Invoke GetStdHandle
Push 0, Addr inicio
Push 2, Addr show
Mov Bx, [var2]
Add Bx, 30H
Mov [show], Bx
Push Eax
Call WriteFile

Push - 11
Invoke GetStdHandle
Push 0, Addr inicio
Push 2, Addr igual
Push Eax
Call WriteFile


Push - 11
Invoke GetStdHandle
Push 0, Addr inicio
Push 1D, Addr resultado
Mov Bx, [var2]
Mov Cx, [var1]
Sub Cx, Bx
Add Bx, 30H
Mov [resultado], Bx
Push Eax
Call WriteFile

Ret


Espero puedan ayudarme

Muchas gracias de antemano.
Saludos a todos por aqui!


Título: Re: No puedo restar XD
Publicado por: Eternal Idol en 30 Julio 2014, 10:54 am
¿GoAsm? Puff ... tenes que aprender a depurar tu codigo y mucho mas si usas herramientas minoritarias ... te recomiendo WinDbg (Debugging Tools for  Windows).


Mov Bx, [var2] ;BX = 4
Mov Cx, [var1] ;CX = 5
Sub Cx, Bx ;CX = 1
Add Bx, 30H ;BX = 0x34
Mov [resultado], Bx ;BX = 0x34

Tenes que usar CX, igual en cuanto tengas un resultado mayor a una cifra kaboom.