Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Pseudo2ensambladormc68000 PDF
Pseudo2ensambladormc68000 PDF
1
Pseudocódigo Operandos Ensamblador
Asignación a un elemento de una El destino es un elemento de la Tabla: DC.BWL valor1,valor2,.....
tabla memoria y el fuente una
B: DC.BWL valorB
constante, un registro de datos
tabla[i] ← cte
o una variable de memoria. La ....
tabla[i] ← Dn variable i es un índice que
generalmente será un registro MOVE.L #tabla, An ;Establece
tabla[i] ← B de datos. Sea el índice i el ;puntero a tabla
registro Di. Si i< 64k se usará
Di.W si i>64K se usará Di.L .....
MOVE.WL Di,Dc ;copia índice en Dc
2
Pseudocódigo Operandos Ensamblador
Operaciones aritméticas A es un registro de datos Opción 1
A ← A ± cte A ≡ Dn ADD.BWL #cte,Dn
SUB.BWL #cte,Dn
Opción 2
ADDI.BWL #cte,Dn
SUBI.BWL #cte,Dn
Opción 3
ADDQ.BWL #cte,Dn
SUBQ.BWL #cte,Dn
Si cte =1..8
A es una variable de memoria A: DC.BWL valorA
.....
ADDI.BWL #cte,A
SUBI.BWL #cte,A
Operaciones aritméticas A y B son variables de memoria A: DC.BWL valorA
y del mismo tamaño
A←A±B B: DC.BWL valorB
....
MOVE.BWL B,Dn
ADD.BWL Dn,A
(SUB.BWL Dn,A)
Operaciones aritméticas (MUL) A y B son variables de memoria A: DC.W valorA
C←A* B B: DC.W valorB
C: DS.L 1
....
MOVE.W A,Dn
MOVE.W B,Dm
MULU Dm,Dn
(MULS Dm,Dn)
MOVE.L Dn,C
3
Pseudocódigo Operandos Ensamblador
Operaciones aritméticas (DIV) A y B son variables de memoria A: DC.L valorA
Coc ← A / B B: DC.W valorB
Res ← A % B Coc: DS.W 1
Res: DS.W 1
....
MOVE.L A,Dn
MOVE.W B,Dm
DIVU Dm,Dn
(DIVUS Dm,Dn)
MOVE.W Dn,Coc
SWAP Dn
MOVE.W Dn,Res
De empaquetamiento A y B son variables de memoria 1)
sin signo
1) B[15:0] ← A[7:0] A: DC.B valorA
2) B[31:0] ← A[15:0] B: DS.W 1
...
CLR.W Dn
MOVE.B A,Dn
MOVE.W Dn,B
2)
A: DC.W valorA
B: DS.L 1
...
CLR.L Dn
MOVE.W A,Dn
MOVE.L Dn,B
A y B son variables de memoria 1)
con signo
A: DC.B valorA
B: DS.W 1
...
MOVE.B A,Dn
EXT.W Dn,B
2)
A: DC.W valorA
B: DS.L 1
...
MOVE.W A,Dn
EXT.L Dn,B
4
Pseudocódigo Operandos Ensamblador
Sentencias de control: Bucle FOR La variable i está en memoria y i: DC.BWL valor1
su tamaño y consideración (con
For i=valor1 to valor2 step inc ...
signo o sin signo) depende de
Cuerpo del bucle valor1 y valor2. Tanto valor1 buclefor: CMPI.BWL #valor2,i
como valor2 e inc son
end for constantes. BHI finbuclefor
ADDI.BWL #inc,i
cuerpo del bucle
BRA buclefor
finbuclefor:
........
Condiciones A y B son variables de memoria A: DC.BWL valorA
con o sin signo y del mismo
A>B B: DC.BWL valorB
tamaño.
A >= B ....
A<B (para todas)
A <= B MOVE.BWL A,Dn
A==B CMP.BWL B,Dn
A<>B (para A>B)
BHI ;sin signo
( BGT) ;con signo
(para A>=B)
BCC ;sin signo
( BGE) ;con signo
...(ver tabla en documentación)
A es una variable de memoria y A: DC.BWL valorA
B una constante del mismo
....
tamaño.
(para todas)
CMPI.BWL #B,A
(para A>B)
BHI ;sin signo
( BGT) ;con signo
...(ver tabla en documentación)
5
Pseudocódigo Operandos Ensamblador
Sentencias de control: Bucle Ejemplos: A: DC.BWL valorA
WHILE
While(A ==B) B: DC.BWL valorB
While(condicion)
cuerpo ....
cuerpo de while
end while while1:
end while
MOVE.BWL A,Dn
While(A >=B) CMP.BWL B,Dn
cuerpo BNE finwhile1
end while cuerpo
BRA while1
finwhile1 ...
donde A y B son variables de while2:
memoria con signo.
MOVE.BWL A,Dn
CMP.BWL B,Dn
BLT finwhile2
cuerpo
BRA while2
finwhile2: ...
Sentencias de control: DO ... Ejemplos: A: DC.BWL valorA
WHILE
do B: DC.BWL valorB
do
cuerpo ....
cuerpo
While(A <B) dowhile1:
while(condicion)
cuerpo
do MOVE.BWL A,Dn
cuerpo CMP.BWL B,Dn
While(A == B) BCS dowhile1
dowhile2:
donde A y B son variables de cuerpo
memoria del mismo tamaño y
MOVE.BWL A,Dn
sin signo
CMP.BWL B,Dn
BEQ dowhile2
6
Pseudocódigo Operandos Ensamblador
Sentencias de control: IF..ELSE Ejemplos A: DC.BWL valorA
If (condicion) if (A <=B) B: DC.BWL valorB
cuerpo1 cuerpo1 ....
else else if1:
MOVE.BWL A,Dn
cuerpo2 cuerpo2
CMP.BWL B,Dn
endif end if BHI else1
cuerpo1
BRA finif1
else1:
cuerpo2
if (A <>B) finif1: .....
cuerpo1
if2:
else MOVE.BWL A,Dn
cuerpo2 CMP.BWL B,Dn
BEQ else2
end if cuerpo2
BRA finif2
else2:
donde A y B son variables de cuerpo2
memoria del mismo tamaño y finif2: .....
sin signo
Llamada a subrutinas A,B y C son variables de A: DC.WL valorA
memoria. Los argumentos se
B: DC.WL valorB
pasan por PILA.
C← funcion ( A,B) C: DS.WL 1
...
Sea tamA = 2 o 4 según A sea W
o L Igualmente se definen tamB MOVE.WL A,-(A7)
y tamC.
MOVE.WL B,-(A7)
MOVE.WL C,-(A7)
BSR funcion
MOVE.WL -(A7),C
ADDA.WL #K,A7
;donde K= tamA + tamB
Construcción de subrutinas Codificación Funcion:
subr funcion ( A,B) dev C Cuerpo
cuerpo funcion endfuncion: RTS
end subr funcion
Acceso a variables La variable C se encuentra en la
dirección 4(A7)
Sea tamA = 2 o 4 según A sea W
o L Igualmente se definen tamB La variable B en la dirección dirB(A7)
y tamC. donde dirB=tamC+4
La variable A en la dirección dirA(A7)
donde dirA= tamC+tamB+4
....