Modos de Direccionamiento y Set de instrucciones Microcontroladores Freescale Familia HC(S)08 0. Modos de direccionami
Views 69 Downloads 1 File size 175KB
Modos de Direccionamiento y Set de instrucciones Microcontroladores Freescale Familia HC(S)08
0. Modos de direccionamiento Direccionamiento Inherente (INH)
La instrucción no especifica un operando (“la CPU lo conoce”), de esta manera no se necesitan datos adicionales para la ejecución de la instrucción. En general, son operaciones sobre los registros de la CPU o sobre bits. Ejemplo: CLRA
Direccionamiento Especifica el valor de una constante directamente, no la Inmediato (IMM) dirección del valor.
Indicado por el simbolo # Ejemplo: LDA #0FFH Direccionamiento Directo (DIR)
Se especifican 8 bits con la dirección del operando. El byte superior de los 16 bits de dirección se asume que es 00H. Utilizado para acceder a los primeros 256 bytes del mapa de memoria Ejemplo: LDA 50H
Direccionamiento Extendido (EXT)
Se especifican 16 bits con la direcccción del operando. Usado para acceder a posiciones de memoria mayores a 00FFH. Ejemplo: LDA 1210H
Direccionamiento Indexado sin Offset (IX)
Se especifica el contenido del Registro Indice H:X como dirección del operando Ejemplo: CLR ,X
Direccionamiento Indexado con Offset de 8 bits (IX1)
Offset de 8 bits sin signo + registro H:X sin signo = posición de memoria Registro H:X no es modificado Ejemplo: CLR 43H,X
Direccionamiento Indexado con Offset de 16 bits (IX16)
Offset de 16 bits sin signo + Registro H:X sin signo = posición de memoria Registro H:X no es modificado Ejemplo: CLR 0230H,X
Direccionamiento Indexado con el SP y Offset de 8 bits (SP1)
Offset de 8 bits sin signo + Registro SP sin signo = posición memoria Registro SP no es modificado Ejemplo: LDA 5,SP
Direccionamiento Indexado con el SP y Offset de 16 bits (SP2)
Offset de 16 bits sin signo + Registro SP sin signo = posición memoria Registro SP no es modificado Ejemplo: LDA 0500H,SP
Direccionamiento Relativo (REL)
Usado en todas las instrucciones de bifurcación condicionales Si la condición es: VERDADERA PC = PC + offset de 8 bits con signo SINO
PC no es afectado
Ejemplo: BEQ 1355H Direccionamiento Indexado sin Offset y PostIncremento (IX+)
El Registro indice H:X contiene la dirección del operando. Despues que la dirección del operando es hallada, H:X es incrementado en 1 Ejemplo: CBEQ X+,2480H
Direccionamiento Indexado con Offset de 16 bits y PostIncremento (IX1+)
Igual al direccionamiento indexado con offset de 8 bits , pero después que la dirección del operando es calculada, H:X es incrementado en 1 Ejemplo: CBEQ 50H,X+,2480H
Direccionamiento Memoria a memoria
Usado para mover información desde una posición de memoria a otra No usa ni afecta registros de la CPU (excepto cuando se usa direccionamiento indexado con post incremento) Cuatro variantes: Inmediato a Directo Directo a Directo Indexado a Directo con Post Incremento Directo a Indexado con Post Incremento
Direccionamiento Memoria a memoria Inmediato a Directo (IMD)
La Fuente es un byte valor inmediato El Destino debe estar en las primeras 256 posiciones del mapa de memoria Ejemplo: MOV #45H,67H
Direccionamiento Memoria a memoria Directo a Directo (DD)
La Fuente debe estar en las primeras 256 posiciones del mapa de memoria El Destino debe estar en las primeras 256 posiciones del mapa de memoria Ejemplo: MOV 60H,80H
Direccionamiento Memoria a memoria Indexado con PostIncremento a Directo (IX+D)
La Fuente puede ser cualquier lugar en el mapa de memoria El Destino debe estar en las primeras 256 posiciones del mapa de memoria Despues que la dirección del operando es hallada, H:X es incrementado en 1
Direccionamiento Memoria a memoria Directo a Indexado con PostIncremento (DIX+)
La Fuente debe estar en las primeras 256 posiciones del mapa de memoria
Ejemplo: MOV X+,25H
El Destino puede ser cualquier lugar en el mapa de memoria Despues que la dirección del operando es hallada, H:X es incrementado en 1 Ejemplo: MOV 75H,X+
1. Instrucciones Aritméticas ADC #opr8 ADC opr8 ADC opr16 ADC ,X ADC opr8,X ADC opr16,X ADC opr8,SP ADC opr16,SP
Suma con acarreo
A = A + C + opr8 A = A + C + (opr8) A = A + C + (opr16) A = A + C + (HX) A = A + C + (opr8 + HX) A = A + C + (opr16 + HX) A = A + C + (opr8 + SP) A = A + C + (opr16 + SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed, no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with bit offset (SP2) SP with bit offset
Suma sin acarreo
A = A + opr8 A = A + (opr8) A = A + (opr16) A = A + (HX) A = A + (opr8 + HX) A = A + (opr16 + HX) A = A + (opr8 + SP) A = A + (opr16 + SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed, no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with bit offset (SP2) SP with bit offset
AIS #opr8
Suma entre valor Inmediato con signo y SP
SPH:SPL = SPH:SPL + opr8
(IMM) 8 bit immediate
AIX #opr8
Suma entre valor Inmediato con signo y H:X
H:X = H:X + opr8
(IMM) 8 bit immediate
ADD #opr8 ADD opr8 ADD opr16 ADD ,X ADD opr8,X ADD opr16,X ADD opr8,SP ADD opr16,SP
(DIR) 8 bit direct (IX) indexed no offset (IX1) indexed, 8 bit offset (SP1) SP with 8 bit offset
ASLA
C (opr8) 0 Corrimiento Aritmético C (HX) 0 a la izquierda C (opr8 + HX) 0 C (opr8 + SP) 0 Corrimiento Aritmético C A 0 a la izquierda de A
ASLX
Corrimiento Aritmético C X 0 a la izquierda de X
(INH) inherent mode
ASR opr8 ASR ,X ASR opr8,X ASR opr8,SP
(DIR) 8 bit direct (IX) indexed, no offset (IX1) indexed, 8 bit offset (SP1) SP with 8 bit offset
ASRA
M7 (opr8) C Corrimiento Aritmético M7 (HX) C a la derecha M7 (opr8 + HX) C M7 (opr8 + SP) C Corrimiento Aritmético A7 A C a la derecha de A
ASRX
Corrimiento Aritmético X7 X C a la derecha de X
(INH) inherent mode
ASL opr8 ASL ,X ASL opr8,X ASL opr8,SP
CMP #opr8 CMP opr8 CMP opr16 CMP ,X CMP opr8,X CMP opr16,X CMP opr8,SP CMP opr16,SP
Comparar el Acumulador con Memoria
A - opr8 A - (opr8) A - (opr16) A - (HX) A - (opr8 + HX) A - (opr16 + HX) A - (opr8 + SP) A - (opr16 + SP)
(INH) inherent mode
(INH) inherent mode
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP, 8 bit offset (SP2) SP, 16 bit offset
CPHX #opr16 CPHX opr16 CPX #opr8 CPX opr8 CPX opr16 CPX ,X CPX opr8,X CPX opr16,X CPX opr8,SP CPX opr16,SP DAA DEC opr8 DEC ,X DEC opr8,X DEC opr8,SP
Comparar H:X con Memoria
Comparar Registro X con Memoria
Ajuste Decimal de Acumulador Decrementar
HX - opr16 HX - (opr16)
(IMM) 16 bit immediate (DIR) direct, 16 bit data
X - opr8 X - (opr8) X - (opr16) X - (HX) X - (opr8+HX) X - (opr16+HX) X - (opr8+SP) X - (opr16+SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP, 8 bit offset (SP2) SP, 16 bit offset
A10
(INH) inherent addressing
(opr8) = (opr8) – 1 (HX) = (HX) – 1 (opr8+HX)=(opr8+HX)–1 (opr8+SP)=(opr8+SP) – 1
(DIR) 8 bit direct (IX) indexed,no offset (IX1) indexed,8 bit offset (SP1) SP with 8 bit offset
DECA
Decrementar A
A= A- 1
(INH) inherent mode
DECX
Decrementar X
X=X-1
(INH) inherent mode
División
A = H:A X
DIV INC opr8 INC ,X INC opr8,X INC opr8,SP
Incrementar
H = Residuo
(opr8) = (opr8)+ 1 (HX) = (HX) + 1 (opr8+HX)=(opr8+HX)+1 (opr8+SP) = (opr8+SP)+ 1
(INH) inherent addressing (DIR) 8 bit direct (IX) indexed no offset (IX1) indexed,8 bit offset (SP1) SP with 8 bit offset
INCA
Incrementar A
A= A+ 1
(INH) inherent mode
INCX
Incrementar X
X=X+1
(INH) inherent mode
MUL
Multiplicación
X:A = A * X
(INH) inherent addressing
NSA
Nibble Swap Accumulator
A = A[3:0]:A[7:4]
(INH) inherent addressing
A = A - C - opr8 A = A - C - (opr8) A = A - C - (opr16) A = A - C - (HX) A = A - C - (opr8+HX) A = A - C - (opr16+HX) A = A - C - (opr8+SP) A = A - C - (opr16+SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed 8 bit offset (IX2) indexed 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
A = A - opr8 A = A - (opr8) A = A - (opr16) A = A - (HX) A = A - (opr8+ HX) A = A - (opr16+ HX) A = A - (opr8+ SP) A = A - (opr16+ SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
(opr8) - $00 (HX) - $00 (opr8+HX) - $00
(DIR) 8 bit direct (IX) indexed no offset (IX1) indexed 8 bit offset
SBC #opr8 SBC opr8 SBC opr16 SBC ,X SBC opr8,X SBC opr16,X SBC opr8,SP SBC opr16,SP SUB #opr8 SUB opr8 SUB opr16 SUB ,X SUB opr8,X SUB opr16,X SUB opr8,SP SUB opr16,SP TST opr8 TST ,X TST opr8,X
Resta con Préstamo
Resta
Test for Negative or Zero
2. Instrucciones Lógicas AND #opr8 AND opr8 AND opr16 AND ,X AND opr8,X AND opr16,X AND opr8,SP AND opr16,SP BIT #opr8 BIT opr8 BIT opr16 BIT ,X BIT opr8,X BIT opr16,X BIT opr8,SP BIT opr16,SP COM opr8 COM ,X COM opr8,X COM opr8,SP COMA
Función Lógica AND
Bit Test
Complemento a uno
A = A & opr8 A = A & (opr8) A = A & (opr16) A = A & (HX) A = A & (opr8 + HX) A = A & (opr16 + HX) A = A & (opr8 + SP) A = A & (opr16 + SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed, no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with8 bit offset (SP2) SP with 16 bit offset
A & opr8 A & (opr8) A & (opr16) A & (HX) A & (opr8 + HX) A & (opr16 + HX) A & (opr8 + SP) A & (opr16 + SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
(DIR) 8 bit direct (IX) indexed no offset (opr8+HX)=$FF-(opr8+HX) (IX1) indexed,8 bit offset (opr8+SP)=$FF-(opr8+SP) (SP1) SP, 8 bit offset (opr8) = $FF - (opr8) (HX) = $FF - (HX)
Complemento a uno de A A = $FF - A
(INH) inherent addressing
COMX
Complemento a uno de X X = $FF - X
(INH) inherent addressing
EOR #opr8 EOR opr8 EOR opr16 EOR ,X EOR opr8,X EOR opr16,X EOR opr8,SP EOR opr16,SP
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
LSLA
A = A opr8 A = A (opr8) A = A (opr16) OR Exclusiva entre A = A (HX) Acumulador y Memoria A = A (opr8+ HX) A = A (opr16+ HX) A = A (opr8+ SP) A = A (opr16+ SP) C (opr8) 0 Corrimiento Lógico a la C (HX) 0 Izquierda C (opr8+ HX) 0 C (opr8+ SP) 0 Corrimiento Lógico a la C A 0 Izquierda de A
LSLX
Corrimiento Lógico a la C X 0 Izquierda de X
(INH) inherent addressing
LSR opr8 LSR ,X LSR opr8,X LSR opr8,SP
0 (opr8) C Corrimiento Lógico a la 0 (HX) C Derecha 0 (opr8+HX) C 0 (opr8+SP) C Corrimiento Lógico a la 0 A C Derecha de A
(DIR) 8 bit direct (IX) indexed no offset (IX1) indexed, 8 bit offset (SP1) SP with 8 bit offset
LSL opr8 LSL ,X LSL opr8,X LSL opr8,SP
LSRA LSRX
Corrimiento Lógico a
0 X C
(DIR) 8 bit direct (IX) indexed no offset (IX1) indexed, 8 bit offset (SP1) SP with 8 bit offset (INH) inherent addressing
(INH) inherent addressing (INH) inherent addressing
NEG opr8 NEG ,X NEG opr8,X NEG opr8,SP
Complemento a Dos
(DIR) 8 bit direct (IX) indexed no offset (opr8+HX) = $00- (opr8+HX) (IX1) indexed,8 bit offset (opr8+SP)=$00-(opr8+SP) (SP1) SP with 8 bit offset (opr8) = $00 - (opr8) (HX) = $00 - (HX)
NEGA
Complemento a Dos de A A = $00 – A
(INH) inherent addressing
NEGX
Complemento a Dos de X X = $00 – X
(INH) inherent addressing
ORA #opr8 ORA opr8 ORA opr16 ORA ,X ORA opr8,X ORA opr16,X ORA opr8,SP ORA opr16,SP
A = A or opr8 A = A or (opr8) A = A or (opr16) OR entre Acumulador y A = A or (HX) Memoria A = A or (opr8+HX) A = A or (opr16+HX) A = A or (opr8+SP) A = A or (opr16+SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed/8 bit offset (IX2) indexed/16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
ROL opr8 ROL ,X ROL opr8,X ROL opr8,SP ROLA ROLX
Rotación a la izquierda a través del Acarreo
C (opr8) C C (HX) C C (opr8+ HX) C C (opr8+ SP) C
(DIR) 8 bit direct (IX) indexed no offset (IX1) indexed 8 bit offset (SP1) SP with 8 bit offset
Rotación a la izquierda del Acumulador a través del Acarreo
C A C
(INH) inherent addressing
Rotación a la izquierda de X a través del Acarreo
CXC
(INH) inherent addressing
ROR opr8 ROR ,X ROR opr8,X ROR opr8,SP RORA RORX
C (opr8) C Rotación a la derecha a C (HX) C través del Acarreo C (opr8+ HX) C C (opr8+ SP) C Rotación a la derecha del Acumulador a través C A C del Acarreo Rotación a la derecha de X a través del Acarreo
CXC
(DIR) 8 bit direct (IX) indexed no offset (IX1) indexed 8 bit offset (SP1) SP with 8 bit offset (INH) inherent addressing (INH) inherent addressing
3. Instrucciones de transferencia de datos CLR opr8 CLR ,X CLR opr8,X CLR opr8,SP
Borrar
(opr8) = 0 (HX) = 0 (opr8 + HX) = 0 (opr8 + SP) = 0
(DIR) 8 Bit Direct (IX) indexed, no offset (IX1) indexed, 8 bit offset (SP1) SP, 8 bit offset
CLRA
Borrar Acumulador
A= 0
(INH) inherent addressing
CLRH
Borrar Registro Indice H
H=0
(INH) inherent addressing
CLRX
Borrar Registro Indice X
X=0
(INH) inherent addressing
LDA #opr8 LDA opr8 LDA opr16 LDA ,X LDA opr8,X LDA opr16,X LDA opr8,SP LDA opr16,SP
Cargar el Acumulador
A = opr8 A = (opr8) A = (opr16) A = (HX) A = (opr8+ HX) A = (opr16+ HX) A = (opr8+ SP) A = (opr16+ SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
LDHX #opr16 LDHX opr16
Cargar H:X
HX = opr16 HX = (opr16: opr16+1)
(IMM) 16 bit immediate (DIR) direct 16 bit data
LDX #opr8 LDX opr8 LDX opr16 LDX ,X LDX opr8,X LDX opr16,X LDX opr8,SP LDX opr16,SP MOV #opr8_1,opr8_2 MOV opr8_1,opr8_2 MOV X+,opr8
Cargar X
Mover Byte
MOV opr8,X+
PSHA
X = opr8 X = (opr8) X = (opr16) X = (HX) X = (opr8+ HX) X = (opr16+ HX) X = (opr8+ SP) X = (opr16+ SP)
(IMM) 8 bit immediate (DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
(opr8_1) = opr8_2
(IMD) immediate-direct
(opr8_2) = (opr8_1)
(DD) direct to direct
(opr8) = (HX) HX = HX + 1 (HX) = (opr8) HX = HX + 1
(IX+D) indexed to direct with post increment (DIX+) direct to indexed with post increment
Guardar el Acumulador Push A to stack de la pila SP = SP - 1
(INH) inherent addressing
PSHH
Guardar H en la pila
Push H to stack SP = SP - 1
(INH) inherent addressing
PSHX
Guardar X en la pila
Push X to stack SP = SP - 1
(INH) inherent addressing
PULA
Sacar Acumulador de la SP = SP + 1 pila Pull A
(INH) inherent addressing
PULH
Sacar H de la pila
SP = SP + 1 Pull H
(INH) inherent addressing
PULX
Sacar X de la pila
SP = SP + 1 Pull X
(INH) inherent addressing
Inicializar SP
SPL = $FF
(INH) inherent addressing
RSP STA opr8 STA opr16 STA ,X STA opr8,X STA opr16,X STA opr8,SP STA opr16,SP STHX opr8 STX opr8 STX opr16 STX ,X STX opr8,X STX opr16,X STX opr8,SP STX opr16,SP TAP
(opr8) = A (opr16) = A (HX) = A Almacenar Acumulador (opr8+ HX) = A en Memoria (opr16+ HX) = A (opr8+ SP) = A (opr16+ SP) = A Almacenar H:X en Memoria
Almacenar X en Memoria
(DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
(opr8:opr8+1) = HX
(INH) inherent addressing
(opr8) = X (opr16) = X (HX) = X (opr8+ HX) = X (opr16+ HX) = X (opr8+ SP) = X (opr16+ SP) = X
(DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset (SP1) SP with 8 bit offset (SP2) SP with 16 bit offset
Transfer Accumulator to CCR = A CCR
(INH) inherent addressing
TAX
Transfer Accumulator to X = A Index Register X
(INH) inherent addressing
TPA
Transfer CCR to Accumulator
TSX
Transfer Stack Pointer to Index Register H:X
TXA
Transfer Index Register A = X X to Accumulator
(INH) inherent addressing
TXS
Tansfer Index Register H:X to Stack Pointer
(INH) inherent addressing
A = CCR
(INH) inherent addressing
H:X = SPH:SPL
(INH) inherent addressing
SPH:SPL = H:X
4. Instrucciones de Salto 4.1 Saltos Incondicionales
JMP opr8 JMP opr16 JMP ,X JMP opr8,X JMP opr16,X
Salto Incondicional
PC = opr8 PC = opr16 PC = (HX) PC = (opr8+HX) PC = (opr16+HX)
(DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset
4.2 Saltos Condicionales (Bifurcaciones) BCC rel
Bifurcar si Acarreo = 0
If C = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BCS rel
Bifurcar si Acarreo = 1
If C = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BEQ rel
Bifurcar si es igual
If Z = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BGE rel
Bifurcar si es (operandos con signo)
BGT rel
Bifurcar si es > (operandos con signo)
If (N V) = 0 then Branch
Branch = PC + 2 + rel
(REL) relative addressing
If (Z & (N V)) = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BHCC rel
Bifurcar si Acarreo Intermedio = 0
If H = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BHCS rel
Bifurcar si Acarreo Intermedio = 1
If H = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BHI rel
Bifurcar si está por encima
If (C & Z) = 0 then Branch (REL) relative addressing Branch = PC + 2 + rel
BHS rel
Bifurcar si esta por encima o es igual
If C = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BIH rel
If IRQ = 1 then Branch Bifurcar si Pin IRQ = 1 Branch = PC + 2 + rel
(REL) relative addressing
BIL rel
Bifurcar si Pin IRQ = 0
If IRQ = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BLE rel
Bifurcar si es (operandos con signo)
If (Z & (N V)) = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BLO rel
Bifurcar si está por debajo
If C = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BLS rel
Bifurcar si esta por debajo o es igual
If (C & Z) = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BLT rel
Bifurcar si es < (operandos con signo)
If (N V) = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BMC rel
Bifurcar si Máscara de Interrupción = 0
If I = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BMI rel
Bifurcar si negativo
If N = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BMS rel
Bifurcar si Máscara de Interrupción = 1
If I = 1 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BNE rel
Bifurcar si no es igual
If Z = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
BPL rel
Bifurcar si es positivo
BRA rel
Bifurcar Siempre
BRCLR n,opr8,rel
Bifurcar si Bit n en Memoria = 0
BRN rel BRSET n,opr8,rel
Nunca bifurcar Bifurcar si Bit n en Memoria = 1
If N = 0 then Branch Branch = PC + 2 + rel
(REL) relative addressing
PC = PC + 2 + rel
(REL) relative addressing
If Mn = 0 then Branch Branch = PC + 3 + rel
(DIR) 1 bit Direct
PC = PC + 2
(REL) relative addressing
If Mn = 1 then Branch Branch = PC + 3 + rel
(DIR) 1 bit Direct
4.3 Saltos Especiales CBEQ opr8,rel
CBEQ X+,rel
CBEQ opr8,X+,rel
Compara y salta si es Igual
If A- (opr8) = 0 then Branch Branch = PC + 3 + rel
(DIR) 8 Bit Direct
If A - (HX) = 0 then Branch Branch = PC + 2 + rel HX = HX + 1
(IX+) indexed with post increment
If A - (opr8 + HX) = 0 then Branch Branch = PC + 2 + rel HX = HX + 1
(IX1+) indexed, 8 bit offset with post increment
If A - (opr8 + SP) = 0 then (SP1) Stack with 8 bit Branch offset Branch = PC + 4 + rel
CBEQ opr8,SP,rel
CBEQA #opr8,rel
Compara con el valor inmediato y salta si es Igual
If A - opr8 = 0 then Branch Branch = PC + 3 + rel
(IMM) 8 Bit Immediate
CBEQX #opr8,rel
Compara con el valor inmediato y salta si es Igual
If X - opr8 = 0 then Branch Branch = PC + 3 + rel
(IMM) 8 Bit Immediate
(DIR) direct mode
DBNZ opr8,rel
(opr8) = (opr8) – 1 If (opr8) 0 then Branch Branch = PC + 3 + rel
(IX) indexed, no offset
DBNZ X,rel
(HX) = (HX) – 1 If (HX) 0 then Branch Branch = PC + 3 + rel (opr8+HX) = (opr8+HX) – 1
(IX1) indexed,8-bit offset
DBNZ opr8,X,rel
Decrementar y bifurcar si 0
If (opr8+HX) 0 then Branch Branch = PC + 4 + rel (opr8+SP) = (opr8+SP) - 1 If (opr8+SP) 0 then Branch Branch = PC + 4 + rel
DBNZ opr8,SP,rel
(SP1) SP , 8-bit offset
DBNZA rel
Decrementar el Acumulador y bifurcar si 0
A= A- 1 If A 0 then Branch Branch = PC + 2 + rel
(INH) inherent mode
DBNZX rel
Decrementar X y bifurcar si 0
X=X–1 If X 0 then Branch Branch = PC + 2 + rel
(INH) inherent mode
5. Instrucciones de llamado y retorno de subrutinas BSR rel
JSR opr8 JSR opr16 JSR ,X JSR opr8,X JSR opr16,X
RTI
RTS
Bifurcar a Subrutina
Salto a subrutina
PC = PC + 2 Push PCL SP = SP - 1 Push PCH SP = SP – 1 PC = PC + rel
(REL) relative mode
PC = opr8 PC = opr16 PC = (HX) PC = (opr8 + HX) PC = (opr16 + HX)
(DIR) 8 bit direct (EXT) 16 bit extended (IX) indexed no offset (IX1) indexed, 8 bit offset (IX2) indexed, 16 bit offset
SP = SP + 1 Pull CCR SP = SP + 1 Pull A Retorno de Interrupción SP = SP + 1 Pull X SP = SP + 1 Pull PCH SP = SP + 1 Pull PCL Retorno de Subrutina
SP = SP + 1 Pull PCH SP = SP + 1 Pull PCL
(INH) inherent addressing
(INH) inherent addressing
6. Instrucciones a nivel de bit BCLR n,opr8
Borrar Bit n en Memoria
Mn 0; (n = 0,1,..7) M(opr8) can be any RAM or I/O register address
(DIR) 1 bit direct
BSET n,opr8
Hacer Bit n =1 en Memoria
Mn