miércoles, 30 de enero de 2019

Ensambladores online

Primero veremos como ensamblar en línea en esta liga, y aquí está el código:

; Simple example
; Writes Hello World to the output

JMP start
hello: DB "Magdiel Ruiz!" ; Variable
       DB 0 ; String terminator

start:
MOV C, hello    ; Point to var
MOV D, 232 ; Point to output
CALL print
        HLT             ; Stop execution

print: ; print(C:*from, D:*to)
PUSH A
PUSH B
MOV B, 0
.loop:
MOV A, [C] ; Get char from var
MOV [D], A ; Write to output
INC C
INC D 
CMP B, [C] ; Check if end
JNZ .loop ; jump if not

POP B
POP A
RET

Lenguaje ensamblador en línea 1

Añadir leyenda


Ahora veremos en el segundo lenguaje ensamblador en línea:
Lenguaje ensamblador en línea 2

section .text
global _start       ;must be declared for using gcc
_start:                     ;tell linker entry point
mov edx, len    ;message length
mov ecx, msg    ;message to write
mov ebx, 1     ;file descriptor (stdout)
mov eax, 4     ;system call number (sys_write)
int 0x80        ;call kernel
mov eax, 1     ;system call number (sys_exit)
int 0x80        ;call kernel

section .data

msg db 'Magdiel RUiz',0xa ;our dear string
len equ $ - msg ;length of our dear string


Y por ultimo en el ultimo lenguaje ensamblador en línea:

Lenguaje ensamblador en línea 3

;nasm 2.11.08

section .data
    hello:     db 'Magdiel Ruiz!',10    ; 'Magdiel Ruiz!' plus a linefeed character
    helloLen:  equ $-hello             ; Length of the 'Hello world!' string

section .text
global _start

_start:
mov eax,4            ; The system call for write (sys_write)
mov ebx,1            ; File descriptor 1 - standard output
mov ecx,hello        ; Put the offset of hello in ecx
mov edx,helloLen     ; helloLen is a constant, so we don't need to say
                     ;  mov edx,[helloLen] to get it's actual value
int 80h              ; Call the kernel

mov eax,1            ; The system call for exit (sys_exit)
mov ebx,0            ; Exit with return code of 0 (no error)
int 80h;


No hay comentarios:

Publicar un comentario