Está en la página 1de 8

CÓDIGOS EN LENGUAJE ENSAMBLADOR.

JHON MANUEL SOTO


(Tutor)

KEVIN RODRIGUEZ OBEDIENTE


(Estudiante)

ABRIL 2021
UNIVERSIDAD NACIONAL ABIERTA Y A DISTANCIA
ESCUELA DE CIENCIAS BÁSICAS, TECNOLOGÍA E INGENIERÍA
INGENIERÍA DE SISTEMAS
ETIQUETAS
SALTOS DE DIRECCION
es un identificador que, en ensamblador, es una cadena de
Salto corto: Esta limitado a una distancia
letras y números que comienzan por una letra.
de un byte, de -128 a 127 bytes.

Salto cercano: Restringido a una longitud Etiqueta de código: Se utiliza para localizar una posición de la
de una palabra. memoria dentro del código del programa.
Etiqueta de datos: Cuando se utiliza de cabecera para una
Salto lejano: Restringido al tamaño de sucesión de datos.
un archivo EXE, y el salto se efectúa en Etiqueta cercana: Se define para ser accedida por datos
programas exe de varios segmentos. cercanos.
Etiqueta lejana: Cuando saltaremos a ella de forma lejana.
SALTOS INCONDICIONALES

Se designan mediante el nemotécnico JMP, se


ejecuta invariablemente, añade la distancia del salto
al registro IP.

Salto corto: es de 2 bytes, “EB” y otro byte de la


distancia del salto.
Salto cercano: es de 3 bytes, “E9” 2 bytes de
distancia de salto.
Salto lejano: es de 5 bytes, “EA” y 4 bytes 2 de
distancia de salto y 2 mas segmento donde se salta.
SALTOS CONDICIONALES INSTRUCCIONES DE TESTEO
Reciben ese nombre porque • Bandera de acarreo (CF)
saltamos a algún lugar si se cumple • Bandera de paridad (PF)
cierta condición y si no continuamos • Bandera auxiliar (AF)
en la siguiente línea, también se • Bandera de cero (ZF)
pueden generar bucles como “LOOP
• Bandera de signo (SF)
etiqueta”.
• Bandera de trazado (TF)
Los saltos condicionales son cortos,
• Bandera de interrupciones (IF)
con su limitación inherente de -128d
• Bandea de dirección (DF)
y + 127d de longitud
• Bandera de desbordamiento (OF)
BUCLES DECISIONES
Se podrían denominar saltos condicionales, debido Las expresiones que admite MASM son las mismas
a que buscan una condición y en función de ella se que el lenguaje c:
repite el ciclo.

Realizado por: Kevin Rodríguez Obediente


El estudiante desarrolla un código en lenguaje ensamblador que
permita leer un número de un digito por teclado y determinar si
el número es par, impar o cero.

.model small
.stack

.data

msg1 db 10,13,7, 'Ingrese un numero (0-9)','$'


msg2 db 10,13,7, 'El numero ingresado es par','$'
msg3 db 10,13,7, 'El numero ingresado es impar','$'
msg4 db 10,13,7, 'El numero ingresado es cero','$'
num db ?
r db 0

.code

main:

mov ax, seg @data


mov ds, ax

mov ah, 09h


lea dx, msg1
int 21h

mov ah, 01h


int 21h
sub al,30h
mov num, al

cmp num,0

jz cero

xor ax,ax
mov bl,2
mov al,num
div bl
mov r,ah

cmp r,0
jz par
jnz impar

.exit

par:
mov ah, 09h
lea dx, msg2
int 21h
.exit

impar:
mov ah, 09h
lea dx, msg3
int 21h
.exit

cero:
mov ah, 09h
lea dx, msg4
int 21h
.exit

end main
El estudiante desarrolla un código en lenguaje ensamblador que
permita realizar una multiplicación de dos números a través de
sumas sucesivas y una potencia a través de multiplicaciones
sucesivas (para ello debe utilizar instrucciones tipo bucle). Al
inicio del programa se deben capturar por teclado dos números
de un digito cada uno.

.model small
.stack

.data

cont db 0
r1 db 0
r2 db 1
n1 db 0
n2 db 0
msg0 db 10,13,7, 'El resultado de la multiplicacion es: ','$'
msg1 db 10,13,8, 'El resultado de la potencia es: ','$'
msg2 db 10,13,9, 'Ingrese un numero (0-9)','$'

.code

main:

mov ax, seg @data


mov ds, ax

mov ah, 09h


lea dx, msg2
int 21h

mov ah, 01h


int 21h
sub al, 30h
mov n1,al
int 21h

mov ah, 09h


lea dx, msg2
int 21h

mov ah, 01h


int 21h
sub al, 30h
mov n2,al
int 21h

mov cl,n2

ciclo:

je salir

; multiplicacion
mov al,r1
add al,n1
mov r1,al

; potencia
mov al,r2
mov bl,n1
mul bl
mov r2,al

loop ciclo

salir:

; imprimir multiplicacion
mov ah, 09h
lea dx, msg0
int 21h

mov al,r1
aam
mov bx,ax
mov ah,02h
mov dl,bh
add dl,30h
int 21h

mov ah,02h
mov dl,bl
add dl,30h
int 21h
;imprimir potencia

mov ah, 09h


lea dx, msg1
int 21h

mov al,r2
aam
mov bx,ax
mov ah,02h
mov dl,bh
add dl,30h
int 21h

mov ah,02h
mov dl,bl
add dl,30h
int 21h

.exit

end main
CONCLUSION 1
Al finalizar la actividad se han profundizado los conocimientos acerca del procesador 8086
y el funcionamiento de los diferentes tipos de saltos, dejando claro el uso de cada uno de
estos, además de recalcar la importancia de la existencia de las banderas, las cuales
nuevamente se hacen presentes en las instrucciones de testeo, todo lo anterior resumido a
través de una infografía.

CONCLUSION 2
Durante el desarrollo de esta actividad se realiza la aplicación de los conocimientos
obtenidos del estudio del procesador 8086 y su funcionamiento a través de ejercicios en el
código del lenguaje ensamblador, simulando la ejecución de tareas como operaciones
aritméticas básicas, los que permitió una vista cercana del comportamiento de banderas,
saltos condicionales, incondicionales y bucles.

También podría gustarte