lunes, 13 de septiembre de 2010

Programa de Clase

.MODEL TINY
.DATA
Mascara1 db 11111110b
Mascara2 db 00000001b
Dato1 db 11111111b
Dato2 db 00000000b
.CADE
INICIO:
Mov cx,0000h ;CX=0;
Mov al,dato1 ;al=dato1
And al,mascara1 ;al=al and mascara1
Mov ah,dato2 ;ah=dato2
Or ah,mascara2 ;ah=ah or mascara2
Xor bx,bx ;bx=0
Not cx ;cx=not cx
Mov ax,4c00h
Int 21h
END INICIO
END


OTRO PROGRAMA

.MODEL TINY
.DATA
dato1 dw 10 ; variable de tipo entero
.CODE
INICIO: ; Punto de entrada al programa
mov ax,1 ; AX=1
mov bx,10 ; BX=10
shl ax,1 ; ax=ax*2
mov cx,3 ; contador igual a 3
shl ax,cl ; ax=ax*8
shr bx,1 ; bx=bx/2
mov cx,2 ;
shr bx,cl ; bx=bx/4
shl dato1,1 ; dato1=dato1*2
mov ax,1 ; ax=1
rol ax,1 ; rotar ax 1 vez
mov bx,-10 ; bx=-10
sal bx,1 ; bx=bx*2
mov ax,4c00h ; Terminar
int 21h ; Salir al dos
END INICIO
END


domingo, 5 de septiembre de 2010

Bucles en Lenguaje Ensamblador

CX se usa principalmente como contador en los bucles. Estos son

tan frecuentes que existe una instrucción especial, LOOP, que

comprueba su valor, volviendo al principio del bucle si es

distinto de cero:



MOV CX,10

BUCLE:

instrucciones



LOOP BUCLE



DX es el único registro que puede usarse para acceder a puertos.

Por ejemplo, para escribir 62H en la dirección de puerto 1000H:



MOV AL,62H

MOV DX,1000H

OUT DX,AL



SI se usa como puntero. Su nombre proviene de Source Index, y se

usa principalmente con instrucciones de cadena:



CLD

MOV AX,0

MOV DS,AX

MOV SI,20

LODSB





carga en AX el valor de la posición 20 de memoria. SI se incrementa

en una unidad. En combinación con LOOP permite leer posiciones su-

cesivas de memoria.

DI tambien se usa como puntero. Permite escribir en posiciones

sucesivas de memoria cuando se usa con instrucciones de cadena:



CLD

MOV DX,0

MOV ES,DX

MOV DI,2048

STOSB



escribe el contenido de AL en 0000:2048. Mientras que DI usa a ES

como segmento, SI usa a DS.

BX, DI y SI actuan como punteros relativos a DS, o a ES en el caso

de DI cuando se usa con funciones de cadena. BP actua tambien co-

mo puntero, pero relativo al segmento de pila SS.

SP es entre los registros de uso general el mas específico, ya que

no se recomienda su uso, pues apunta al extremo superior de la pi-

la, y por ello no debe modificarse salvo que se sepa exactamente

que se está haciendo.

mis datos en Ensamblador

Este es codigo a continuacion veremos los resultados: