lunes, 21 de octubre de 2013

Instrucción LOOP y JMP programas Analisis

 Codigo del programa:

page 60,132
TITLE POBLOOP (COM) Ilustracion de Loop
.MODEL SMALL
.CODE
ORG l00
BEGIN PROC NEAR
MOV AX,Ol
MOV BX,01
MOV DX,01
MOV cx,lO
A20:
INC AX
ADD BX,AX
SHL DX,1
LOOP A20
MOV AX,4C00h
INT 21h
BEGIN ENDP
END BEGIN

Análisis del código:
1. Se define con la instruccion PAGE el numero maximo de lineas para una página.
2. Con TITLE definimos el titulo que le daremos
3. Definimos el modelo de memoria en este caso sera SMALL
4.Indicamos inicia el codigo
5.Nuestro codigo que vamos a generar iniciara con un desplazamiento de direccion 100
6.Entramos a iniciar nuestro proceso  PROC NEAR
7.Inicializamos AX,  Mueve el valor 01 a AX
8.Transfiere a BX el valor 01
9.Transfiere a DX  el valor 01
10. Transfiere a CX el valor 01
11.Una etiqueta la cual representa el numero de iteraciones.
12. Sumar 01 a AX
13.Sumas AX a BX
14.SHL Multiplicar por dos a DX
15.Decrementar CX (Iterar si este es diferente de cero)
16.Transferir 4c00h a AX
17.Interrupción 21h, salida a dos
18. Fin del begin
19. Fin del programa
  
Proceso de emsamblado de nuestro programa 

podemos ver que nuestro programa esta perfectamente ensamblado solo nos aparece un warning pero no afecta el funcionamiento de nuestro programa es solo un recordatorio por si se nos olvido porne el stack segment.

Dentro del debug comenzamos a rastrear nuestro programa con la instruccion con la instruccion -T
podemos ver que la instrucion IP
y asi seguimos hasta que el programa termine esto pasara cuando nos saque del Debug

Que pasa en el siguiente programa y porque?
Codigo de nuestro programa JMP

page 60,132
TITLE PO8JUMP (COM) uso de JMP para iterar
.MODEL SMALL
.CODE
ORG 100H
MAIN PROC NEAR
MOV AX,01 ;INICIACION DE AX
MOV BX,01 ;BX Y
MOV CX,01 ;CX A 01
A20:
ADD AX,01 ;SUMAR 01 A AX
ADD BX,AX ;SUMAR AX A BX
SHL CX,1 ;MULTIPLICAR POR CADA DOS CX
JMP A20 ; SALTAR A LA ETIQUETA 20
MAIN ENDP
END MAIN





1: Define el numero máximo de lineas para listar en una pagina.
2: Define el titulo del programa.
3: Define el modelo de memoria.
4: Inicia el codigo.
5: Inicia la generacion de codigo a partir del desplazamiento de dirección 100h.
6: Comienza el proceso.
7: Mueve 01 al registro AX.
8: Mueve 01 al registro BX.
9: Mueve 01 al registro CX.
10: Nombre de la etiqueta indicando el número de iteraciones.
11: Suma 1 al registro AX.
13: Suma el valor de AX al registro BX.
14: Multiplica por dos a DX.
15: Salta a la etiqueta A20, realizando una especie de ciclo.
16: Termina el proceso.
17: Termina el programa.

Proceso de emsamblado de nuestro programa 
en la imagen de arriba se ve que nos vuelve a salir el warning de que nos falta el stack segment pero no afecta el funcionamiento de nuestro programa
en la imagen de arriba se ve los segmentos cs, ds, ss y parte del rastreo del programa se encuentran vacios.



 se ve en el codigo que se comienzan a repetir las instrucciones

No hay comentarios:

Publicar un comentario