Test Foro de elhacker.net SMF 2.1

Programación => Programación General => ASM => Mensaje iniciado por: alexpin en 11 Abril 2013, 01:27 AM

Título: Ayuda, ya no se que hacer
Publicado por: alexpin 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
Título: Re: Ayuda, ya no se que hacer
Publicado por: cpu2 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 (asm) [Seleccionar]
inc ebx

Un saludo.
Título: Re: Ayuda, ya no se que hacer
Publicado por: alexpin 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
Título: Re: Ayuda, ya no se que hacer
Publicado por: Vaagish en 12 Abril 2013, 07:32 AM
Es Masm eso ? Podrias probar con atodw y dwtoa
Título: Re: Ayuda, ya no se que hacer
Publicado por: alexpin 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,