You are on page 1of 18

LABORATORIO ARQUITECTURA DE COMPUTADORAS

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

2012-B

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:

2010 2014

IMPARES:

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]

2
No
2

Si

LABORATORIO ARQUITECTURA DE COMPUTADORAS

VAR2 = [VAR3 + 2000h]

VAR3 = VAR3 + 1

CONTADOR2 = CONTADOR2 - 1

CONTADOR2
=
0

No

Si
[VAR1 + 1900] = VAR2

VAR1 = VAR1 + 1

CONTADOR1 = CONTADOR1 - 1

CONTADOR1
=
0

Si
5

No

2012-B

LABORATORIO ARQUITECTURA DE COMPUTADORAS


5

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

ACARREO
=
0

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

VAR2 = VAR2 + 1

FIN

Si

2012-B

LABORATORIO ARQUITECTURA DE COMPUTADORAS

2012-B

SEUDOCODIGO
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
;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

SIGUE2:

SIGUE1:

EXIT:

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

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

TIPO: Registro a registro


CODIGO DE INSTRUCCIN:
d =0

mod =11

w =1

reg =011

001100dw modreg r/m


r/m = 011

CODIGO RESULTANTE (BINARIO):


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

3.2 MOV

00110001 11011011
31
DB

CX,A

TIPO: Inmediato a registro


CODIGO DE INSTRUCCIN:
w =1

reg =001

1011 w reg data data if w = 1


data =00000000 00001010

CODIGO RESULTANTE (BINARIO):


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

3.3 MOV

10111001 00001010 00000000


B9
0A
00

AL,0

TIPO: Inmediato a registro


CODIGO DE INSTRUCCIN:
w =0

reg =000

1011 w reg data Data if w =1


data =00000000

CODIGO RESULTANTE (BINARIO):


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

10110000 00000000
B0
00

2012-B

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.4 MOV

[198F],AL

TIPO: Acumulador a memoria


CODIGO DE INSTRUCCIN:
w =0

1010001w addr-low addr-high

addr-low =10001111

addr-high =00011001

CODIGO RESULTANTE (BINARIO):


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

3.5 MOV

10100010 10001111 00011001


A2
8F
19

AL,FF

TIPO: Inmediato a registro


CODIGO DE INSTRUCCIN:
w =0

reg =000

1011 w reg data data if w = 1


data =11111111

CODIGO RESULTANTE (BINARIO):


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

3.6 PUSH

10110000 11111111
B0
FF

CX

TIPO: Registro
CODIGO DE INSTRUCCIN:

01010 reg

reg =001
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:202C
51
0C9C:202D

01010001
51

2012-B

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.7 MOV

2012-B

CX,A

TIPO: Inmediato a registro


CODIGO DE INSTRUCCIN:
w =1

reg =001

1011 w reg data data if w = 1


data =00000000 00001010

CODIGO RESULTANTE (BINARIO):


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

3.8 XOR

10111001 00001010 00000000


B9
0A
00

SI,SI

TIPO: Registro a registro


CODIGO DE INSTRUCCIN:
d =0

mod =11

w =1

reg =110

001100 d w modreg r/m


r/m =110

CODIGO RESULTANTE (BINARIO):


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

3.9 CMP

00110001 11110110
31
F6

AL,[SI][2000]

TIPO: Registro con memoria


CODIGO DE INSTRUCCIN:

001110 d w modreg r/m

d =1

mod =10

r/m = 100

w= 0

reg =000

DISP = 00100000 00000000

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

2012-B

2046

TIPO: Salto si es menor


CODIGO DE INSTRUCCIN:

01110010 disp.

disp =00001110 (2046 2038=Eh)


CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2036
720E
0C9C:2038

3.11 MOV

01110010 00001110
72
0E

AH,[SI][2000]

TIPO: Memoria a registro


CODIGO DE INSTRUCCIN:

100010 d w modreg r/m

d =1

mod =10

r/m =100

w =0

reg =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]

TIPO: Registro con memoria


CODIGO DE INSTRUCCIN:

001110 d w modreg r/m

d =1

mod =10

r/m = 111

w =0

reg =100

DISP = 00011001 10001111

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

2012-B

2046

TIPO: Salto si es menor o igual


CODIGO DE INSTRUCCIN:

01110110 disp

disp =00000100 (2046 2042 = 4h)


CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2040
7604
0C9C:2042

3.14 MOV

01110110 00000100
76
04

AL,[SI][2000]

TIPO: Memoria a registro


CODIGO DE INSTRUCCIN:

100010 d w modreg r/m

d =1

mod =10

r/m =100

w =0

reg =000

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

SI

TIPO: Registro
CODIGO DE INSTRUCCIN:

01000 reg

reg=110
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2046
46
0C9C:2047

10

01000110
46

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.16 LOOP

2012-B

2032

TIPO: Bucle CX veces


CODIGO DE INSTRUCCIN:

11100010 disp

disp =11101001 (2032 2049 = E9h)


CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2047
E2E9
0C9C:2049

3.17 MOV

11100010 11101001
E2
E9

[BX][1990],AL

TIPO: Registro a memoria


CODIGO DE INSTRUCCIN:

100010 d w modreg r/m

d =0

mod =10

r/m =111

w =0

reg =000

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

BX

TIPO: Registro
CODIGO DE INSTRUCCIN:

01000 reg

reg =011
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:204D
43
0C9C:204E

11

01000011
43

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.19 POP

CX

TIPO: Registro
CODIGO DE INSTRUCCIN:

01011 reg

reg =001
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:204E
59
0C9C:204F

3.20 LOOP

01011001
59

202A

TIPO: Bucle CX veces


CODIGO DE INSTRUCCIN:

11100010 disp

disp =11011001 (202A 2051 = D9h)


CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:204F
E2D9
0C9C:2051

3.21 XOR

11100010 11011001
E2
D9

BX,BX

TIPO: Registro a registro


CODIGO DE INSTRUCCIN:
d=0

mod = 11

w =1

reg = 011

001100dw modreg r/m


r/m = 011

CODIGO RESULTANTE (BINARIO):


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

12

00110001 11011011
31
DB

2012-B

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.22 XOR

SI,SI

TIPO: Registro a registro


CODIGO DE INSTRUCCIN:
d =0

mod =11

w =1

reg =110

001100 d w modreg r/m


r/m =110

CODIGO RESULTANTE (BINARIO):


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

3.23 XOR

00110001 11110110
31
F6

DI,DI

TIPO: Registro a registro


CODIGO DE INSTRUCCIN:
d =0

mod =11

w =1

reg =111

001100 d w modreg r/m


r/m =111

CODIGO RESULTANTE (BINARIO):


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

3.24 MOV

00110001 11111111
31
FF

CX,A

TIPO: Inmediato a registro


CODIGO DE INSTRUCCIN:
w =1

reg =001

1011 w reg data data if w = 1


data =00000000 00001010

CODIGO RESULTANTE (BINARIO):


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

13

10111001 00001010 00000000


B9
0A
00

2012-B

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.25 MOV

2012-B

AL,[BX][1990]

TIPO: Memoria a registro


CODIGO DE INSTRUCCIN:

100010 d w modreg r/m

d =1

mod =10

r/m =111

w =0

reg =000

DISP = 00011001 10010000

CODIGO RESULTANTE (BINARIO):


10001010 10000111 10010000 00011001
CODIGO RESULTANTE (HEXADECIMAL):
8A
87
90
19
0C9C:205A
8A879019
0C9C:205E

3.26 PUSH

AX

TIPO: Registro
CODIGO DE INSTRUCCIN:

01010 reg

reg =000
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:205E
50
0C9C:205F

3.27 ROR

01010000
50

AL,1

TIPO: Rotar a la derecha


CODIGO DE INSTRUCCIN:
v =0

mod = 11

w =0

r/m = 000

CODIGO RESULTANTE (BINARIO):


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

14

110100 v w mod 001 r/m

11010000 11001000
D0
C8

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.28 JNB

2012-B

206B

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


CODIGO DE INSTRUCCIN:

01110011 disp.

disp = 00001000 (206B 2063 = 08h)


CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2061
7308
0C9C:2063

3.29 POP

01110011 00001000
73
08

AX

TIPO: Registro
CODIGO DE INSTRUCCIN:

01011 reg

reg =000
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2063
58
0C9C:2064

3.30 MOV

01011000
58

[SI][2015],AL

TIPO: Registro a memoria


CODIGO DE INSTRUCCIN:

100010 d w modreg r/m

d =0

mod =10

r/m =100

w =0

reg =000

DISP = 00100000 00010101

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

SI

TIPO: Registro
CODIGO DE INSTRUCCIN:

01000 reg

reg =110
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2068
46
0C9C:2069

3.32 JMP

01000110
46

2071

TIPO: Dentro de un segmento corto


CODIGO DE INSTRUCCIN:

11101011 disp

disp = 00000110 (2071 206B = 06h)


CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2069
EB06
0C9C:206B

3.33 POP

11101011 00000110
EB
06

AX

TIPO: Registro
CODIGO DE INSTRUCCIN:

01011 reg

reg =000
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:206B
58
0C9C:206C

16

01011000

2012-B

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.34 MOV

2012-B

[DI][2010],AL

TIPO: Registro a memoria


CODIGO DE INSTRUCCIN:

100010 d w modreg r/m

d =0

mod =10

r/m =101

w =0

reg =000

DISP = 00100000 00010000

CODIGO RESULTANTE (BINARIO):


10001000 10000101 00010000 00100000
CODIGO RESULTANTE (HEXADECIMAL):
88
85
10
20
0C9C:206C
88851020
0C9C:2070

3.35 INC

DI

TIPO: Registro
CODIGO DE INSTRUCCIN:

01000 reg

reg =111
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2070
47
0C9C:2071

3.36 INC

01000111
47

BX

TIPO: Registro
CODIGO DE INSTRUCCIN:

01000 reg

reg =011
CODIGO RESULTANTE (BINARIO):
CODIGO RESULTANTE (HEXADECIMAL):
0C9C:2071
43
0C9C:2072

17

01000011
43

LABORATORIO ARQUITECTURA DE COMPUTADORAS


3.37 LOOP

2012-B

205A

TIPO: Bucle CX veces


CODIGO DE INSTRUCCIN:

11100010 disp

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

You might also like