Vous êtes sur la page 1sur 26

Desde el 16 de febrero del

UNIDAD 1. Reporte.
Programas de la
unidad 1: sumas,
mostrar mensajes en
pantalla, pila y ms
Lenguajes de Interfaz
#12
1 p.m.
Temas
1. Programa 1: sumar 2 valores De cada programa se presente cdigo fuente
(listo para ser copiado y pegado, ya que est
2. Programa 2: mensaje en pantalla sin formato) y capturas de pantalla del
programa funcionando.
3. Programa 3: Ms mensajes en pantalla

4. Programa 4: Pila. Ejemplo de pop y


push En algunos programas, adems, se plantean
dudas. Y, a veces, puntos clave del programa.
5. Programa 5. Registro bandera.
Programa 1. Sin mostrar en pantalla, se pasan 2
datos a 2 registros. Y se suman.
jueves 16/feb/2017
;Documentar no. Lista: 12 u1-1pm
; PROGRAMA 1. 16-feb-2017
.model small
.stack
.data
valor1 db 3
valor2 db 2
suma db 0
.code
;INSTRUCCIONES DE INICIALIZACION
mov ax, @data
mov ds, ax
;-----------------
MOV AH, valor1
MOV AL, valor2
ADD AH,AL
MOV SUMA, AH
; INSTRUCCIONES DE FINALIZACION
mov ax, 4c00h
int 21h
end

Cdigo fuente
Figura 1a: El emulador emu8086 ejecutando el programa 1 paso a paso. Se han transferido valores 3h y 2h a los registros AH y
AL, respectivamente. Est a punto de sumar.
Figura 1b: Continuando la figura anterior (1a.) Se ha dado clic en Single step. Se han sumado los valores 1 y 2 (03h + 02h) y se
ha guardado en una variable denominada SUMA (suma = 05h).
Donde se imprime en pantalla
(emulada) el clsico hola mundo.
Programa 2.
Adems se vislumbra Para qu
jueves 16/feb/2017 son esas dichosas instrucciones
de inicializacin?
;Documentar no. Lista: 12 u1-1pm
;PROGRAMA 2. 16-feb-2017
.model small
.stack
.data
MENSAJE DB 'HOLA MARTE$'
.code
;INSTRUCCIONES DE INICIALIZACION
;mov ax, @data
;mov ds, ax
;-----------------
MOV AH, 9
LEA DX, MENSAJE ;obtiene direccion efectiva
INT 21H

; INSTRUCCIONES DE FINALIZACION
mov ax, 4c00h
int 21h
end

Cdigo fuente
HOLA MARTE$

Figura 2a: El emulador emu8086 ejecutando el programa 2 (no paso a paso). Se muestra un mensaje de error. Como se aprecia en la ventana de la derecha,
se repite muchsimas veces una instruccin ADD [BX Luego el emulador se detiene. El error est en que para mostrar mensajes por pantalla, con la INT
Figura 2b. Tras corregir la variable, que abarca un byte, denominada MENSAJE, a su forma correcta con un delimitador $ se
muestra un mensaje en pantalla (emulada).
!!

Figura 2c. Experimentando. Se prueba a marcar como comentarios las instrucciones de inicializacin, por lo tanto no se ejecutarn. Entonces se aprecia que
se imprime basura. Esto podra indicar que, se toman datos (nmeros) de la memoria de direcciones diferentes a las que seran especificadas con las
Programa 3. Programa NSA: muestra en
pantalla (emulada) algunos datos
personales.
jueves 16/feb/2017
;Documentar no. Lista: 12 u1-1pm
;PROGRAMA 3. 16-feb-2017
;Disena un programa en ensamblador que escriba tu noCtrol, nombre y edad.

.model small
.stack
.data
noCtrol db '13400404$'
nombre db 'oscar daniel ff$'
edad db 21
.code
; INSTRUCCIONES DE INICIALIZACION
mov ax, @data
mov ds, ax
;------------------
MOV AH, 9
LEA DX, noCtrol
INT 21H

MOV AH, 9
LEA DX, nombre
INT 21H

MOV AH, 9
LEA DX, edad
int 21H
;------------------
; INSTRUCCIONES DE FINALIZACION
mov ax, 4c00h
int 21h

end
; * para que es el "end"?
; * como puedo imprimir numeros?
; * identifica los parametros de
; las instrucciones de inicializacion/finalizacion

Cdigo fuente (favor de ver en pantalla completa o copiar desde la presentacin hacia un archivo de texto sin formato)
Figura 3. Haciendo uso del servicio 9 de la INT 21H se muestran en pantalla (emulada) algunos datos personales.
Donde se ejemplifica fsicamente

Programa 4. la estructura pila. Se


envan/sacan algunos datos de la
pila, y se observa dicha estructura
lunes 20/feb/2017
mediante el emulador.
;Documentar no. Lista: 12 u1-1pm 20-feb-2017
; PROGRAMA 4: Ejemplificar uso de instrucciones "PUSH" y "POP"
; Disene un programa en ensamblador que:
; * envie 3 palabras a la pila: 'AB', 'CD', 'EF'

Cdigo fuente (1/3) documentacion


.model small
.stack
.data
msj db 'Contenido de la pila$'
v db 0,0,0,0,0,0,'$'
.code
mov ax, @data ;INSTRUCCIONES DE
mov ds, ax ;INICIALIZACION
;------------------
MOV AX, 'AB'
PUSH AX

MOV BX, 'CD'


PUSH BX

MOV CX, 'EF'


PUSH CX

; Recuperar de la PILA
POP DX
MOV V[0], DL
MOV V[1], DH

POP DX
MOV V[2], DL
MOV V[3], DH

POP DX
MOV V[4], DL
MOV V[5], DH

; Imprimir los caracteres


MOV AH, 9
LEA DX, V
INT 21H

Cdigo fuente (2/3) datos, inicializacin, y cuerpo


;------------------

; (INSTRUCCIONES DE FINALIZACION)
mov ax, 4c00h
int 21h

end

<; "por cada push tiene que haber un pop"?

Cdigo fuente (3/3) instrucciones de finalizacin y alguna duda


;Documentar no. Lista: 12 u1-1pm 20-feb-2017
; PROGRAMA 4: Ejemplificar uso de instrucciones "PUSH" y "POP"
; Disene un programa en ensamblador que:
; * envie 3 palabras a la pila: 'AB', 'CD', 'EF'

.model small
.stack
.data
msj db 'Contenido de la pila$'
v db 0,0,0,0,0,0,'$'
.code
; (INSTRUCCIONES DE INICIALIZACION)
mov ax, @data
mov ds, ax
;------------------
MOV AX, 'AB'
PUSH AX

MOV BX, 'CD'


PUSH BX

MOV CX, 'EF'


PUSH CX

; Recuperar de la PILA
POP DX
MOV V[0], DL
MOV V[1], DH

POP DX
MOV V[2], DL
MOV V[3], DH

POP DX
MOV V[4], DL
MOV V[5], DH

; Imprimir los caracteres


MOV AH, 9
LEA DX, V
INT 21H
;------------------

; (INSTRUCCIONES DE FINALIZACION)
mov ax, 4c00h
int 21h
end ;sigo sin saber que hace esto
<; "por cada push tiene que haber un pop"?

Cdigo fuente (solamente para fines ilustrativos)


Figura 4. Programa 4 (de ejercicios con pila e instrucciones relacionadas) en ejecucin.
Donde se estudia el registro
bandera analizando cmo y por
qu diferentes instrucciones

Programa 5. afectan diferentes banderas.

*Nota: Para apreciar el cambio de


jueves 23/feb/2017
valor en las banderas, despus de
cada instruccin manualmente se
igualaron a 0
;Programa 5. no. Lista: 12 u1-1pm 23-feb-2017
; Disena un programa en ensamblador que permita verificar el estado del Registro bandera despues de las siguientes instrucciones.
;Captura las pantallas correspondientes

; ("las siguientes instrucciones")

; que banderas se modifican?


MOV AX, 85
SUB AX, AX
; Prediccion: 85-85=0. --> Se modifica la bandera ZF

; que banderas se modifican?


MOV BX, 82H
MOV CX, 83H
ADD BX, CX
; Prediccion: 82H+83H=105H=261 --> Se modifica la bandera CF

; que banderas se modifican?


MOV AH, 10
MOV AL, 2
SUB AL, AH
; Prediccion: 2-10=-8 --> Se modifica la bandera de signo
; Disenar un conjunto de instrucciones para generar acarreo
; IMPORTANTE: En todas las capturas, esta encendida IF, porque el programa se esta ejecutando paso a paso

Cdigo fuente
Figura 5a. Qu banderas se modifican con 85-85=0? Las banderas ZF (Zero Flag) y PF (Parity Flag)
Figura 5b. Qu banderas se modifican con 82H+83H=105H? La bandera PF (Parity Flag)
Figura 5c. Qu banderas se modifican con 2-10 = -8? Las banderas CF (Carry Flag), SF (Sign Carry) y AF (Auxiliar-carry Flag)
FIN. Gracias por su atencin.

Vous aimerez peut-être aussi