No puedo restar XD

Iniciado por CATBro, 30 Julio 2014, 05:14 AM

0 Miembros y 1 Visitante están viendo este tema.

CATBro

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...


.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!

Eternal Idol

¿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.
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón