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 conocimiento sólido sobre los siguientes temas:

  • Sistemas de numeración
  • Arquitectura de una computadora
  • Lenguajes a bajo nivel

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
 
  • Hexadecimal
Los números con base 8 están compuestos de 8 posibles dígitos (0-7)
  • Octal
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
       
    ; Show msg       
    lea dx, key
    call msg  
    jmp ent

ini:                     
    ; Show msg
    lea dx, new
    call msg

ent:      
    
    ; Wait for any number    
    mov ah, 1
    int 21h
    
    mov dl, al
    mov ah, 2h
    int 21h
    
    ;compare
    cmp al, '9'
    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: mov dx, offset pkey
    mov ah, 9      ; Show msg: 'key'
    int 21h        ; Output string at ds:dx
    ret
endp msg

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

 

https://es.wikipedia.org/wiki/Lenguaje_ensamblador

http://www.jegerlehner.ch

https://pacman128.github.io/static/pcasm-book-spanish.pdf

http://www.ittux.edu.mx/sites/default/files/MICROCOMPUTADORAS_AL_DETALLE...

 

Ejecución del ejemplo

 

 

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

 

Code: 
<java>
 
 
</java>

Comments