Sistemas de Numeración

Sistema Decimal Binario Octal Hexadecimal. Ensamblador. Estructura de Computadoras. Instrucciones Microprocesador

  • Enviado por: Pedro
  • Idioma: castellano
  • País: España España
  • 10 páginas

publicidad
cursos destacados
El uso de una Consola o Terminal Segura con SSH
El uso de una Consola o Terminal Segura con SSH
Aprenda el uso del protocolo SSH de manera básica y sencilla al establecer una conexión por terminal...
Ver más información

Aplicaciones básicas con PhoneGap
Aplicaciones básicas con PhoneGap
Genera una aplicación para móvil con PhoneGap a través de Adobe Dreamweaver CS6, utilizando HTML5,...
Ver más información


SISTEMAS DE NUMERACIÓN

(T-1)

CONCEPTO.-

Un sistema de numeración es un conjunto de símbolos y reglas que se utilizan para la representación de datos numéricos o cantidades.

Cada sistema de numeración se va ha caracterizar por su base que es el número de cada símbolo distinto que utiliza, y además determina el valor de cada símbolo, dependiendo de la posición que ocupe.

Sistema decimal. 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

Base: 10

Ej:

123 = U · B0 + D · B1 + C B2 = 3 · 100+ 2 · 101 + 1 · 102 = 100 + 20 + 3 = 123

El valor decimal de una cantidad expresada en otro sistema de numeración viene dada por la siguiente fórmula:

Nº = Sumatorio (Dígito)· (Base)n

SISTEMA BINARIO.-

Símbolos: 0, 1.

Base: 2

101(2 = 1 · 20 + 0 · 21 + 1 · 22 = 22(10

Binary Digit

1 Bit = 1 Simbolo

1 Byte = 8 bits

1 Kb = 1024 bytes

1 Mb = 1024 Kb

1 Gb = 1024 Mb

SISTEMA OCTAL.-

Símbolos: 0, 1, 2, 3, 4, 5, 6, 7.

Base: 8

107(8 = 7 · 80 + 0 · 81 + 1 · 82 = 7 + 64 = 71(10

SISTEMA HEXADECIMAL.-

Símbolos: 0, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F.

Base: 16

1A2(10 = 2 · 160 + A · 161 + 1 · 162 = 2 + 10 · 16 + 256 = 418(10

CAMBIOS DE SISTEMAS DE NUMERACIÓN.-

·Binario.

Hay que dividir sucesivamente por 2 hasta no se posible más.

17(10 /2

  • 8 / 2

0 4 / 2

0 2 / 2

  • 1

1 0 0 0 1(2

·Cambio de binario a hexadecimal.

Binario

Hexadecimal

0 0 0 0

0 0 0 1

0 0 1 0

0 0 1 1

0 1 0 0

0 1 0 1

0 1 1 0

0 1 1 1

1 0 0 0

1 0 0 1

1 0 1 0

1 0 1 1

1 1 0 0

1 1 0 1

1 1 1 0

1 1 1 1

0

1

2

3

4

5

6

7

8

9

10-A

11-B

C

D

E

F

1)Contar en exadecimal del 0000 / 0020.

0000-0001-0002-0003-0004-0005-0006-0007-0008-0009-000A-000B-000C-000D-000E-000F-0010-0011-0012-0013-0014-0015-0016-0017-0018-0019-001A-001B-001C-0001D-001E-001F.

2)Hallar en nº anterior.


441F>441E

01EF>01EE

4400>43FF

0220>021F

4401>4400

FFFF>FFFE


ARQUITECTURA DE LOS ORDENADORES.-

U.C. Es la encargada de gobernar al resto de unidades y ejecutar las instrucciones controlando su secuencia.

U.A.L. Es la encargada de realizar todas las operaciones de tipo aritmético y lógico.

M.C. Es la encargada de almacenar programas y datos necesarios para que el sistema informático realice un trabajo determinado.

U.C. Controlador de programa.

Registro instrucción.

Decodificador.

Reloj.

Secuenciador.

El contador de programa va contener siempre la dirección de memoria de la siguiente instrucción a ejecutar.

El registro de instrucción contiene la instrucción que se está ejecutando en cada momento.

U.A.L. Circuito operacional.

Registro entrada.

Registro acumulador.

Registro estado.

El circuito operacional va a contener los circuitos necesarios para realizar operaciones con los registros de entrada.

Los registros de entrada contienen los datos que intervienen en una operación.

El registro acumulador almacena los resultados de operaciones.

El registro de estado es un conjunto de biestables un los que se registran condiciones que se dieron en la última operación.

ENSAMBLADOR.-

·Características del 6502.

El bus de datos: es de 8 bits mientras que el de direcciones es de 16.

El contenido de cada celda de memoria es de 8 bits y los registros de que disponemos son: acumulador, reg. X, reg. Y, reg. Estado (todos ellos de 8 bits).

·Instrucciones.

LDA. Carga en el acumulador el valor indicado en el operando. Podemos hacer 3 tipos de direccionamiento:

-Inmediato. El valor que voy ha introducir en el acumulador está a continuación de la

instrucción.

#&Binario.

# Decimal.

#$ Hexadecimal.

-Absoluto. Meto en el acumulador el contenido de la dirección de memoria especificada

($FFFF).

-Pag 0. Hace lo mismo que el absoluto, pero solo puedes meter una cifra de 2 dígitos

($45).

NOTA:Estos direccionamientos de memoria son válidos para cualquier instrucción.

STA. Carga lo que hay en el acumulador a una posición de memoria.

LDX. Carga el contenido del operando al registro X.

LDY. Pasa el contenido especificado en el operando al contenido Y.

STX. Carga el contenido del registro X a una posición de memoria

Direccionamiento: AbsolutoSTX $4402

Pág. 0 STX $54

STY. Pasa el contenido del registro Y a una posición de memoria.

3)Intercambiar los contenidos de la memorias 40 y 41.

LDX $40

LDY $41

STY $41

LDY $40

BRK

Las siguientes instrucciones sirven para pasar valores entre acumulador, reg. X eY.

Todas estas instrucciones afectan a los flag N (Negative) y Z (Zero).

INC. Incrementa en una unidad el contenido especificado en el operando o en su defecto en el acumulador, guardando siempre el resultado en el mismo.

INX. Incrementa en una unidad el contenido del reg. X.

INY. Incrementa en una unidad el contenido del reg. Y.

DEC. Decrementa en una unidad el contenido de la memoria direccionada o en su defecto en el acumulador, guardando siempre el resultado en el mismo.

DEX. Decrementa en una unidad el contenido del reg. X.

DEY. Decrementa en una unidad el contenido del reg. Y.

AND. Realiza la operación lógica AND a los 8 bits del operando y los 8 bits del acumulador [A AND (M)A]. Se consigue forzar un bit a cero donde se ponga un 0.

X

Y

X AND Y

0

0

1

1

0

1

0

1

0

0

0

1

4)Forzar a 0 los dos bits más significativos de la dirección de memoria 4205 guardando el resultado en 4206.


LDA $4205

AND #&00111111

STA $4206

BRK

LDA #&00111111

AND $4205

STA $4206

BRK


ORA. Realiza la operación lógica “OR” entre el acumulador y la memoria direccionada. Posee los mismos direccionamientos que AND que son los de siempre

Se consigue forzar un bit a uno donde se sitúe un 1.

X

Y

X ORA Y

0

0

1

1

0

1

0

1

0

1

1

1

5)Programa que fuerza a 1 las cuatro cifras menos significativas de la memoria 48 pasando el resultado al registro X.

LDA $48

ORA #&00001111

TAX

BRK

EOR. Efectúa la operación lógica “OR” exclusiva o “XOR” entre la memoria y el acumulador. El resultado de la operación lo introduce en el acumulador. Se consigue forzar un bit al cambio donde se ponga un 1.

X

Y

XOR Y

0

0

1

1

0

1

0

1

0

1

1

0

El complemento a 1 consiste en cambiar los 0 por 1 y viceversa, una posibilidad es utilizar el operador EOR #&11111111.

6)Calcular el complemento a 1 de la dirección de memoria 55 guardando el resultado en la memoria 56.

LDA $55

EOR #&11111111

STA $56

BRK

El complemento a 2 se halla sacando el complemento a 1 y el resultado incrementarlo en 1 unidad.

7)Calcular el complemento a 2 de la memoria 55 almacenando el resultado en la memoria 56.

LDA $55

EOR #&11111111

INC

STA $56

BRK

ADC. Suma el contenido de la memoria más el contenido del acumulador y el del flag C [o acarreo (`carri' para los amigos)], depositando el resultado en el acumulador y en el carri.

X

Y

X+Y

0

0

1

1

0

1

0

1

0 C=0

1 C=0

1 C=0

0 C=1

CLC. Pone el carri a 0. Su direccionamiento es implícito.

8)Sumar el contenido de la memoria 40 el valor 09 hexadecimal, guardando el resultado en la memoria 41.


LDA $40

CLC

ADC #$09

STA $41

BRK

LDA #$09

CLC

ADC $40

STA $41

BRK


9)Sumar los contenidos de las memorias 40 y 41 guardando el resultado en la 42.

LDA $40

CLC

ADC $41

STA $42

BRK

10)Programa que suma las memorias 40, 41 y 42 guardando el resultado en la 43.

LDA $40

CLC

ADC $41

CLC

ADC $42

STA $43

BRK

11)Sumar un nº de 16 bits localizado en las memorias 40 y 41 a otro nº de 16 bits localizado en las memorias 42 y 43, almacenar el resultado en las memorias 44 y 45, sabiendo que los bits más significativos se encontrarán en las memorias 41, 43 y 45.

LDA $ 40

CLC

ADC $42

STA $44

LDA $41

ADC $43

STA $45

BRK

12)Sumar el contenido del reg. X y del reg. Y, almacenando el resultado en la memoria 50.

TXA

STY $50

CLC

ADC $50

STA $50

BRK

ASL. Desplaza todos los bits del acumulador o dirección de memoria una posición a la izquierda depositando el bit más significativo en el carri y poniendo a 0 el bit menos significativo. La operación que se consigue es multiplicar por 2 el contenido de la memoria.

10010110

ASL

(1) 00101100

13)Multiplica por 8 el contenido de la memoria 57 pasando el resultado a la memoria 58.

LDA $57

CLC

ASL

ASL

ASL

STA $58

BRK

LSR. Desplaza todos los bits del acumulador o memoria direccionada, una posición a la derecha. Depositando el bit de menos peso en el carri y añadiendo un 0 al bit de más peso. La operación que se consigue es dividir por 2 el valor de la memoria.

10010110

LSR

01001011 (0)

CMP. Compara el contenido de la memoria direccionada u operando con el contenido del acumulador, para ello realiza la operación “A-(M)” y no deposita el resultado en ningún sitio, únicamente afecta a los flags N, Z y C.

CPX. Compara el contenido del operando o memoria direccionada con el registro X. Afecta a los flags N,Z y C.

CPY. Compara el contenido del operando o memoria direccionada con el registro Y.

NOP. Retiene en espera el programa durante 2 ciclos de reloj.

·Bifurcación.

Las instrucciónes siguientes, sirven para bifurcar el programa y así poder crear bucles y/o condicionamientos.

BEQ. Bifurca si el flag Z es igual a 1. Esto significa que la operación anterior ha sido igual a 0.

BNE. Bifurca si el flag X es igual a 0. Esto significa que la operación anterior ha sido distinto de 0.

JMP. Produce un salto incondicional de la secuencia del programa.

Ej:


FORMATO 1

LDX # n

BUCLE DEX

Instrucciones

a repetir

CPX #0

BNE BUCLE

BRK

FORMATO 2

LDX # 0

BUCLE INX

Instrucciones

a repetir

CPX # n

BNE BUCLE

BRK


14) Comarar la dirección de memoria 44 con el vlor 5, si es igual, poner a 0 el registro X y si no ponerlo a FF.


LDA $ 44

CMP #$ 05

BEQ IGUAL

LDX #$ FF

JMP FIN

IGUAL LDX #$ 00

FIN BRK

LDA $ 44

CMP #$ 05

BNE DISTINTO

LDX #$ 00

JMP FIN

DISTINTO LDX #$ FF

FIN BRK


15)Programa que compara la dirección de memoria 40 con la 50. Si son iguales graba el contenido de una de ellas en el registro X, si son distintas graba la 40 en el Reg. X y la 50 en el Reg. Y.

LDA $ 40

CMP $ 50

BEQ IGUAL

LDX $ 40

LDY $ 50

JMP FIN

IGUAL LDX $ 40

FIN BRK

BMI. Bifurca si el resultado de la operación anterior es negativo. Es decir, si el flag N es igual a 1.

BPL. Bifurca si el resultado de la operación anterior ha sido positivo. Es decir, si el fal N es igual a 0.

16)Comprobar si la memoria 40 es mayor que el valor 09, si lo es grabar en el Reg. X 0. Si no lo es grabar FF.


LDA $ 40

CMP #$ 09

BMI NEG

LDX LDX #$ FF

JMP FIN

NEG LDX #$ 00

FIN BRK

LDA $ 40

LDX #$ FF

CMP #$ 09

BMI NEG

JMP FIN

NEG LDX #$ 00

FIN BRK


·Direccionamiento indexado.

Absoluta $ 4205

Dirección de memoria

Pag 0 $ 42

Direccionamiento indexado.

Reg. X

Indice

Reg. Y

El direccionamiento indexado, consiste en sumar el valor del registro X o Y a una memoria específica. Por ejemplo, si la memoria indexada es “$ 4205,X” y X en ese momento tiene un valor 2(10, realmente estamos utilizando la memoria $ 4207. De esta manera conseguiremos el resultado de un bucle FOR.

17)Sumar el contenido de las direcciones de memoria comprendidas entre 0100 y 0109, poniendo el resultado en la dirección de memoria 0110.

LDA $ 0100

LDX #$ 00

BUCLE CLC

ADC $ 0101,X

INX

CPX $# 09

BNE BUBLE

STA $ 0110

BRK

SUBRUTINA.-

Es un programa específico que cumple una función determinada, que se incluye dentro de un programa principal utilizando dos comandos:

RTS. Indica el final de la subrutina y hace saltar el programa a donde se quedó antes de entrar en ella

JSR. Junto con una etiqueta, hace saltar el programa a la subrutina específica.

Ej

JSR BUCLE

BRK

BUCLE

RTS

18)Programa que desplaza una posición a la izquierda las memorias, comprendidas entre 0141 y 0165.

LDX #$ 00

BUCLE LDA $ 0141

JSR IZQ

STA $ 0141,X

INX

CPX #$ 24

BNE BUCLE

BRK

IZQ ASL

RTS

ENSAMBLADOR

1

Acumulador

Reg. X

Reg. Y