Está en la página 1de 7

Pseudocódigo Operandos Ensamblador

Inicialización de variables A es un registro de datos


A ← cte A ≡ Dn MOVE.BWL #cte,Dn
o MOVEQ.BWL #cte,Dn si cte <256
A es una variable de memoria Opción 1
A: DC.BWL cte
Opción 2
A: DS.BWL 1
......
MOVE.BWL #cte, A

A es un registro de direcciones Inicialización


A ≡ An MOVEA.WL #cte,An
Inicialización del puntero An
tabla: DC.BWL valor1,valor2,...valorN
....
MOVEA.WL #tabla, An
Asignación A y B son registros de datos MOVE.BWL Dm,Dn
A ≡ Dn
A ←B B ≡ Dm
A y B son variables de memoria A: DC.BWL valorA
del mismo tamaño
B: DC.BWL valorB
....
MOVE.BWL B,A
A es un registro de direcciones y B: DC.BWL valorB
B una variable de memoria
....
A ≡ An
MOVEA.WL B,An
Asignación con puntero A es un registro de datos y B un
registro de direcciones
MOVE.BWL (Am),Dn
A ←(*B) A ≡ Dn
MOVE.BWL (Am)+,Dn
A ←(*B)+ B ≡ Am
A ← -(*B) MOVE.BWL -(Am),Dn
A es una variable de memoria y A: DC.BWL valor1
B un registro de direcciones
......
MOVE.BWL (Am),A
MOVE.BWL (Am)+,A
MOVE.BWL -(Am),A

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

Posición de memoria del MULU #K,Dc ; Dc=Dc*K donde


elemento tabla[i] = tabla + ;K=1 para B, 2 para W y 4 para L
i*tam_elem donde tam_elem es
1 para B, 2 para W, y 4 para L. MOVE.BWL #cte, 0(An,Dc.WL)
MOVE.BWL Dn, 0(An,Dc.WL)
i varía entre 0 hasta TAM-1. MOVE.BWL B, 0(An,Dc.WL)
Donde TAM es el número de
elementos de la tabla.
Asignación a un elemento de una Las variables i,j son índices Tabla: DC.BWL a00,a01,a10,a11,
tabla de dimensión NxM para los que usamos registros a20,. ....
de datos. Sean Di, Dj dichos
tabla[i][j] ← cte B: DC.BWL valorB
registros.
tabla[i][j] ← Dn ....
tabla[i][j] ← B MOVE.L #tabla, An ;Establece
Posición de memoria del
elemento tabla[i][j] = tabla + ;puntero a tabla
i*tam_elem*M + j*tam_elem;
donde tam_elem es 1 para B, 2 .....
para W, y 4 para L. MOVE.WL Di,Dc ;copia índice en Dc
MULU #K,Dc ; Dc=Di*K donde
i varía desde 0 hasta N-1 ;K=1 para B, 2 para W y 4 para L
j varía desde 0 hasta M-1 MULU #M,Dc ;Dc=Di*K*M
MOVE.WL Dj,Dd; copia índice en Dd
MULU #K,Dd ; Dd=Dj*K donde
ADD.L Dd,Dc
MOVE.BWL #cte, 0(An,Dc.WL)
MOVE.BWL Dn, 0(An,Dc.WL)
MOVE.BWL B, 0(An,Dc.WL)

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
....

También podría gustarte