Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Variables: declaración/definición
Asignación: asignar valores a las variables
Entrada/Salida: mostrar mensajes
mostrar el valor de las variablres
Flujo de control: if-then
bucles
Subprogramas: Definición y Uso
Asignación
x = 42 ;
y = 24;
z = x + y;
En el lenguaje ensamblador realizamos la misma operación pero usamos una instrucción para
denotar el operador de asignación (“=” en Java).
mov x, 42
mov y, 24
add z, x
add z, y
Todas las sentencias anteriores son equivalentes. Cada una realiza exactamente la misma tarea, el
numero binario que representa el codigo Ascii de A es copiado dentro del registro bx.
Introducción a la Programación 8086: 2016
Licenciatura en Análisis de Sistemas Informáticos -Unae
El valor se copia en el lado derecho (byte de orden inferior) del registro. El lado izquierdo
contendrá todos los 0.
Así habríamos podido también escribirlo como:
Puesto que el registro bl representa el byte de orden inferior del registro bx.
Nota: El ensamblador 8086 convierte una constante de caracter es decir un caracter dentro de apóstrofes
(ej. ' A ') a su código ASCII automáticamente. Esto es una característica muy útil y significa que puedes
especificar muchos caracteres sin tener que revisar sus códigos ASCII. Incluyes simplemente el caracter en
apóstrofes. Tendrás que utilizar el código ASCII para los caracteres de control tales como los de retorno de
carry y avance de línea.
Notación:
mov es una de las muchas instrucciones 8086 que utilizaremos. La mayoría de los libros de
lenguaje ensamblador utilizan letras mayúsculas para referir a una instrucción, ej. MOV.
Sin embargo, Ensamblador también reconocerá la instrucción si se escribe en minúsculas o en caso de
mezclar minúsculas y mayúsculas ej. Mov (de hecho, Ensamblador convierte todas las instrucciones a
mayúsculas).
Es mi preferencia personal usar minúsculas cuando escribo programas. Tú puedes escribir tus
programas usando cualquier notación que encuentres conveniente, pero debes ser consistente y mantener un
estilo particular.
mov bx, 2
mov cx, bx
Donde el destino debe ser un registro o la posición de memoria y la fuente puede ser una
constante, otro registro o una posición de memoria.
En el lenguaje ensamblador 8086, el origen y el destino no pueden ambos ser posiciones de
memoria en la misma instrucción.
Más ejemplos:
Las instrucciones siguientes dan lugar registros ax, bx, y cx todos ellos tienen valor 4:
Comentarios
Cualquier cosa que sigue al punto y coma (;) no es tomado en cuenta por Ensamblador. Es
llamado comentario. Los comentarios se utilizan para hacer legibles a tus programas. Los utilizas para
explicar lo que estás haciendo en español.
Se recomienda que utilices comentarios con frecuencia en tus programas, no solamente de modo que otros
puedan entenderlos, también para ti mismo, cuando miras los programas que has escrito previamente.
Cada lenguaje de programación tiene una facilidad para definir comentarios.
Los 8086 proporcionan una variedad de instrucciones aritméticas. Por el momento, consideramos
solamente a algunas de ellas. Para realizar operaciones aritméticas tales como adición o substracción,
utilizas la instrucción apropiada.
En el lenguaje ensamblador puedes realizar solamente una sola operación aritmética a la vez. Esto
significa que si deseas evaluar una expresión por ejemplo:
z=x+y+w–v
Tendrás que utilizar 3 instrucciones del lenguaje ensamblador -una para cada operación aritmética.
Ejemplo:
mov ax, 5 ; carga 5 dentro de ax
add ax, 3 ; suma 3 al contenido de ax
; ax ahora contiene 8
inc ax ; suma 1 a ax
; ax ahora contiene 9
dec ax ; resta 1 de ax
; ax ahora contiene 8
sub ax, 6 ; resta 4 de ax
; ax ahora contiene 2
La instrucción de la adición agrega el operando del origen al operando del destino, dejando el
resultado en el operando del destino. El operando del destino es siempre el primer operando en el lenguaje
Ensamblador 8086 (en el lenguaje ensamblador M68000, el operando del origen es siempre el primer
operando ej. move # 10, x)
Ambigüedad:
Suponga que deseas cargar el valor hexadecimal A (decimal 10) escrito como ah en el registro bl.
Puede ser que seas tentado a escribir:
Pero hemos visto ya que hay un registro llamado ah (el byte de alto orden de ax) y así que la
sentencia anterior no hace lo que pensamos. En su lugar copia el contenido del registro ah en bl. Para
evitar ambigüedad al escribir los números hexadecimales que comienzan con una letra coloquemos como
prefijo el 0.
Así escribimos:
Es una práctica común escribir números decimales con la letra D añadida para distinguirlos de
hexadecimal.
Los ensambladores 8086 toman todos los números como decimales a menos que haya un B
(binario), H (hexadecimal) u O (octal) añadido a ellos.
Nota:
Cuando los datos se mueven a un registro, a los 16 bits(u 8 bits) se le dan un valor. Ensamblador
completará automáticamente con 0’s en el lado izquierdo.
41H es 100 0001 en binario. Esto rellena hacia fuera con nueve 0-bits en el lado izquierdo para llenar todo
los 16-bits del registro.
Ejercicios:
a = b + c –d
z = x + y + w – v +u
5- Reescribe la expresión en 4) pero usando los registros ah, el al, bh, bl , etc para representar las
variables: a, b, c, z, x, y, w, u, v.