viernes, 18 de noviembre de 2011
lunes, 14 de noviembre de 2011
Practica # 2.- Suma de 3 numeros
CÓDIGO:
;Programa Suma de 3 numeros
pila segment para stack "stack"
dw 32 dup(0)
pila ends
datos segment para "datos"
num1 dw 20
num2 dw 30
num3 dw ?
datos ends
codigo segment para "codigo"
empieza proc far
assume cs: codigo, ds:datos, ss:pila
mov ax, datos
mov ds, ax
mov ax, num1
mov ax, num2
mov num3, ax
mov dx, num3
mov ax, 4c00h
int 21h
empieza endp
codigo ends
end empieza
suma3.asm
jueves, 13 de octubre de 2011
sábado, 1 de octubre de 2011
PRACTICA # 6: ¿Como compilar un archivo de extension . ASM en Linux . . ?
ANTES QUE OTRA COSA... TENER INSTALADO EL PROGRAMA "NASM" DE LINUX.
Programa Principal "HolaMundo.asm" :
global _start
section .data
hello db "Hello, World!", 10
length equ $-hello
section .text
_start:
mov eax, 4 ; write to file
mov ebx, 1 ; STDOUT handle
mov ecx, hello ; our message
mov edx, length ; size of message
int 80h ; execute the syscall
xor ebx, ebx ; send 0 as 'exit code'
mov eax, 1 ; terminate process
int 80h ; execute the syscall
global _start
section .data
hello db "Hello, World!", 10
length equ $-hello
section .text
_start:
mov eax, 4 ; write to file
mov ebx, 1 ; STDOUT handle
mov ecx, hello ; our message
mov edx, length ; size of message
int 80h ; execute the syscall
xor ebx, ebx ; send 0 as 'exit code'
mov eax, 1 ; terminate process
int 80h ; execute the syscall
La forma de llamarlo en la Terminal es la siguiente:
- nasm -f elf holamundo.asm
- ld -o holamundo holamundo.o
- ./holamundo
Familia Intel 80x86
El primer microprocesador que apareció en el mercado fue el 4004 de INTEL, por encargo de la compañia de calculadoras Busicom, a finales de 1970. Este procesador tenia 2,250 transistores, trabajaba con datos de cuatro bits y realizaba cerca de 60,000 operaciones por segundo. En abril de 1971 INTEL introdujo el 8008, el cual trabajaba con datos de 8 bits. Y dos años mas tarde introdujo el 8080, dando inicio a la familia de procesadores de INTEL 80x86.
La familia de microprocesadores de INTEL 80x86 tiene su predecesor directo en el 8080, que es un procesador de 8 bits y con 10 lineas de direcciones, y que utiliza modos de direccionamiento directos, es decir, la dirección que genera es la dirección física de memoria.
La familia de microprocesadores de INTEL 80x86 tiene su predecesor directo en el 8080, que es un procesador de 8 bits y con 10 lineas de direcciones, y que utiliza modos de direccionamiento directos, es decir, la dirección que genera es la dirección física de memoria.
|
Familia Motorola 68000
El Motorola 68000 es un microprocesador diseñado en los años 80, pero cuya potencia y características fueron determinantes para que se usara en ordenadores como los Amiga, los Atari, los Sun, las familias de Macintosh, y en consolas de videojuegos como la Neo-Geo y la Mega-Drive. Actualmente este micro está completamente anticuado, pero su uso sigue vigente en sistemas empotrados, como por ejemplo algunas PDAs.El 68000 dió origen a toda una familia de microprocesadores: 68010, 68020… que mantenían la compatibilidad introduciendo progresivas mejoras. En este documento no se van a tener en cuenta estas diferencias y sólo se explicarán los fundamentos de la famila.
Características principales
Características principales
- Lo primero que cabe destacar es que sus registros son de 32 bits, que para la epoca era descomunal comparado con los 8 bits con los que trabajaban los procesadores de entonces.
- Su otra característica principal es que está preparado para multitarea, ya que posee dos modos de ejecucion, el modo usuario y el modo supervisor. Este último esta destinado para programar las rutinas del nucleo de un sistema operativo, teniendo los dos modos de ejecución espacios de pila disjuntos.
Estos son los registros presentes en el motorola 68000:
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 |
A0 | A1 | A2 | A3 | A4 | A5 | A6 | SSP |
PC | SR | USP |
- D0-D7: Registros de datos.
- A0-A6: Registros de direcciones.
- SSP, USP: Son los punteros de pila del modo supervisor y del modo usuario respectivamente. Nos referimos a ellos directamente con A7, seleccionando el micro cual es el que corresponde segun el estado en el que nos encontremos. Los punteros de pila apuntan al elemento que está en el tope de la pila, y ésta crece hacia abajo, es decir que para introducir un elemento en la pila hay primero que decrementar el puntero de pila correspondiente y luego poner el dato en la posición a donde apunta.
- PC: Contador de programa, es un puntero a la posición de la memoria con la siguiente instrución a ejecutar.
- SR: Registro de estado, su composicion por bits es la siguiente:
T | S | I2 | I1 | I0 | X | N | Z | V | C |
Familia RS/6000
(RISC System/6000) El nombre de la generación anterior y original de la familia IBM System p de estaciones de trabajo científicas y los servidores que se fusionaron en la marca Power Systems. La línea RS/6000 fue el primero en utilizar basados en RISC de IBM arquitectura de los chips POWER, y tanto el poder como CPU PowerPC se han utilizado en varios modelos. AIX (Unix) fue el sistema RS/6000 's operativo principal. El RS/6000 originalmente apoyaron el bus Micro Channel, pero más tarde pasó a PCI. Ver Sistemas de poder y el poder.
INTEL i3, i5 e i7
¿Cual es la diferencia entre una y otra?
A mi punto de vista, en un S.O lleva por nombre kernell..pero en el caso de los procesadores, es muy ilogico pensar que 8 nucleos, puedan manejan 8 sistemas operativos al mismo tiempo . . . Y otra cosa seria que ningun procesasor sea capas de correr a dicha velocidad. . . ya que su uso se basa principalmente al rendimiento del procesador y a su ambiente grafico..!!
PRACTICA # 4: Como guardar un archivo en lenguaje ensamblador
-'h' (para obtener la longitud de un programa).
-'n' (nos permite poner un nombre al programa).
-'rcx' (nos permite cambiar el contenido del registro CX al valor que obtuvimos del tamaño del archivo con 'h'.
-'l' (carga el nombre del archivo).
-'u' (se utiliza para verificar que el programa se cargo en memoria, lo que hace es desamblar el codigo y mostrarlo ya desamblado).
DEBUG simpre carga los programa en memoria en la direccion 100H, a menos que se le indique alguna otra.
viernes, 23 de septiembre de 2011
PRACTICA # 1: DEBUG
- AX = Acumulador
- BX = Registro Base
- CX = Registro Contador
- DX = Registro de Datos
- DS = Registro Segmento de Datos
- ES = Registro Segemento Extra
- SS = Registro del Segmento Pila
- CS = Registro del Segmento de Codigo
- BP = Registro de Apuntadores
- SI = Registro Indice Fuente
- DI = Registro Indice Destino
- SP = Registro del Apuntador de la Pila
- ID = Registro del Apuntador de Siguiente Instruccion
- F = Registro de Bandera
-a0100 (ENTER)
13A0:0100 mov ax,0002; Coloca el valor 0002 en el registro ax.
13A0:0103 mov bx,0004; Coloca el valor 0004 en el registro bx.
13A0:0106 add ax,bx; Le adiciona el contenido de ax al contenido bx.
13A0:0108 int20; Provoca la terminacion del programa.
13A0:010A
-g
Program terminated normally
-r . . .
Suscribirse a:
Entradas (Atom)