SISTEMAS DE NUMERACIÓN (T−1) CONCEPTO.−

Anuncio
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
1
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
04/2
02/2
•1
1 0 0 0 1(2
·Cambio de binario a hexadecimal.
Binario
0000
Hexadecimal
0
0001
1
0010
2
0011
3
0100
4
0101
5
0110
6
0111
7
1000
8
1001
9
1010
10−A
2
1011
11−B
1100
C
1101
D
1110
E
1111
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−0
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.
3
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.
4
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
0
Y
0
X AND Y
0
0
1
0
5
1
0
0
1
1
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
0
Y
0
X ORA Y
0
0
1
1
1
0
1
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
6
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
0
Y
0
XOR Y
0
0
1
1
1
0
1
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
0
Y
0
X+Y
0 C=0
0
1
1 C=0
1
0
1 C=0
1
1
0 C=1
CLC. Pone el carri a 0. Su direccionamiento es implícito.
7
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
8
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
9
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
10
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
11
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
12
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
13
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
14
Documentos relacionados
Descargar