Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programa Ordenar Numeros
Programa Ordenar Numeros
2012-B
INDICE
1. DIAGRAMA DE FLUJO..3 2. PROGRAMA...6 3. CODIFICACION..7
2012-B
1 DIAGRAMA DE FLUJO
INICIO
CONTADOR2 = Ah
VAR3 = 0 3
Si
No
Si
2
No 2
2012-B
VAR3 = VAR3 + 1
CONTADOR2 = CONTADOR2 - 1
CONTADOR2 = 0
No
VAR1 = VAR1 + 1
CONTADOR1 = CONTADOR1 - 1
CONTADOR1 = 0
No
Si 5
2012-B
VAR1 = 0 VAR2 = 0 VAR3 = 0 CONTADOR = Ah 7 RECORRER A LA DERECHA UNA POSICION [VAR1 + 1990]
ACARREO = 0
Si
VAR2 = VAR2 + 1
FIN
2012-B
Para ordenar los nmeros: - Comparamos el primero de los valores con un valor A (por defecto ser FFh) - Si este valor A es menor que el primero de los datos no se hace nada y se compara con el siguiente de los datos - Si no es menor se compara el primero de los datos con el primer dato, menos una posicin, ya ordenado - Si este valor es menor o igual, quiere decir que es un valor que ya se tom previamente y se sale del bucle - Si no es menor o igual, entonces reemplazamos el valor A por el dato que se est procesando - Al terminar de comparar con todos los valores se halla el menor de los valores y se escribe en la memoria - Se vuelve a poner A en FFh para iniciar nuevas comparaciones y volver a encontrar el siguiente menor y se vuelve a colocar este valor en memoria (una posicin ms que el anterior valor)
2 PROGRAMA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SECUENCIA PARA ORDENAR LOS NUMEROS ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; XOR MOV MOV MOV MOV PUSH MOV XOR CMP JB MOV CMP JBE MOV INC LOOP MOV INC POP LOOP BX,BX CX,A AL,00 [198F],AL AL,FF CX CX,A SI,SI AL,[SI][2000] EXIT AH,[SI][2000] AH,[BX][198F] EXIT AL,[SI][2000] SI SIGUE1 [BX][1990],AL BX CX SIGUE2
SIGUE2:
SIGUE1:
EXIT:
Adems las etiquetas tienen las siguientes direcciones en el programa: SIGUE2 = 202A SIGUE1 = 2032 EXIT = 2046 SIGUE3 = 205A ES_PAR = 206B SALIR = 2071
2012-B
3.2 MOV
CX,A
1011 w reg data data if w = 1 data =00000000 00001010 10111001 00001010 00000000 B9 0A 00
3.3 MOV
AL,0
1011 w reg data Data if w =1 data =00000000 10110000 00000000 B0 00
2012-B
3.5 MOV
AL,FF
1011 w reg data data if w = 1 data =11111111 10110000 11111111 B0 FF
3.6 PUSH
TIPO: Registro
CX
01010 reg
CODIGO DE INSTRUCCIN: reg =001 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:202C 51 0C9C:202D
01010001 51
2012-B
3.8 XOR
SI,SI
001100 d w modreg r/m r/m =110
TIPO: Registro a registro CODIGO DE INSTRUCCIN: d =0 w =1 mod =11 reg =110 00110001 11110110 31 F6
3.9 CMP
AL,[SI][2000]
001110 d w modreg r/m r/m = 100 DISP = 00100000 00000000
TIPO: Registro con memoria CODIGO DE INSTRUCCIN: d =1 w= 0 mod =10 reg =000
CODIGO RESULTANTE (BINARIO): 00111010 10000100 00000000 00100000 CODIGO RESULTANTE (HEXADECIMAL): 3A 84 00 20 0C9C:2032 3A840020 0C9C:2036
2012-B
TIPO: Salto si es menor CODIGO DE INSTRUCCIN: disp =00001110 (2046 2038=Eh) CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2036 720E 0C9C:2038 01110010 00001110 72 0E
3.11 MOV
AH,[SI][2000]
100010 d w modreg r/m r/m =100 DISP = 00100000 00000000
CODIGO RESULTANTE (BINARIO): 10001010 10100100 00000000 00100000 CODIGO RESULTANTE (HEXADECIMAL): 8A A4 00 20 0C9C:2038 8AA40020 0C9C:203C
3.12 CMP
AH,[BX][198F]
001110 d w modreg r/m r/m = 111 DISP = 00011001 10001111
TIPO: Registro con memoria CODIGO DE INSTRUCCIN: d =1 w =0 mod =10 reg =100
CODIGO RESULTANTE (BINARIO): 00111010 10100111 10001111 00011001 CODIGO RESULTANTE (HEXADECIMAL): 3A A7 8F 19 0C9C:203C 3AA78F19 0C9C:2040
2012-B
disp =00000100 (2046 2042 = 4h) CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2040 7604 0C9C:2042 01110110 00000100 76 04
3.14 MOV
AL,[SI][2000]
100010 d w modreg r/m r/m =100 DISP = 00100000 00000000
CODIGO RESULTANTE (BINARIO): 10001010 10000100 00000000 00100000 CODIGO RESULTANTE (HEXADECIMAL): 8A 84 00 20 0C9C:2042 8A840020 0C9C:2046
3.15 INC
TIPO: Registro
SI
01000 reg
CODIGO DE INSTRUCCIN: reg=110 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2046 46 0C9C:2047
01000110 46
10
2012-B
2032
disp =11101001 (2032 2049 = E9h) CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2047 E2E9 0C9C:2049 11100010 11101001 E2 E9
3.17 MOV
[BX][1990],AL
100010 d w modreg r/m r/m =111 DISP = 00011001 10010000
CODIGO RESULTANTE (BINARIO): 10001000 10000111 10010000 00011001 CODIGO RESULTANTE (HEXADECIMAL): 88 87 90 19 0C9C:2049 88879019 0C9C:204D
3.18 INC
TIPO: Registro
BX
01000 reg
CODIGO DE INSTRUCCIN: reg =011 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:204D 43 0C9C:204E
01000011 43
11
2012-B
CX
3.20 LOOP
TIPO: Bucle CX veces
202A
11100010 disp
CODIGO DE INSTRUCCIN:
disp =11011001 (202A 2051 = D9h) CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:204F E2D9 0C9C:2051 11100010 11011001 E2 D9
3.21 XOR
BX,BX
001100dw modreg r/m r/m = 011
TIPO: Registro a registro CODIGO DE INSTRUCCIN: d=0 w =1 mod = 11 reg = 011 00110001 11011011 31 DB
12
2012-B
TIPO: Registro a registro CODIGO DE INSTRUCCIN: d =0 w =1 mod =11 reg =110 00110001 11110110 31 F6
3.23 XOR
DI,DI
001100 d w modreg r/m r/m =111
TIPO: Registro a registro CODIGO DE INSTRUCCIN: d =0 w =1 mod =11 reg =111 00110001 11111111 31 FF
3.24 MOV
CX,A
1011 w reg data data if w = 1 data =00000000 00001010 10111001 00001010 00000000 B9 0A 00
13
2012-B
CODIGO RESULTANTE (BINARIO): 10001010 10000111 10010000 00011001 CODIGO RESULTANTE (HEXADECIMAL): 8A 87 90 19 0C9C:205A 8A879019 0C9C:205E
3.26 PUSH
TIPO: Registro
AX
01010 reg
CODIGO DE INSTRUCCIN: reg =000 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:205E 50 0C9C:205F
01010000 50
3.27 ROR
AL,1
110100 v w mod 001 r/m
TIPO: Rotar a la derecha CODIGO DE INSTRUCCIN: v =0 w =0 mod = 11 r/m = 000 11010000 11001000 D0 C8
14
2012-B
disp = 00001000 (206B 2063 = 08h) CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2061 7308 0C9C:2063 01110011 00001000 73 08
3.29 POP
TIPO: Registro
AX
01011 reg
CODIGO DE INSTRUCCIN: reg =000 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2063 58 0C9C:2064
01011000 58
3.30 MOV
[SI][2015],AL
100010 d w modreg r/m r/m =100 DISP = 00100000 00010101
CODIGO RESULTANTE (BINARIO): 10001000 10000100 00010101 00100000 CODIGO RESULTANTE (HEXADECIMAL): 88 84 15 20 0C9C:2064 88841520 0C9C:2068
15
2012-B
SI
3.32 JMP
2071
11101011 disp
disp = 00000110 (2071 206B = 06h) CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2069 EB06 0C9C:206B 11101011 00000110 EB 06
3.33 POP
TIPO: Registro
AX
01011 reg
CODIGO DE INSTRUCCIN: reg =000 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:206B 58 0C9C:206C
01011000
16
2012-B
CODIGO RESULTANTE (BINARIO): 10001000 10000101 00010000 00100000 CODIGO RESULTANTE (HEXADECIMAL): 88 85 10 20 0C9C:206C 88851020 0C9C:2070
3.35 INC
TIPO: Registro
DI
01000 reg
CODIGO DE INSTRUCCIN: reg =111 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2070 47 0C9C:2071
01000111 47
3.36 INC
TIPO: Registro
BX
01000 reg
CODIGO DE INSTRUCCIN: reg =011 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2071 43 0C9C:2072
01000011 43
17
2012-B
205A
disp = 11100110 (205A 2074 = E6h) CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2072 E2E6 0C9C:2074 11100010 11100110 E2 E6
Los valores que se guardan en el espacio de memoria que corresponde al programa (2020h 2073h), se corroboran con la instruccin del DEBUG: -U 2020 2073
18