-(410) y -B(414)
Resta 2 números binarios o BCD de 16 bits.
Mi: Palabra del Minuendo.
Su: Palabra del Sustraendo.
R: Palabra del resultado.
El rango para +(400) es de -32.768 a 32.767.Para +B(404) es de 0000 a 9999.
Si el resultado es negativo, el acarreo se activa y el complemento a 10 del resultado actual es puesto en R
(Gp:) -B(414)
Mi
Su
R
(Gp:) -(410)
Mi
Su
R
+, – Ejemplo
(Gp:) +(400)
D00000
D00001
D00100
(Gp:) -(410)
D00000
D00001
D00100
(Gp:) D00000 0000 0000 0110 0000 96
D00001 0000 0000 0010 0000 32
D00100 0000 0000 1000 0000 128
D00100 0000 0000 0100 0000 64
+B, -B Ejemplo
(Gp:) +B(404)
D00000
D00001
D00100
(Gp:) -B(414)
D00000
D00001
D00100
(Gp:) D00000 0000 0000 0110 0000 60
D00001 0000 0000 0010 0000 20
D00100 0000 0000 1000 0000 80
D00100 0000 0000 0100 0000 40
0 0 6 0
0 0 8 0
0 0 4 0
0 0 2 0
OPERACIONES ARITMETICAS (CS1)/2
*(420), *L(421), *U(422), *UL(423) – Multiplicación Binaria
*B(424), *BL(425) – Multiplicación BCD
*F(456) – Multiplicación Coma Flotante
*D(847) – Multiplicación en coma flotante doble
/(430), /L(431), /U(432), /UL(433) – División Binaria
/B(434), /BL(435) – División BCD
/F(457) – División Coma Flotante
/D(848) – División en coma flotante doble
*(420) y *B(424)
Multiplica 2 números binarios o BCD de 16 bits.
Md: Palabra del Multiplicando.
Mr: Palabra del Multiplicador.
R: Palabra del Resultado.
El resultado ocupa dos Palabras R y R+1
(Gp:) *B(424)
Md
Mr
R
(Gp:) *(420)
Md
Mr
R
/(430) y /B(434)
Multiplica números binarios o BCD de 16 bits.
Dd: Primera palabra del Dividendo.
Dr: Primera palabra del Divisor.
R: Primera palabra del Resultado.
El resultado ocupa dos Palabras R y R+1
Palabra R: CocientePalabra R+1: Resto
(Gp:) /B(434)
Dd
Dr
R
(Gp:) /(430)
Dd
Dr
R
*, / Ejemplo
(Gp:) *(420)
D00000
D00001
D00100
(Gp:) /(430)
D00000
D00001
D00100
(Gp:) D00000 0000 0000 0110 0000 96
D00001 0000 0000 0010 0000 32
(Gp:) D00100 0000 1100 0110 0000 3072
D00101 0000 0000 0000 0000 0
(Gp:) D00100 0000 0000 0000 0011 3
D00101 0000 0000 0010 0000 0
*B, /B Ejemplo
(Gp:) *B(424)
D00000
D00001
D00100
(Gp:) /B(434)
D00000
D00001
D00100
(Gp:) D00000 0000 0000 0110 0000 60
D00001 0000 0000 0010 0000 20
(Gp:) D00100 0001 0010 0000 0000 1200
D00101 0000 0000 0000 0000 0
(Gp:) D00100 0000 0000 0000 0011 3
D00101 0000 0000 0010 0000 0
0 0 6 0
1 2 0 0
0 0 0 3
0 0 2 0
Instrucciones enComa Flotante
SubNúmeros reales en coma flotante.
Números en Coma Flotante
Se pueden expresar los números:
-? (e=255, f=0, s=0)
-3.402823·1038 ÷ -1.175494·10-38
0 (e=0)
1.175494·10-38 ÷ 3.402823·1038
? (e=255, f=0, s=1)
NaN (e=255, f?0): Número no válido.
No es necesario conocer el formato de estos números, sólo que ocupan 32 bits.
Precauciones Coma Flotante
Las operaciones indeterminadas 0.0/0.0, ?/?, ?-? dan como resultado NaN.
Overflow (±?) y Underflow (±0). Es más peligroso el Overflow al convertir el resultado a entero (binario con signo).
Los decimales se truncan al convertirlos a entero (binario con signo).
Cualquier operación con un NaN como operando da como resultado NaN.
IEEE754
Expresan números reales en 32 bits conforme al estándar IEEE754:
f: Mantisa 23 bits bit 0 al 22
e: Exponente 8 bits bit 23 al 30
s: Signo 1 bit bit 31
(-1)s·2e-127·(1+f·2-23)
1#10000000#11000000000000000000000
Signo: (-1)1= -1
Exponente: 2128-127=21=2
Mantisa: 1+6291456·2-23=1+0.75=1.75
Resultado: -1.75·2= -3.5
Instrucciones Coma Flotante
Se pueden realizar las siguientes:
Conversión: FIX, FIXL, FLT, FLTL
Operaciones: +F, -F, *F, /F, SQRT, PWR
Conversiones angulares: RAD, DEG
Angulares: SIN, COS, TAN, ASIN, ACOS, ATAN
En base e: LOG, EXP
Los operandos deben ser Nos en formato coma flotante IEEE754.
No es necesario conocer este formato, sólo que ocupan 32 bits.
FIX(450)
Convierte un número en coma flotante a un entero (binario con signo) de 16 bits.
S: Primera palabra de número en coma flotante.
R: Palabra donde se guarda el resultado.
La parte decimal es truncada (3.5 ? 3)
Rango de -32.768 ÷ 32.767.
(Gp:) FIX(450)
S
R
(Gp:) @FIX(450)
S
R
FIXL(451)
Convierte un número en coma flotante a un entero (binario con signo) de 32 bits.
S: Primera palabra de número en coma flotante.
R: Primera palabra donde se guarda el resultado.
La parte decimal es truncada (-3.5 ? -3)
Rango de -2.147.482.648÷2.147.482.647.
(Gp:) FIXL(451)
S
R
(Gp:) @FIXL(451)
S
R
FIX, FIXL Ejemplo
(Gp:) FIXL(451)
D00002
D00102
(Gp:) FIX(450)
D00000
D00100
-58.720.256
(Gp:) D00000 0000000000000000
D00001 0100000001100000
D00100 0000000000000011
(Gp:) D00002 0000000000000000
D00003 1100110001100000
D00102 0000000000000000
D00103 1111110010000000
3.5
3
-58.720.256
FLT(452)
Convierte un número entero (binario con signo) de 16 bits en formato de coma flotante de 32 bits.
S: Palabra del número entero.
R: Primera palabra del resultado.
Rango de -32.768 ÷ 32.767.
(Gp:) FLT(452)
S
R
(Gp:) @FLT(452)
S
R
FLTL(453)
Convierte un número entero (binario con signo) de 32 bits en formato de coma flotante de 32 bits.
S: Primera palabra del número entero.
R: Primera palabra del resultado.
Rango de -2.147.482.648÷2.147.482.647.
Números > 16.777.215 pierden precisión.
(Gp:) FLTL(453)
S
R
(Gp:) @FLTL(453)
S
R
FLT, FLTL Ejemplo
(Gp:) FLTL(453)
D00102
D00002
(Gp:) FLT(452)
D00100
D00000
-58.720.256
(Gp:) D00000 0000000000000000
D00001 0100000001000000
D00100 0000000000000011
(Gp:) D00002 0000000000000000
D00003 1100110001100000
D00102 0000000000000000
D00103 1111110010000000
3
3
-58.720.256
+F(454)
Suma 2 números en coma flotante de
32 bits.
Au: Primera palabra del primer sumando.
Ad: Primera palabra del segundo sumando.
R: Primera palabra del resultado.
El resultado puede ser ?, -?, 0, NaN.
Tener en cuenta: ? – ? = NaN y que NaN+número=NaN.
(Gp:) @+F(454)
Au
Ad
R
(Gp:) +F(454)
Au
Ad
R
-F(455)
Resta 2 números en coma flotante de
32 bits.
Mi: Primera palabra del Minuendo.
Su: Primera palabra del Sustraendo.
R: Primera palabra del resultado.
El resultado puede ser ?, -?, 0, NaN.
Tener en cuenta: ? – ? = NaN y que
NaN-número=NaN, número-NaN=NaN.
(Gp:) @-F(455)
Mi
Su
R
(Gp:) -F(455)
Mi
Su
R
+F, -F Ejemplo
(Gp:) +F(454)
D00000
D00002
D00100
(Gp:) -F(455)
D00000
D00002
D00100
(Gp:) D00100 0000 0000 0000 0000
D00101 1100 0000 0010 0000 -2.5
(Gp:) D00000 0000 0000 0000 0000
D00001 0100 0000 0110 0000 3.5
D00002 0000 0000 0000 0000
D00003 0100 0000 1100 0000 6
(Gp:) D00100 0000 0000 0000 0000
D00101 0100 0001 1110 0000 9.5
3.5
– 6
3.5
+6
*F(456)
Multiplica 2 números en coma flotante
de 32 bits.
Md: Primera palabra del Multiplicando.
Mr: Primera palabra del Multiplicador.
R: Primera palabra del Resultado.
El resultado puede ser ?, -?, 0, NaN.
Tener en cuenta: 0·? = NaN y que NaN·número=NaN.
(Gp:) @*F(456)
Md
Mr
R
(Gp:) *F(456)
Md
Mr
R
/F(457)
Multiplica 2 números en coma flotante
de 32 bits.
Dd: Primera palabra del Dividendo.
Dr: Primera palabra del Divisor.
R: Primera palabra del Resultado.
El resultado puede ser ?, -?, 0, NaN.
Tener en cuenta: 0/0 = NaN, ?/? = NaN y que NaN/número=NaN, número/NaN=NaN.
(Gp:) @/F(457)
Dd
Dr
R
(Gp:) /F(457)
Dd
Dr
R
*F, /F Ejemplo
(Gp:) *F(456)
D00000
D00002
D00100
(Gp:) /F(457)
D00000
D00002
D00100
(Gp:) D00100 0101 0101 0101 0101
D00101 0011 1111 0101 1010 0.583333
(Gp:) D00000 0000 0000 0000 0000
D00001 0100 0000 0110 0000 3.5
D00002 0000 0000 0000 0000
D00003 0100 0000 1100 0000 6
(Gp:) D00100 0000 0000 0000 0000
D00101 0100 0001 1011 0000 21
3.5
÷ 6
3.5
* 6
OPERACIONES LÓGICAS ENTRE PALABRAS
ANDW(34) y @ANDW(34)
REALIZA LA OPERACIÓN LOGICA "AND" BIT A BIT ENTRE LOS 16 BITS CONTENIDOS DE DOS CANALES Op1 y Op2 Y PONE EL RESULTADO EN OTRO CANAL Res.
SI EL RESULTADO ES 0000, SE ACTIVA EL INDICADOR DE "EQUAL" P_EQ = ON
LOS PARÁMETROS DE LA INSTRUCCION SON 3:
Op1:Entrada 1 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Op2:Entrada 2 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Res:Resultado CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, DR, ,IR
Op1 0101 0101 0101 0101
Op2 1111 1111 0000 0000
Res 0101 0101 0000 0000
(Gp:) BORRAR
ORW(35) y @ORW(35)
REALIZA LA OPERACIÓN LOGICA "OR" BIT A BIT ENTRE LOS 16 BITS CONTENIDOS DE DOS CANALES Op1 y Op2 Y PONE EL RESULTADO EN OTRO CANAL Res.
SI EL RESULTADO ES 0000, SE ACTIVA EL INDICADOR DE "EQUAL" P_EQ = ON
LOS PARÁMETROS DE LA INSTRUCCION SON 3:
Op1:Entrada 1 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Op2:Entrada 2 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Res:Resultado CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, DR, ,IR
Op1 0101 0101 0101 0101
Op2 1111 1111 0000 0000
Res 1111 1111 0101 0101
(Gp:) ACTIVAR
XORW(36) y @XORW(36)
REALIZA LA OPERACIÓN LOGICA "XOR" BIT A BIT ENTRE LOS 16 BITS CONTENIDOS DE DOS CANALES Op1 y Op2 Y PONE EL RESULTADO EN OTRO CANAL Res.
SI EL RESULTADO ES 0000, SE ACTIVA EL INDICADOR DE "EQUAL" P_EQ = ON
LOS PARÁMETROS DE LA INSTRUCCION SON 3:
Op1:Entrada 1 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Op2:Entrada 2 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Res:Resultado CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, DR, ,IR
Op1 0101 0101 0101 0101
Op2 1111 1111 0000 0000
Res 1010 1010 0101 0101
(Gp:) INVERTIR
(Gp:) BUSCAR BITs DIFERENTES
XNORW(37) y @XNORW(37)
REALIZA LA OPERACIÓN LOGICA "XOR NEGADA" BIT A BIT ENTRE LOS 16 BITS CONTENIDOS DE DOS CANALES Op1 y Op2 Y PONE EL RESULTADO EN OTRO CANAL Res.
SI EL RESULTADO ES 0000, SE ACTIVA EL INDICADOR DE "EQUAL" P_EQ = ON
LOS PARÁMETROS DE LA INSTRUCCION SON 3:
Op1:Entrada 1 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Op2:Entrada 2 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, #, DR, ,IR
Res:Resultado CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, DR, ,IR
Op1 0101 0101 0101 0101
Op2 1111 1111 0000 0000
Res 0101 0101 1010 1010
(Gp:) INVERTIR
(Gp:) BUSCAR BITs IGULES
COM(29) y @COM(29)
REALIZA LA OPERACIÓN LOGICA "NEGACION" (COMPLEMENTO) BIT A BIT ENTRE LOS 16 BITS CONTENIDOS EN EL CANAL Op1 Y PONE EL RESULTADO EN EL MISMO CANAL.
SI EL RESULTADO ES 0000, SE ACTIVA EL INDICADOR DE "EQUAL" P_EQ = ON
LOS PARÁMETROS DE LA INSTRUCCION SON:
Op1:Entrada 1 CIO, W, H, A, T, C, D, E, E?_, @D, @E, @E?_, *D, *E, *E?_, DR, ,IR
Op1 0101 0101 0101 0101
Res(Op1) 1010 1010 1010 1010
Desplazamientoy rotación
SubDe todos o N bits en una y dos palabras
Desplazamiento y rotación
(Gp:) 1 Canal 2 Canales
Desplazamiento ASL(025) ASLL(570)
ASR(026) ASRL(571)
Rotación ROL(027) ROLL(572)
ROR(028) RORL(573)
Rotación sin RLNC(574) RLNL(576)
Carry RRNC(575) RRNL(577)
De N bits
(Gp:) 1 Canal 2 Canales
Desplazamiento NASL(580) NSLL(582)
de N bits NASR(581) NSRL(583)
Desplazamiento NSFL(578)
de N bits como dato NSFR(579)
NASL(580)
Desplaza la palabra D, N bits a la izquierda insertando 0, ó el valor del bit 0.
D: Palabra origen y destino.
C: palabra de control (insertar 0, Nº de bits)
(Gp:) NASL(580)
D
C
(Gp:) @NASL(580)
D
C
NASL(580) ejemplo
(Gp:) 15 12 7 0
(Gp:) Nº de bits a desplazar en hexadecimal 00.10Hex.
(Gp:) Siempre a 0.
(Gp:) Dato que se introduce por la derecha:
0: introduce 0.
8: introduce el valor que tenga el bit 0.
(Gp:) C: Palabra de control.
(Gp:) NASL(580)
0100
#0004
(Gp:) 0 0 0 1 1 0 0 1 1 1 1 1 0 0 0 0
(Gp:) 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1
(Gp:) 0
(Gp:) 1
(Gp:) CY
(Gp:) Perdidos
CH 100 ?
NSLL(582)
Desplaza las palabras D y D+1, N bits a la izquierda insertando 0, ó el valor del bit 0.
D: Primera palabra origen y destino.
C: palabra de control (insertar 0, Nº de bits)
Como NASL(580) pero de dos palabras.
(Gp:) NSLL(582)
D
C
(Gp:) @NSLL(582)
D
C
NASR(581)
Desplaza la palabra D, N bits a la derecha insertando 0, ó el valor del bit 15.
D: Palabra origen y destino.
C: palabra de control (insertar 0, Nº de bits)
(Gp:) NASR(581)
D
C
(Gp:) @NASR(581)
D
C
NASR(581) ejemplo
(Gp:) 15 12 7 0
(Gp:) Nº de bits a desplazar en hexadecimal 0-10Hex.
(Gp:) Siempre a 0.
(Gp:) Dato que se introduce por la izquierda.
0: introduce 0.
8: introduce el valor que tenga el bit 15.
(Gp:) C: Palabra de control.
(Gp:) NASR(581)
0100
#0004
0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1
1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1
0
1
CY
Perdidos
?CH 100
NSRL(583)
Desplaza las palabras D y D+1, N bits a la derecha insertando 0, ó el valor del bit 15.
D: Primera palabra origen y destino.
C: palabra de control (insertar 0, Nº de bits)
Como NASR(581) pero de dos palabras.
(Gp:) NSRL(583)
D
C
(Gp:) @NSRL(583)
D
C
NSFL(578)
Desplaza N bits de D a la izquierda empezando por el bit C.
D: Palabra dato.
C: Bit de comienzo.
N: Número de bits a desplazar.
Los bits anteriores a C o posteriores a C+N no cambian.
@NSFL(578)
D
C
R
(Gp:) NSFL(578)
D
C
R
NSFR(579)
Desplaza N bits de D a la derecha empezando por el bit C.
D: Palabra dato.
C: Bit de comienzo.
N: Número de bits a desplazar.
Los bits anteriores a C+N o posteriores a C no cambian.
@NSFL(578)
D
C
R
(Gp:) NSFL(578)
D
C
R
NSFL NSFR ejemplo
(Gp:) NSFR(579)
0100
&3
&11
(Gp:) NSFL(578)
0100
&3
&11
(Gp:) 1 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1
(Gp:) 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1
(Gp:) 0
(Gp:) 1
(Gp:) CY
(Gp:) 1 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1
(Gp:) 1 0 1 1 0 0 0 1 1 0 0 1 1 1 1 1
(Gp:) 0
(Gp:) 1
(Gp:) CY
Bits 3 a 12
Bits 3 a 12
CH 100 ?
?CH 100
Incrementar Decrementar
SubAutoincremento y Autodecremento
++(590) ++L(591)
++ incrementa en binario la palabra de 4 dígitos Wd en una unidad.
++L incrementa en binario la palabra de 8 dígitos Wd en una unidad.
Wd: Palabra a incrementar
(Gp:) @++L(591)
Wd
(Gp:) ++L(591)
Wd
(Gp:) @++(590)
Wd
(Gp:) ++(590)
Wd
–(592) –L(593)
— decrementa en binario la palabra de 4 dígitos Wd en una unidad.
–L decrementa en binario la palabra de 8 dígitos Wd en una unidad.
Wd: Palabra a incrementar
(Gp:) @–L(593)
Wd
(Gp:) –L(593)
Wd
(Gp:) @–(592)
Wd
(Gp:) –(592)
Wd
Binario Ejemplos
(Gp:) –L(593)
D00000
(Gp:) –(592)
D00000
(Gp:) ++L(591)
D00000
(Gp:) ++(590)
D00000
(Gp:) D0 D0
001A -1 0019
(Gp:) D0 D0
0019 +1 001A
(Gp:) D0 D1 D0 D1
001A 0000 -1 0019 FFFF
(Gp:) D0 D1 D0 D1
0019 FFFF +1 001A 0000
++B(594) ++BL(595)
++B incrementa en BCD la palabra de 4 dígitos Wd en una unidad.
++BL incrementa en BCD la palabra de 8 dígitos Wd en una unidad.
Wd: Palabra a incrementar
(Gp:) @++BL(595)
Wd
(Gp:) ++BL(595)
Wd
(Gp:) @++B(594)
Wd
(Gp:) ++B(594)
Wd
–B(596) –BL(597)
–B decrementa en BCD la palabra de 4 dígitos Wd en una unidad.
–BL decrementa en BCD la palabra de 8 dígitos Wd en una unidad.
Wd: Palabra a incrementar
(Gp:) @–BL(597)
Wd
(Gp:) –BL(597)
Wd
(Gp:) @–B(596)
Wd
(Gp:) –B(596)
Wd
BCD Ejemplos
(Gp:) –BL(597)
D00000
(Gp:) –B(596)
D00000
(Gp:) ++BL(595)
D00000
(Gp:) ++B(594)
D00000
(Gp:) D0 D0
0020 -1 0019
(Gp:) D0 D0
0019 +1 0020
(Gp:) D0 D1 D0 D1
0020 0000 -1 0019 9999
(Gp:) D0 D1 D0 D1
0019 9999 +1 0020 0000
DESPLAZAMIENTOYROTACIÓNserie C y CS1
Sub1Bit Y Dígitos (4 bits)
Desplaza BITS: ASL(025) ASR(026)
ASL(025) introduce un 0 y desplaza un bit a la izquierda el contenido de un canal.
ASR(026) introduce un 0 y desplaza un bit a la derecha el contenido de un canal.
El bit saliente pasa al Flag de carry (CY)
(Gp:) ASR(026)
Wd
(Gp:) ASL(025)
Wd
Rotar BITS: ROL(027) ROR(028)
ROL(025) Rota un bit a la izquierda un canal pasando el bit15 al CY y el CY al bit0
ROR(026) Rota un bit a la derecha un canal pasando el bit0 al CY y el CY al bit15
La rotación siempre es a través del Carry
(Gp:) ROR(028)
Wd
(Gp:) ROL(027)
Wd
Desplaza Digito: SLD(074) SRD(075)
SLD(074) introduce cuatro 0 y desplaza un Digito a la izquierda un canal.
SRD(075) introduce cuatro 0 y desplaza un Digito a la derecha un canal.
St: Canal inicial E: Canal final
DATO PERDIDO
DATO PERDIDO
Página anterior | Volver al principio del trabajo | Página siguiente |