Mostrando resultados del 1 al 7 de 7

Tema: [G] Quieres empezar en ASM? (Entra aqui! (FAQ)

  1. #1
    Gran Colaborador
    Fecha de Ingreso
    abril-2006
    Ubicación
    Panama, Panama
    Mensajes
    1.097
    Gracias obtenidos: 82

    Predeterminado [G] Quieres empezar en ASM? (Entra aqui! (FAQ)

    FAQ acerka del ASM by Shadow

    P:¿Que es "ASM"?
    R: Es la abreviatura de lenguaje "assembler" o "ensamblador" en español.

    P:¿Que es entonces el lenguaje "ensamblador"?
    R: “Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente señales electrónicas binarias. Dar una instrucción a un microprocesador supone en realidad enviar series de unos y ceros espaciadas en el tiempo de una forma determinada.
    Esta secuencia de señales se denomina código máquina. El código representa normalmente datos y números e instrucciones para manipularlos.
    Un modo más fácil de comprender el código máquina es dando a cada instrucción un mnemónico, como por ejemplo CMP, ADD o JMP.
    Esta abstracción da como resultado el ensamblador, un lenguaje de muy bajo nivel que es específico de cada microprocesador.”

    P:¿Que puedo programar en este lenguaje?
    R:Simple, todo lo que puedes ver digitalizado por un monitor.

    P:¿Que necesito para aprender a programar en ASM?
    Rescartando lo obvio, un cerebro con IQ de mas 81, ser incha del RMFC y ganas de aprender

    P:¿Tiene que ver ASM que esos 0s y 1s de la ciencia ficcion de los "juackers"?
    R: Dejame explicarlo asi:
    En la pregunta #2 vimos que "los microprocesadores procesan exclusivamente señales electrónicas binarias". Veamos la instruccion "10010000":
    Binario (lo que procesa el micro): 10010000
    Hexadecimal (representacion de la instruccion en otro sistema de numeracion): 90
    Mnemonico (representacion o "comando" de ensamblador): NOP
    Uso: No hace nada, es una instruccion nula.

    P:¿Como puedo practicar o hacer programas en ASM?
    R:Puedes bajar un compilador. Entre los mas comunes estan: TASM (Turbo Asemmbler de Borland), MASM (Macro Assembler de Microsoft) y el RadASM.

    P:¿Como se ve un programa en ASM para compilar?
    R:Mirandolo (XD).
    En 16 bits:
    .MODEL SMALL ; Determinamos el modelo de memoria
    .STACK ; Definimos el área de pila
    .DATA
    MENS DB "HOLA MUNDO!.$" ; Especificamos la cadena de texto a mostrar
    .CODE ; Inicio del código
    INI: ; Etiqueta de inicio
    MOV AX, @DATA ; Permite tener acceso a los datos
    MOV DS,AX ; a través de el registro DS
    MOV DX,OFFSET MENS ; Prepara para desplegar el mensaje
    MOV AH,9 ; Llama al servicio 9
    INT 21H ; de la int 21h para desplegar el texto
    MOV AH,4CH ; Llama al servicio 4Ch
    INT 21H ; de la int 21h para terminar
    END INI ; Cierra la etiqueta de inicio

    En 32 bits (para MASM):
    .486
    .model flat, stdcall
    option casemap :none
    include \masm32\include\windows.inc
    include \masm32\include\masm32.inc
    include \masm32\include\gdi32.inc
    include \masm32\include\user32.inc
    include \masm32\include\kernel32.inc
    includelib \masm32\lib\masm32.lib
    includelib \masm32\lib\gdi32.lib
    includelib \masm32\lib\user32.lib
    includelib \masm32\lib\kernel32.lib
    print MACRO arg1:REQ,varname:VARARG
    invoke StdOut,reparg(arg1)
    IFNB <varname>
    invoke StdOut,chr$(varname)
    ENDIF
    ENDM
    .data
    v0 dd 0
    v1 dd 1
    v2 dd 2
    v3 dd 3
    v4 dd 4
    v5 dd 5
    v6 dd 6
    ary dd v0,v1,v2,v3,v4
    dd v5,v6
    .code
    start:
    call main
    exit
    main proc
    LOCAL cnt WORD
    push esi
    push edi
    mov cnt, 6
    mov esi, ary
    lp:
    mov edi, [esi+2]
    print str$(esi)
    print chr$(" = Direccion en memoria",13,10)
    print str$(edi)
    print chr$(" = contenido",13,10,13,10)
    add esi, 4
    sub cnt, 1
    jnz lp
    pop edi
    pop esi
    ret
    main endp
    end start

    P:¿Porque la diferencia?
    R:Un micro (microprocesador) de 16 bits soporta eso mismo, 16 bits de informacion por cada operacion que realize; uno de 32 soporta, 32 bits.

    P:¿Que otras diferencias hay entre estos 2?
    R: Programar para 32 bits nos permite usar o "llamar" APIs de librerias externas como "kernel32.dll", no permite manejar la interrupciones como lo hace un programa para 16 bits; para 32 bits, los registros ("variables"; espacios de memoria reservados para guardar informacion especifica en el procesador) al aumentar su tamaño, cambian de sintaxis (PE.: de "ax" a "eax") aunque tambien se pueden seguir usando los registros de 16 bits; entre otras diferencias.

    P:En la pregunta #5 mencionaste otros representaciones de los mnemonicos (binario y hexadecimal). ¿Tengo que saber estas conversiones o conocer estos sistemas de numeracion?.
    R:Tecnicamente, no. Pero, en la practica si (por lo menos tienes que saber convertir hexadecimal a decimal)

    P:¿Que ventajas tiene la programacion en ASM?
    R:La principal ventaja es que permite crear programas muy rápidos y livianos (Un programa hecho en C++ que imprima la cadena "Hola Mundo!." pesa unos 15.663 bytes, cuando uno hecho en ASM, que realize lo mismo y compilado con TASM, pesa 541 bytes, asiq estariamos hablando de
    unas 29 veces mas pequeño).

    P:¿Y desventajas?
    R:A menudo es dificil de aprender.

    P:¿Porque?
    R:Los programadores de lenguajes de alto nivel no estan acostumbrados a la abstraccion, a la "limitacion" de funciones del ASM y a trabajar hablando direcctamente con el procesador, esto quiere decir que si la persona que intenta aprender ASM, no conoce el funcionamiento de un ordenador a nivel de memoria, procesador y hardware en general, le sera mucho mas dificil que al que ya conoce esto mas a fondo.

    P:¿Esto quiere decir que tengo que tener algun tipo de conocimientos sobre este tema (funcionamiento del ordenador)?
    R:Si.

    P:¿De que me sirve saber ASM en nuestros dias? Por algo se inventaron los lenguajes de alto nivel.
    R:Como dije, la principal ventaja es que permite crear programas muy rápidos y livianos. Otro de los usos del ASM en nuestro dias es la llamada "Ingenieria Inversa" o "Cracking".

    P:¿"Ingenieria Inversa"?
    R:"Arte del destripado"; rama de "hacking" o "censurado informatica" que se encarga de romper cualquier tipo de seguridad que posea un programa comercial usando metodos de desensamblado y reconstruccion, comprometiendo asi cualquier tipo de cifrado o proteccion anti-"crackeo", tambien llamado por los coders: "debug", para poder disfrutar del limite de sus funciones o simplemente para modificar a gusto su funcionamiento.

    P:¿Ahora, que hago?
    R:Busca un tuto basico o de introduccion que sientas que entiendas sobre este lenguaje y empieza a leer y si tienes alguna duda, ES FATAL que te quedes con ella, PREGUNTA, PREGUNTA, PREGUNTA, APRENDE, APRENDE, APRENDE, esa es la ley... Luego transmite lo que sabes!


    Espero que les sirva de algo en su introduccion en este mundo!...

    Saludos!

    [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]
    Linux Registered User #473016

  2. El Siguiente Usuario Agradeció a lShadowl Por Este Mensaje:

    sokoleonardo (30-ago-2013)

  3. #2
    Gran Colaborador
    Fecha de Ingreso
    abril-2006
    Ubicación
    Panama, Panama
    Mensajes
    1.097
    Gracias obtenidos: 82

    Predeterminado Quiero aprender asm, pero soy usuario de linux...

    P. Quiero aprender asm, pero soy usuario de linux ¿hay diferencias en cuanto a sintaxis de las operaciones con DOS/Windows?
    R. Si la hay, linux utiliza mayormente sintaxis AT&T, aunque tambien puedes programar con la sintaxis de intel en linux, dependiendo de que compilador uses.

    con NASM en linux:
    Código:
    global _start
    
    section .data
    	hola	db	"Hola , mundo!", 11
    	length	equ	$-hola
    
    section .text
    
    _start:
    	mov eax, 4		; escribe en el archivo
    	mov ebx, 1		; manejador de STDOUT 
    	mov ecx, hola	    ; el mensaje
    	mov edx, length	; tamanio del mensaje
    	int 80h			; ejecuta la llamada al sistema
    
    	xor ebx, ebx		; envia 0 como codigo de salida
    	mov eax, 1		; termina proceso
    	int 80h			; ejecuta la llamada al sistema
    --> [p3ll3]

    y con la sintaxis de AT&T:

    Código:
    .data
           msg: .string "Hola mundo!\n"
           len = . - msg
    .text
           .globl _ini
    _ini:
           movl $4, %eax
           movl $1, %ebx
           movl $msg, %ecx
           movl $len, %edx
           int $0x80
           
           movl $1, %eax
           xor %ebx, %ebx
           int $0x80
    P. ¿Donde puedo encontrar compiladores para asm en linux?
    R. [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]

    P. ¿Donde puedo encontrar tutoriales para aprender asm en linux?
    R. [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]

    Saludos!

    [SOLO LOS USUARIOS REGISTRADOS PUEDEN VER LOS ENLACES. ]
    Linux Registered User #473016

  4. #3
    Avantlord
    Guest

    Predeterminado Re: [G] Quieres empezar en ASM? (Entra aqui! (FAQ)

    uuuuu q poder..... diculpa y una guia avanzada de hardware para empezar por ver como es q se comunican los dispositivos entre si XD

  5. #4
    Recien llegado
    Fecha de Ingreso
    noviembre-2008
    Mensajes
    8
    Gracias obtenidos: 0

    Predeterminado Re: [G] Quieres empezar en ASM? (Entra aqui! (FAQ)

    hola que tal pues he leido y mi pregunta es que me han surgido dudas y es en la parte de que necesito es ser un "incha de RMFC? que significa

    otra cosa podrias postear links de mas foros fuentes etc seria de gran ayuda bueno espero tu respuesta hasta luego

  6. #5
    jersta
    Guest

    Predeterminado Re: [G] Quieres empezar en ASM? (Entra aqui! (FAQ)

    por lo visto asm no solo se trata d manosear bites
    sino d un profundo conocimiento d hardware...


    m parece k ensamblador lo dejo para mas adelante


    mientras sigo con el metodo rit y jugando con ollydbg



    buena info!!!

  7. #6
    Miembro
    Fecha de Ingreso
    agosto-2008
    Mensajes
    60
    Gracias obtenidos: 1

    Predeterminado Re: [G] Quieres empezar en ASM? (Entra aqui! (FAQ)

    Huy k loko!
    Yo entre aqui por que quiero aprender Ingenieria Inversa, y pues leyendo descubri que para eso tienes que saber programar en ASM, pero veo que no esta tan facil como yo pensaba...

    No importa, estoy seguro que antes de que acabe este a&#241;o por lo menos voy a tratar de aprender lo basico en assembler, no me importa quedarme frente a la compu unas 10 horas diarias, ni sacrificar algunas fiestas... YO QUIERO APRENDER

    Gracias por el FAQ y pues a leer y practicar que el dia es largo!
    ;D
    <br />
    I don&#39;t use Windows anymore!<br />

  8. #7
    Recien llegado
    Fecha de Ingreso
    febrero-2012
    Mensajes
    3
    Gracias obtenidos: 1

    Predeterminado Respuesta: [G] Quieres empezar en ASM? (Entra aqui! (FAQ)

    Gracias por aportar que buen orientador es.

Temas Similares

  1. Quieres iniciarte en Ingenieria Inversa? Entra aqui! (FAQ)
    By lShadowl in forum Ingenieria Inversa
    Respuestas: 47
    Último mensaje: 30-jul-2012, 17:45
  2. Si buscas seriales entra aqui
    By MicroAttacker in forum Software
    Respuestas: 0
    Último mensaje: 12-mar-2009, 16:36
  3. quieres tener una firma entra aki!
    By sinshow in forum Diseño Grafico
    Respuestas: 4
    Último mensaje: 22-feb-2009, 21:09
  4. ¿Quieres una cuenta de Steam? ¡Entra ya!
    By MicroAttacker in forum Troyanos y virus
    Respuestas: 11
    Último mensaje: 17-feb-2009, 21:42
  5. Si no te andan los juegos del MSN entr aqu!
    By chatero_cheva in forum Mensajeria y Redes Sociales
    Respuestas: 0
    Último mensaje: 06-may-2004, 10:59

Normas de Publicación

  • No puedes crear nuevos temas
  • No puedes responder mensajes
  • No puedes subir archivos adjuntos
  • No puedes editar tus mensajes
  •