elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  Ayuda, ya no se que hacer
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda, ya no se que hacer  (Leído 3,280 veces)
alexpin

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Ayuda, ya no se que hacer
« en: 11 Abril 2013, 01:27 am »

en este programa quisiera que se sumen dos variables
que estan previamente declaradas,
pero por alguna razon se concatenan los
valores y me devuelve strings en lugar de un valor
creo que el error es de base y se encuentra en la
declaracion

section .data
msg:      db "La X= "
lmsg:       equ $-msg
msg1:      db "La Y= "
lmsg1:      equ $-msg1
;val_x:      db "100",10
;lval_x:      equ 100
;val_y:      db "9",10
;lval_y:      equ 9
nlinea:      db 10,10,0
lnlinea:   equ $-nlinea
section .bss
lval_x:      equ 100
lval_y:      equ 9
result   resw 2
section .text
global _start:
_start:
mov    eax,4
mov    ebx,1
mov   ecx,msg
mov   edx,lmsg
int   80h

mov   eax,4
mov   ebx,1
mov   ecx,lval_x
;mov   edx,lval_x
int   80h

mov   eax,4
mov   ebx,1
mov   ecx,msg1
mov   edx,lmsg1
int   80h

mov   eax,4
mov   ebx,1
mov   ecx,lval_y
;mov   edx,lval_y
int   80h

mov   eax,lval_x
mov   ebx,lval_y

sub   eax,'0'
sub   ebx,'0'

add   eax,ebx

add   eax,'0'
mov   [result], eax

mov   eax,4
mov   ebx,1
mov   ecx,result
int   80h

mov   eax,4
mov   ebx,1
mov   ecx,nlinea
mov   edx,lnlinea
int   80h

mov   eax,1
mov   ebx,0
int   80h


En línea

xv0


Desconectado Desconectado

Mensajes: 1.026



Ver Perfil
Re: Ayuda, ya no se que hacer
« Respuesta #1 en: 11 Abril 2013, 17:31 pm »

Hola

¿Quieres que imprima el entero del resultado?

Podrías declarar las variables con un .int.

No sé porqué copias 1 a ebx todas las veces si no cambia el valor, hasta esos sub que no se a que vienen, estaria mejor así:

Código
  1. inc ebx

Un saludo.


En línea

alexpin

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda, ya no se que hacer
« Respuesta #2 en: 12 Abril 2013, 00:11 am »

mov eax,4; Especifica la llamada al sys_write
mov ebx,1;Especifica el descriptor de archivo 1 :Standar de Output
sub eax,'0'es para transformar de string a decimal
add eax,'0' transforma de decilmal a string
En línea

Vaagish


Desconectado Desconectado

Mensajes: 875



Ver Perfil
Re: Ayuda, ya no se que hacer
« Respuesta #3 en: 12 Abril 2013, 07:32 am »

Es Masm eso ? Podrias probar con atodw y dwtoa
En línea

alexpin

Desconectado Desconectado

Mensajes: 3


Ver Perfil
Re: Ayuda, ya no se que hacer
« Respuesta #4 en: 12 Abril 2013, 17:58 pm »

Lo siento creo que no di la suficiente información es nasm
pero igual ya lo resolví y quedo algo así
section .data
m:    db ”La x= ”;mensaje a mostrar
lm:    equ $-m    ;tama ˜no del mensaje
x:    db ”100”   ;se define el valor de la variable
xl:    equ $-x    ;se define el tama˜no de la variable
de:    db ”9”   ;se define el valor de la variable 2
del:    equ $-de   ;se define el tama˜no
se:    db 10,0,0   ; generamos un salto de linea
sel:    equ $-se   ; generamos el espacio
section .bss
result    resw 2 ; creamos la variable resultado
section .text
global start:    ;Punto de entrada para Linker
start:
mov    eax,4   ;Especifica la llamada al sys write
mov    ebx,1   ;Standar de Output
mov    ecx,m   ;se pasa la direcion del mensaje
mov    edx,lm   ;Se pasa la longitud del mensaje
int    80h      ;invoca la interrupcion 80h
mov    eax,4   ;Especifica la llamada al sys write
mov    ebx,1   ;Standar de Output
mov    ecx,x   ;se pasa la direcion del mensaje
mov    edx,xl   ;Se pasa la longitud del mensaje
int    80h      ;invoca la interrupcion 80h
mov    eax,4   ;Especifica la llamada al sys write
mov    ebx,1   ;Standar de Output
mov    ecx,se   ;se pasa la direcion del mensaje
mov    edx,sel   ;Se pasa la longitud del mensaje
int    80h      ;invoca la interrupcion 80h
mov    eax,[m]   ;pasamos m a un registro
mov    ebx,
  •    ;pasamos x a un registro
sub    eax,’0’   ;transforma m de String a Entero
sub    ebx,’0’   ;transforma x de String a Entero
add    eax,ebx   ;Sumamos los dos valores
add    eax,’0’   ;transforma de entero a string
mov    [result],eax;almacenamos en result
mov    eax,4   ;Especifica la llamada al sys write
mov    ebx,1   ;Standar de Output
mov    ecx,result   ;Se imprime resultado
mov    edx,1   ;Standar de Output
int    80h      ;invoca la interrupcion 80h
mov    eax,4   ;Especifica la llamada al sys write
mov    ebx,1   ;Standar de Output
mov    ecx,se   ;se pasa la direcion del mensaje
mov    edx,sel   ;Se pasa la longitud del mensaje
int    80h      ;invoca la interrupcion 80h
mov    eax,1   ;Standar de Output
mov    ebx,0   ; se especifica el codigo de salida
int    80h      ;invoca la interrupcion 80h
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
AYUDA!!! no se que hacer!!!
PHP
eduardosdt 3 1,849 Último mensaje 9 Octubre 2007, 23:42 pm
por Ertai
Ayuda porfavor que ya no se que hacer
Windows
Caótico 3 2,757 Último mensaje 5 Mayo 2010, 17:21 pm
por -- KiLiaN --
NECESITO AYUDA!!! NO SE Q HACER
Foro Libre
Haker304 9 3,384 Último mensaje 15 Noviembre 2010, 15:40 pm
por rolo91
Ayuda a hacer web
Desarrollo Web
4r3s 6 2,712 Último mensaje 10 Enero 2011, 17:11 pm
por Spider-Net
no se que hacer ayuda!
Windows
Cch 7 3,361 Último mensaje 5 Enero 2014, 22:17 pm
por Cch
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines