Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - alexpin

#1
ASM / Re: Ayuda, ya no se que hacer
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
#2
ASM / Re: Ayuda, ya no se que hacer
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
#3
ASM / Ayuda, ya no se que hacer
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