Sunteți pe pagina 1din 8

ORGANIZACIÓN DE COMPUTADORAS

Integrantes: Santiago Noboa, Jorge Herrería, David Mena

Nivel: 3 Sistemas

Tema: Asembler

1. INTRODUCCIÓN

Los ensambladores son programas que procesan los enunciados del programa origen en
lenguaje ensamblador y los traducen en archivos en lenguaje máquina que son ejecutados
por un microprocesador o un micro controlador.

Los ensambladores permiten que los programas origen se escriban y se editen en una
computadora para generar un código ejecutable en otra computadora. El archivo en
lenguaje objeto ejecutable resultante se carga y se ejecuta en el sistema destino.

Asembler es un código que maneja las funciones del procesador, memoria, mediante líneas
de comando, es el primer lenguaje de programación, base para los developers actuales
como C++, Visual Basic, C# entre otros.

2. DEFINICIÓN BÁSICA DE UN ENSAMBLADOR

El lenguaje simbólico que se utiliza para codificar los programas origen que se procesan
por el ensamblador es llamado lenguaje ensamblador.

Este lenguaje es una colección de símbolos mnemónicos que representan: operaciones


(mnemónicos de instrucciones para la máquina o de directrices para el ensamblador),
nombres simbólicos, operadores y símbolos especiales.

El lenguaje ensamblador proporciona códigos de operación de los mnemónicos para todas


las instrucciones de la máquina contenidas en la lista de instrucciones.

Además, el lenguaje ensamblador contiene mnemónicos directrices, los cuales especifican


acciones auxiliares que se llevan a cabo por el ensamblador.

Estas directrices no siempre son traducidas a lenguaje maquina.

Un programador escribe el programa origen en lenguaje ensamblador utilizando cualquier


editor de textos o procesador de palabras que sea capaz de producir una salida de texto en
ASCII.

Una vez que el código origen ha sido escrito, el archivo origen es ensamblado mediante su
procesamiento a través de algún ensamblador. 1
3. ESTRUCTURA DE UN PROGRAMA
; HOLA.ASM
; Programa clásico de ejemplo. Despliega una leyenda en pantalla.

STACK     SEGMENT STACK                ; Segmento de pila


                    DW     64 DUP (?)             ; Define espacio en la pila
STACK     ENDS
DATA      SEGMENT                             ; Segmento de datos
SALUDO      DB    "Hola mundo!!",13,10,"$" ; Cadena
DATA      ENDS
CODE      SEGMENT                            ; Segmento de Código
          ASSUME CS:CODE, DS:DATA, SS:STACK
INICIO:                                                  ; Punto de entrada al programa
          MOV  AX,DATA                         ; Pone dirección en AX
          MOV  DS,AX                              ; Pone la dirección en los registros
          MOV  DX,OFFSET SALUDO      ; Obtiene dirección del mensaje
          MOV  AH,09H                            ; Función: Visualizar cadena
          INT     21H                                  ; Servicio: Funciones alto nivel DOS
          MOV  AH,4CH                            ; Funcion: Terminar
          INT     21H
CODE      ENDS
          END  INICIO                               ; Marca fin y define INICIO

4. INSTRUCCIONES BÁSICAS

20 - ADD [mem]: Sumar: AX = AX + el contenido de la dirección de memoria

60 - ADDF [mem]: Suma números de 32 bits: En BX y AX queda el resultado de la suma de estos más el
contenido de [mem] y mem+1

11 - AND [dest,orig]: Y lógico, hace un Y lógico entre todos los bits de los dos operandos escribiendo el
resultado en el destino. Los parámetros pueden ser direcciones de memoria o Registros.

04 - CLA: Hace AX = 0
25 - CLC: Limpia el Carry Flag.  C = 0

27 - CMC: Complementa (invierte) el Carry Flag.  Si C = 1 vuelve C = 0 y viceversa.

32 - CMP [mem]: Compara AX con [mem], si AX es mayor, Z=0 N=0, si es igual Z=1 N=0, si es menor Z=0 N=1 

09 - DEC [dest]: Decremento en 1 el destino especificado (Si el destino queda = 0, se vuelve Z = 1)

23 - DIV [mem]: Dividir: AX = AX / el contenido de la dirección de memoria, BX=AX % el contenido de la dir


de memoria (BX = modulo o residuo).

63 - DIVF [mem]: Division: BX y AX = BX y AX / [mem]y mem+1, en CX queda el residuo de la division en


entero de 16 bits

41 - EAP: Escribe en Pantalla el contenido del registro AX


65 - FTOI: Conversión de Real a Entero: Convierte un número Real(32bits) a su equivalente en entero BX y
AX en un entero (16bits), el Resultado queda en AX. Los registros de control cambian de acuerdo al numero
convertido: "Z" si el numero es cero, "N" si el numero es negativo, "O" si el numero real es mayor de 65535

99 – HLT: Terminar Programa (todo programa lleva esta instrucción para indicarle al simulador que el
programa ha terminado su ejecución)

80 - IN [registro, Puerto]: Lleva al Registro el valor retornado por el puerto especificado

08 - INC [dest]: Incrementa en 1 el destino especificado, el parámetro puede ser una dirección de memoria o
un registro.

64 – ITOF: Conversión de Entero a Real: Convierte un número entero (16bits) almacenado en AX al mismo
número pero representado en Real IEEE754(32bits), el Resultado de la conversión queda en BX (bits mas
significativos) y AX. Los registros de control cambian de acuerdo al numero convertido: "Z" si el número es
cero, "N" si el numero es negativo.

35 - JC [mem]: Saltar si el Carry Flag esta activado. Si C = 1, PC = contenido de memoria

31 - JEQ [mem]: Saltar si son iguales Si Z = 1, PC = contenido de la memoria.

34 - JMA [mem]: Saltar si es Mayor. Si Z = 0 y N = 0, PC = contenido de memoria.

33 - JME [mem]: Saltar si es Menor. Si N = 1, PC = contenido de la memoria

30 - JMP [mem]: Salto incondicional.  PC = dirección de memoria donde esta la siguiente instrucción a
ejecutar"

36 - JNC [mem]: Saltar si el Carry Flag no esta activado. Si C = 0, PC = contenido de memoria

39 - JNE [mem]: Saltar si no son iguales. Si Z = 0, PC = contenido de memoria

38 - JNO [mem]: Saltar si el Overflow Flag no esta activado. Si O = 0, PC = contenido de memoria

37 - JO [mem]: Saltar si el Overflow Flag esta Activado

01 - LDA [mem]: Cargue en AX el contenido de la dirección de Memoria especificada. (hay casos donde es
mejor usar MOV si se desea pasar datos sin tener que pasarlos por AX)

50 - LDB [mem]: La instrucción carga en AX el contenido de memoria almacenado en [mem] + BX

55 - LDF [mem]: Carga en BX y AX un número de 32 bits (IEEE) que esta almacenado en la dir [mem] y
mem+1. En BX quedan los digitos más Significativos

40 – LDT: Lee un valor del Teclado y lo lleva al registro AX

29 - LOOP [mem]: Decrementa CX y salta a la Pos de memoria si CX no es cero.

10 - MOV [dest,orig]: Copia el valor almacenado en el origen al destino. El destino y/o origen pueden ser
registros o direcciones de memoria o combinación de estos.

42 – MSG: Muestra un mensaje en pantalla

22 - MUL [mem]: Multiplicar: AX = AX * el contenido de la dirección de memoria. (Si el número resultante


supera su longitud en binario de 16 bits, este resultado se parte almacenando los bits más significativos en el
Registro BX.)

62 - MULF [mem]: Multiplicación: BX y AX = BX y AX * [mem]y mem+1


90 – NOP: Esta operación no hace nada.

12 - NOT [destino]: NO lógico, invierte los bits del operando formando el complemento del primero.

13 - OR [dest,orig]: O inclusive lógico, todo bit activo en cualquiera de los operándoos será activado en el
destino

81 - OUT puerto,registro: Escribe en el puerto especificado, el valor del registro

07 - POP [registro]: Trae de la Pila el último valor llevado por PUSH (indicado por el registro SP) y lo
almacena en el registro especificado.

06 - PUSH [registro]: Envía el valor del registro especificado a la pila

15 - ROL [dest,veces]: Rota los bits a la izquierda las veces especificadas(en decimal), los bits que salen por
la izquierda re-entran por la Derecha. En el Carry Flag queda el último bit rotado.

16 - ROR [dest,veces]: Rota los bits a la derecha las veces especificadas(en decimal), los Bits que salen por la
derecha re-entran por la izquierda. El Carry Flag guarda el último bit rotado.

17 - SHL [dest,veces]: Desplaza los bits a la izquierda el numero de veces especificado(en decimal),
agregando ceros a la derecha, el Carry Flag guarda ultimo bit desplazado.

18 - SHR [dest,veces]: Desplaza los bits a la Derecha el numero de veces especificado(en decimal),
agregando ceros a la izquierda, el Carry Flag guarda ultimo bit desplazado.

02 - STA [mem]: Guarde el contenido de AX en la dirección de Memoria especificada

51 - STB [mem]: guarda el contenido de AX en la dirección [mem] + BX

26 – STC: Pone el Carry Flag.  C = 1

56 - STF [mem]: Guarda en [mem] y mem+1 el contenido de BX y AX

21 - SUB [mem]: Restar: AX = AX - el contenido de la dirección de memoria

61 - SUBF [mem]: Resta el numero de 32 bits: BX y AX = BX y AX - [mem] y mem+1

03 - XAB: Intercambia los valores de los registros AX y BX (Esta instrucción no necesita parámetros.)
14 - XOR [dest,orig]:O exclusivo, realiza un O exclusivo entre los operándos y almacena el resultado en
destino.2

5. EJERCICIOS

El siguiente código es ejecutado en el simulador del procesador, simuproc


SUMA

cla;

ldt;

mov
10,ax;

msg +;

ldt;

add 10;

msg =;

eap ;

hlt;

RESTA

cla;

ldt;

mov B,ax;

msg -;

ldt;

mov C,ax;

mov ax,B;

msg =

sub C;

eap;

hlt;
MULTIPLICACIÓN

cla;

ldt;

mov 9,ax;

msg *;

ldt;

mul 9;

msg =;

eap ;

hlt;

DIVISIÓN

cla;

ldt;

mov B,ax;

msg /;

ldt;

mov C,ax;

mov ax,B;

div C;

msg =;

eap;

hlt;
6. BIBLIOGRAFÍA

Universidad Nacional de la Matanza SimuProc Introducción a la Informática


(MANUAL DE SIMUPROC).

7. LINKOGRAFÍA

http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblador/68HC11.html

http://homepage.mac.com/eravila/asmix862.html

http://www.mitecnologico.com/Main/EstructuraProgramaEnEnsamblador
1
http://proton.ucting.udg.mx/dpto/maestros/mateos/novedades/ensamblador/68HC11.html
2
Universidad Nacional de la Matanza SimuProc Introducción a la Informática (MANUAL DE SIMUPROC)

S-ar putea să vă placă și