Curso de assembler
Curso de ensamblador
------------------------------------------------------------------------------
┌────────┐
│ INDICE │
└────────┘
1.- Sistemas númericos
2.- Operaciones con bytes
2.1.- AND
2.2.- OR
2.3.- XOR
2.4.- NOT
3.- El juego de registros
4.- ¡¡¡ Comenzamos !!!5.- Operacines
5.1.- INC y DEC
5.2.- ADD y SUB
5.3.- NEG y NOT
5.4.- MUL y DIV
6.- Flags
6.1.- Instrucciones de comparación (CMP y TEST)
7.- Las instrucciones de salto
7.1.- Saltos incondicionales
7.2.- Saltos condicionales
7.3.- Bucles
8.- La pila8.1.- La orden CALL
9.- Interrupciones
10.- Resto de órdenes
10.1.- XCHG
10.2.- LEA
10.3.- LDS y LES
10.4.- DELAYs
10.5.- Instrucciones de cadena
10.6.- Datos
10.7.- Acceso a puertos I/O
10.8.- Anulación de interrupciones
11.- Estructura COM
12.-Estructura EXE
13.- Apéndice A: Juego de instrucciones
14.- Apéndice B: Numeración negativa
15.- Agradecimientos y dedicatorias
------------------------------------------------------------------------------
┌──────────────────────┐
│ Sistemas numéricos │
└──────────────────────┘Comencemos por los sistemas de numeración que más utilizaremos al
programar.
El básico va a ser el sistema hexadecimal, aunque debemos de explicar
antes el binario, el sistema de numeración que utiliza el ordenador.
Los números que conocemos están escritos en base 10. Esto significa que
tenemos, desde el 0 hasta el 9, diez símbolos para representar cada cifra.
Es decir, cadacifra irá de 0 a 9, y al superar el valor "9", cambiará a
0 y sumará uno a su cifra de la izquierda: 9+1: 10 .
El sistema binario utiliza tan sólo dos símbolos, el "0" y el "1".
Imaginemos que tenemos el número binario "0". Al sumarle una unidad,
éste número binario cambiará a "1". Sin embargo, si volvemos a añadirle
otra unidad, éste número en formato binario será el "10" (aumenta la
cifra a la izquierda, que era 0, y la anterior toma el valor mínimo ).
Sumemos ahora otra unidad: el aspecto del número será "11" ( tres en
decimal ). Y podríamos seguir:
Binario: 0 ; 1 ; 10 ; 11 ; 100 ; 101 ; 110; 111 ; 1000 ; 1001 ; 1010,...
Decimal: 0 1 2 3 4 5 6 7 8 9 10
Esto nos permite establecer un sistema bastante sencillo deconversión
del binario al decimal;
He aquí los valores siendo n el valor de la cifra:
Cifra menos significativa:
n*2^0 = 1 si n=1 o 0 si n=0
Segunda cifra:
n*2^1 = 2 si n=1 o 0 si n=0
Tercera cifra:
n*2^2 = 4 si n=1 o 0 si n=0
Cuarta cifra:
n*2^3 = 8 si n=1 o 0 si n=0
Etc,...
Y asícontinuaríamos, aumentando el número al que se eleva 2. Traduzcamos
entonces el número binario '10110111'
2^7+ 0 +2^5+2^4+ 0 +2^2+2^1+2^0 = 128 + 0 + 32 + 16 + 4 + 2 + 1 = 183
1 0 1 1 0 1 1 1
De todos modos, ésta transformación la he puesto símplemente para que se
comprenda con más claridad cómo funcionan los números binarios. Es mucho
más aconsejable el uso deuna calculadora científica que permita realizar
conversiones entre decimales, hexadecimales y binarios. Se hace su uso
ya casi imprescindible al programar.
La razón del uso de los números binarios es sencilla. Es lo que entiende
el ordenador, ya que interpreta diferencias de voltaje como activado ( 1 )
o desactivado ( 0 ), aunque no detallaré ésto. Cada byte de información está...
Regístrate para leer el documento completo.