Professional Documents
Culture Documents
Introduccin
Ttulo Presentacin - 2
Memoria FF FFFF
R7 R6 R5 R4 R3 R2 R1 R0
CPU Registros
R15 R14 R13 R12 R11 R10 R9 R8 PC PSW SP
(SFRs)
00 0001 00 0000
(GPRs)
00 FE00
00 FE02
I/O (SFRs)
00 FE0X
Ttulo Presentacin - 3
Memoria
Organizada en celdas de 1 BYTE (8 bits). Cul es el valor mximo que se puede almacenar en una celda? Cada byte tiene su DIRECCIN Dada en 24 bits (16 Mbytes) Cuando se habla de direcciones en clase siempre por defecto estn en hexadecimal y con 24 bits. A veces se obvian los ceros a la izquierda. Ejemplo: 00 05FF se suele escribir 5FF Se accede a la memoria usando la direccin Lectura/escritura (datos/direcciones: 1s y 0s)
Primer ejemplo Suma de dos datos en ASS 167 Suma (0x100)+(0x102) en (0x104)
En lenguaje ensamblador
Direccin inicial del programa
500 502 504 506 508 50C 50E 510
N = 5; j en 00FA00 H
E0 E0 48 AD 04 08 0D 10 11 05 05 F1 00 FA 01 FA MOV MOV CMP JMPR ADD ADD JMPR R0,#1 R1,#1 R0,#5 cc_sgt,0x510 0xfa00,R1 R0,#1 cc_uc,0x504 ; ; ; ; ; ; ; r0 (i) auxiliar if i>N then goto 512H j += 1 i += 1 salto sin condicin
Direccin de memoria
Codificacin de la instruccin
Ttulo Presentacin - 6
Notas
En Ensamblador ms largo que en C Lnea ensamblador = operacin elemental mov de un dato de memoria-registro (registromemoria) Suma dos datos Compara dos datos Saltos (con y sin condicin) Las instrucciones se almacenan en memoria en formato BINARIO (1s y 0s) Las instrucciones ocupan 2 4 bytes Las instrucciones se almacenan en posiciones de memoria CONSECUTIVAS. Se ejecutan en orden Salvo el los saltos La DIRECCIN (de memoria) de la prxima instruccin a ejecutar se almacena en el PC (Contador de Programa)
Ttulo Presentacin - 7
Fetch: Trae la instruccin de memoria, incrementa PC CPU = MEM(PC); PC++; Execute: La ALU realiza la operacin (suma, resta, etc.)
Ttulo Presentacin - 8
Programa ensamblador Traduce las instrucciones de pnemnico a binario Por ejemplo, la instruccin
MOV R0,#1
Tipos de ensambladores
De lnea: No soporta etiquetas (reside en el monitor de la tarjeta) De PC: Soporta etiquetas (reside en el PC)
Ttulo Presentacin - 9
Ejemplo con etiquetas (ensamblador en PC) Las etiquetas facilitan la programacin en ASS
Etiquetas (op)
bucle:
En PC
MOV MOV CMP JMPR ADD ADD JMPS R0,#1 R1,#1 R0,#5 cc_sgt,fin 0xfa00H,R1 R0,#1 bucle ; ; ; ; ; ; ; r0 (i) auxiliar if i>N then goto fin j += 1 i += 1 = jmpr cc_uc,
fin:
Instruccin
500 502 504 506 508 50C 50E 510 MOV MOV CMP JMPR ADD ADD JMPR
Operandos En lnea
R0,#1 R1,#1 R0,#5 cc_sgt,0x510 0xfa00,R1 R0,#1 cc_uc,0x504 ; ; ; ;
Comentarios (opcional)
r0 (i) auxiliar if i>N then goto 512H ; j += 1 ; i += 1 ; salto sin condicin
Ttulo Presentacin - 10
Nmeros
Decimal 14 Hexadecimal 0xE 0E H (0 por delante si empiezan por letra) Binario 00001110 B
Ttulo Presentacin - 11
Instruccin MOV
Directo a registro mov r0,r1 ; R0 <- R1 Inmediato mov r0,#3 ; R0 <- 3 (no olvidar # !) directo a memoria mov r0,0fa00H ; R0 <- Mem[fa00 H] Indirecto (normal, post-incremento, pre-decremento) mov r0,[r1] ; R0 <- Mem[R1] (R1 Puntero) mov r0,[r1+] ; R0 <- Mem[R1], R1 <- R1 + 2 mov r0,[-r1] ; R1 <- R1 - 2, R0 <- Mem[R1] mov r0,[r1+#4] ; R0 <- Mem[R1+#4] A nivel de byte movb rl0,#3 ; R0 <- 3 movb rh0,[r1+] ; R0 <- Mem[R1], R1 <- R1 + 1
Ttulo Presentacin - 12
Tipos de instrucciones
Aritmticas Add, Sub, Neg, Cmp, Mul add r0,r1 ; R0 <- R0 + R1 Saltos JMPR va precedido de CMP (compara), de forma que despus de comparar se realiza el salto segn una condicin.
CMP JMPR .... next: R0,R1 cc_ugt,next ;si R0 > R1
Ms ejemplos if ( )
Alto nivel
if (a == b) a = 0;
Ensamblador
MOV CMP JMPR MOV MOV next: R0,a R0,b cc_ne,next R0,#0 a,R0
Ttulo Presentacin - 14
Ensamblador
MOV MOV MOV CMP JMPR MOV ADD ADD JMPR R0,#0 R1,#1 R2,#0fa00h R0,#10 cc_sge,next [R2],R0 R0,R1 R2,#2 cc_uc, otro
otro:
next:
Ttulo Presentacin - 15
C000
Pgina 2
8000
16 Mb
S0 64Kb
16 Kb
GPRs: General Purpose Registers Registros de propsito general (R0 a R15) Son de 16 bits
Los 8 primeros registros (R0 a R7) se pueden acceder a nivel de byte (8 bits). En este caso reciben los nombres: RL0 y RH0 (para R0) Los 4 primeros registros (R0 a R3) pueden almacenar direcciones (punteros)
Ubicados en la zona (0xFC00 H a 0xFD00 H) Se puede reubicar el banco de registros (los 16) en esta zona de memoria actuando sobre el registro (SFR):
CP (Contex Pointer) (SFR) CP inicial = 0xFC00
Ttulo Presentacin - 19
R4 R3 R2 R1 R0
R3 R2 R1 R0
SFRs: Special Function Registers PSW (Processor Status Word). Contiene los flags, cdigos de condicin (para instrucciones de salto. P.e. jmpr cc_eq,dir)
N: Negative C: Carry (acarreo) V: Overflow (nmeros con signo) Z: Zero
SP (Stack Pointer)
Apunta a la zona de Stack (0xF600 a 0xFC00, crece hacia abajo).
Ttulo Presentacin - 21
Si PC = 01 0000
CSP IP
Segmentos
01
IP indica la zona del segmento en uso de las 64k posibles
0000
S1 64Kb
01 0000 00 0000
S0 64Kb
16 bits
Ttulo Presentacin - 22
Y si el dato est fuera del primer segmento? La direccin del dato tiene ms de 16bits. Por ejemplo: R0 <- Mem(0x0A7000)
MOV MOV
MOV MOV
Ttulo Presentacin - 23