Progra

Solo disponible en BuenasTareas
  • Páginas : 6 (1275 palabras )
  • Descarga(s) : 0
  • Publicado : 16 de marzo de 2011
Leer documento completo
Vista previa del texto
INSTITUTO TECNOLOGICO SUPERIOR DE INFORMATICA DE IBARRA

ORGANIZACIÓN DE COMPUTADORAS
LENGUAJE ENSAMBLADOR

El ensamblador, es un lenguaje de programación de bajo nivel muy apegado a la máquina. 
Hoy en dia, algunas empresas de antivirus y videojuegos, siguen programando pequeñas rutinas en ensamblador por su rapidez y apegamiento al computador. Esto es debido, a que un programa enensamblador, es ejecutado casi directamente por el computador, ya que hablan casi "el mismo idioma". 

Programar en ensamblador, es un oficio minucioso de artesanía... sería como el carpintero de lapiz en oreja que va al bosque, tala el árbol, lo lleva al taller, lo pule, lima, da forma y saca el mueble. 

Conocer algunos conceptos básicos del lenguaje ensamblador creo que es esencial para cualquierinformático... acabado este pequeño curso, sabrán un poco más, y tendrán otra visión de cómo funciona internamente un lenguaje de programación. 

 

 

 

 

Si todo sale bien, tendremos en INICIO > TODOS LOS PROGRAMAS > instalado el BORLAND TASM. 

* NUESTRO PRIMER PROGRAMA 

Para crear nuestro primer programa, emplearemos el bloc de notas.

- Abrimos el bloc de notas y tecleamosel siguiente código: 

.model tiny 
.stack 
.data 
Message db "hola$" 
.code 

start: 
    mov dx,OFFSET Message 
    mov ax, SEG Message 
    mov ds,ax 
    mov ah,9 
    int 21h 

    mov ax,4C00h 
    int 21h 
END start 

 

A continuación, hacemos clic en ARCHIVO > GUARDAR COMO y vamos a la ruta siguiente C:TASMBIN y lo guardamos como nombre.asm (en mi caso prc1.asm) 

 Lo que haremos siempre que vayamos a general el .exe de algún código .asm sera lo siguiente: 

Ejercicio de suma:

CODIGOS DE RESTA, MULTIPLICACION Y DIVISION
Data segment
label1 DB "Selecciona una operacion $"
label2 DB "1.- Suma $"
label3 DB "2.- Resta $"
label4 DB "3.- Multiplicacion $"
label5 DB "4.- Division $"
label6 DB "5.- Salir $"
label7 DB"Ingrese una opcion $"
label8 DB "Ingrese numero $"
label9 DB "El resultado es $"
label10 DB "error no divisible entre 0 $"
label11 DB "`cociente $"
label12 DB "residuo $"
resultado DB 0
cociente DB 0
residuo DB 0
numero DB 0
signox DB 0
r2 DB ?
ac DB 0

Data ends

pila segment stackDW 256 DUP (?)

pila ends

code segment

menu proc far

assume cs:code,ds:data,ss:pila
push ds
xor ax,ax
push ax
mov ax,data
mov ds,ax
xor dx,dx

;interlineado
mov ah,02h
mov dl,10
int 21h
mov ah,02h
mov dl,13
int 21h
;interlineado
mov ah,02h
mov dl,10
int 21h
mov ah,02h
movdl,13
int 21h
;imprime seleccion de menu
mov ah,09h
mov dx,offset label1
int 21h

;interlineado
mov ah,02h
mov dl,10
int 21h
mov ah,02h
mov dl,13
int 21h

mov ah,09h
mov dx,offset label2
int 21h

mov ah,02h
mov dl,10
int 21h
mov ah,02h
mov dl,13
int 21h

mov ah,09hmov dx,offset label3
int 21h

mov ah,02h
mov dl,10
int 21h
mov ah,02h
mov dl,13
int 21h

mov ah,09h
mov dx,offset label4
int 21h

mov ah,02h
mov dl,10
int 21h
mov ah,02h
mov dl,13
int 21h

mov ah,09h
mov dx,offset label5
int 21h

mov ah,02h
mov dl,10
int 21hmov ah,02h
mov dl,13
int 21h

mov ah,09h
mov dx,offset label6
int 21h

mov ah,02h
mov dl,10
int 21h
mov ah,02h
mov dl,13
int 21h

mov ah,09h
mov dx,offset label7
int 21h

;lee teclado
mov ah,01h
int 21h

;ajunstando el teclado
xor ah,ah
sub al,30h
mov cx,2...
tracking img