Sunteți pe pagina 1din 18

LABORATORIO ARQUITECTURA DE COMPUTADORAS

2012-B

INDICE
1. DIAGRAMA DE FLUJO..3 2. PROGRAMA...6 3. CODIFICACION..7

LABORATORIO ARQUITECTURA DE COMPUTADORAS

2012-B

PROGRAMA PARA ORDENAR 10 NUMEROS EN FORMA ASCENDENTE


SE TIENEN 10 NUMEROS ALEATORIOS EN LA POSICION DE MEMORIA DESDE 2000 A 2009, Y SE REQUIERE GUARDAR LOS NUMEROS ORDENADOS ASCENDENTEMENTE PARES: IMPARES: 2010 2014 2015 2019

1 DIAGRAMA DE FLUJO
INICIO

VAR1 = 0 CONTADOR1= Ah [198Fh] = 0 4 VAR2 = FFh

CONTADOR2 = Ah

VAR3 = 0 3

VAR2 < [VAR3 + 2000h]

Si

No

[VAR3 + 2000h] <= [VAR1 + 198F]

Si

2
No 2

LABORATORIO ARQUITECTURA DE COMPUTADORAS

2012-B

VAR2 = [VAR3 + 2000h]

VAR3 = VAR3 + 1

CONTADOR2 = CONTADOR2 - 1

CONTADOR2 = 0

No

Si [VAR1 + 1900] = VAR2

VAR1 = VAR1 + 1

CONTADOR1 = CONTADOR1 - 1

CONTADOR1 = 0

No

Si 5

LABORATORIO ARQUITECTURA DE COMPUTADORAS


5

2012-B

VAR1 = 0 VAR2 = 0 VAR3 = 0 CONTADOR = Ah 7 RECORRER A LA DERECHA UNA POSICION [VAR1 + 1990]

ACARREO = 0

Si

No [VAR2 + 2015] = [VAR1 + 1990]

VAR2 = VAR2 + 1

FIN

LABORATORIO ARQUITECTURA DE COMPUTADORAS


SEUDOCODIGO

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS 3 CODIFICACION


3.1 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

2012-B

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2020 31DB 0C9C:2022

3.2 MOV

CX,A
1011 w reg data data if w = 1 data =00000000 00001010 10111001 00001010 00000000 B9 0A 00

TIPO: Inmediato a registro CODIGO DE INSTRUCCIN: w =1 reg =001

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2022 B90A00 0C9C:2025

3.3 MOV

AL,0
1011 w reg data Data if w =1 data =00000000 10110000 00000000 B0 00

TIPO: Inmediato a registro CODIGO DE INSTRUCCIN: w =0 reg =000

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2025 B000 0C9C:2027

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.4 MOV [198F],AL
1010001w addr-low addr-high addr-high =00011001 10100010 10001111 00011001 A2 8F 19

2012-B

TIPO: Acumulador a memoria CODIGO DE INSTRUCCIN: w =0 addr-low =10001111

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2027 A28F19 0C9C:202A

3.5 MOV

AL,FF
1011 w reg data data if w = 1 data =11111111 10110000 11111111 B0 FF

TIPO: Inmediato a registro CODIGO DE INSTRUCCIN: w =0 reg =000

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:202A B0FF 0C9C:202C

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.7 MOV CX,A
1011 w reg data data if w = 1 data =00000000 00001010 10111001 00001010 00000000 B9 0A 00

2012-B

TIPO: Inmediato a registro CODIGO DE INSTRUCCIN: w =1 reg =001

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:202D B90A00 0C9C:2030

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

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2030 31F6 0C9C:2032

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.10 JB 2046
01110010 disp.

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

TIPO: Memoria a registro CODIGO DE INSTRUCCIN: d =1 w =0 mod =10 reg =100

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.13 JBE 2046
01110110 disp

2012-B

TIPO: Salto si es menor o igual CODIGO DE INSTRUCCIN:

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

TIPO: Memoria a registro CODIGO DE INSTRUCCIN: d =1 w =0 mod =10 reg =000

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.16 LOOP
TIPO: Bucle CX veces CODIGO DE INSTRUCCIN: 11100010 disp

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

TIPO: Registro a memoria CODIGO DE INSTRUCCIN: d =0 w =0 mod =10 reg =000

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.19 POP
TIPO: Registro CODIGO DE INSTRUCCIN: reg =001 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:204E 59 0C9C:204F 01011001 59 01011 reg

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

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2051 31DB 0C9C:2053

12

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.22 XOR SI,SI
001100 d w modreg r/m r/m =110

2012-B

TIPO: Registro a registro CODIGO DE INSTRUCCIN: d =0 w =1 mod =11 reg =110 00110001 11110110 31 F6

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2053 31F6 0C9C:2055

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

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2055 31FF 0C9C:2057

3.24 MOV

CX,A
1011 w reg data data if w = 1 data =00000000 00001010 10111001 00001010 00000000 B9 0A 00

TIPO: Inmediato a registro CODIGO DE INSTRUCCIN: w =1 reg =001

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2057 B90A00 0C9C:205A

13

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.25 MOV AL,[BX][1990]
100010 d w modreg r/m r/m =111 DISP = 00011001 10010000

2012-B

TIPO: Memoria a registro CODIGO DE INSTRUCCIN: d =1 w =0 mod =10 reg =000

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

CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:205F D0C8 0C9C:2061

14

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.28 JNB 206B
01110011 disp.

2012-B

TIPO: Salta si no es menor (si el acarreo, CF, es igual a 0) CODIGO DE INSTRUCCIN:

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

TIPO: Registro a memoria CODIGO DE INSTRUCCIN: d =0 w =0 mod =10 reg =000

CODIGO RESULTANTE (BINARIO): 10001000 10000100 00010101 00100000 CODIGO RESULTANTE (HEXADECIMAL): 88 84 15 20 0C9C:2064 88841520 0C9C:2068

15

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.31 INC
TIPO: Registro CODIGO DE INSTRUCCIN: reg =110 CODIGO RESULTANTE (BINARIO): CODIGO RESULTANTE (HEXADECIMAL): 0C9C:2068 46 0C9C:2069 01000110 46 01000 reg

2012-B

SI

3.32 JMP

2071
11101011 disp

TIPO: Dentro de un segmento corto CODIGO DE INSTRUCCIN:

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.34 MOV [DI][2010],AL
100010 d w modreg r/m r/m =101 DISP = 00100000 00010000

2012-B

TIPO: Registro a memoria CODIGO DE INSTRUCCIN: d =0 w =0 mod =10 reg =000

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

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.37 LOOP
TIPO: Bucle CX veces CODIGO DE INSTRUCCIN: 11100010 disp

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

S-ar putea să vă placă și