Assembler

silexcorp's picture

Assembler (ASM) - Ensamblador

     El lenguaje ensamblador o asm es un lenguaje de programación de bajo nivel, gracias al uso de mnemónicos el lenguaje ensablador representa o identifica instrucciones básicas de una computadora o código objeto, las cuales son ejecutadas por un microprocesador.

      Para comprender mejor del tema, es necesario tener nociones sobre los siguientes temas:

  • Sistemas de numeración
  • Arquitectura de una computadora
  • Diagramas de flujo y algún otro lenguaje de programación

Sistemas de numeración:

     La memoria en una computadora esta compuesta por números, y estos numeros no son almacenados en decimal (base 10) sino estos los almacenan en binario (base 2).

  • Binario: los números con base 2 están compuestos de 2 posibles dígitos (0 o 1)
  • Decimal: los números con base 10 están compuestos de 10 posibles dígitos (0-9). Cada dígito de un número tiene asociada una potencia de 10, basada en su posición de izquierda a derecha va aumentando. Ejemplo: 234 = 2×102+ 3×101+ 4×100
  • Octal: los números con base 8 están compuestos de 8 posibles dígitos (0-7)
  • Hexadecimal: los números con base 16 están compuestos de 16 posibles dígitos (0-9 y A-F)

Ejemplo:

  • //Mostrar mensaje
  • //Ingresar numero
  • //Comparar, si es igual finaliza de lo contrario regresa al inicio

 

name "test"

.data
    ; Define and declare variable, 0Dh,0Ah == 13,10                
    key db 0Dh,0Ah,"Cuanto es 7+2?...$"  
    new db 0Dh,0Ah,"Muy cerca, inteta de nuevo...$",0Dh,0Ah
    don db 0Dh,0Ah,"Genial, buen trabajo...$"  
    spa db 0Dh,0Ah  
    num db 0

.stack
    dw   128  dup(0)

.code
proc main:
    mov ax, data   
    mov ds, ax
    mov es, ax     ; Copy data segment and extra segment   
    lea dx, key   
    call msg        ; Show msg   
    jmp ent
ini:                   
    lea dx, new   ; Show msg
    call msg

ent:   
    mov ah, 1       ; Wait for any number    
    int 21h
    mov dl, al
    mov ah, 2h
    int 21h
    cmp al, '9'   ;compare
    je well     ;jump to 'well' which mean both are equals
    jmp ini   ; jump to ini
well:  
    lea dx, don
    call msg
    call exit
endp main

proc msg   ;procediemiento
    ;lea dx, data   ; Same like: mov dx, offset pkey
    mov ah, 9      ; Show msg: 'key'
    int 21h        ; Output string at ds:dx
    ret               ; Return
endp msg

proc exit  ;procediemiento
    mov ax, 4c00h ; exit to operating system.
    int 21h
endp exit

 

Referencia bibliográfica:

Ejecución del ejemplo

 

Material de ayuda: tablas de códigos, gracias a G. Jegerlehner.

 

Code: 
<java>
 
System.out.print("Eso es todo amigos xd");
 
</java>

Comments