Descargar

Operaciones aritméticas – PLC (página 2)

Enviado por Pablo Turmero


Partes: 1, 2
edu.red

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

edu.red

+, – 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

edu.red

+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

edu.red

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

edu.red

*(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

edu.red

/(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

edu.red

*, / 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

edu.red

*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

edu.red

Instrucciones enComa Flotante SubNúmeros reales en coma flotante.

edu.red

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.

edu.red

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.

edu.red

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

edu.red

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.

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

+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

edu.red

-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

edu.red

+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

edu.red

*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

edu.red

/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

edu.red

*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

edu.red

OPERACIONES LÓGICAS ENTRE PALABRAS

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

Desplazamientoy rotación SubDe todos o N bits en una y dos palabras

edu.red

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)

edu.red

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)

edu.red

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

edu.red

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 ?

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

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

edu.red

Incrementar Decrementar SubAutoincremento y Autodecremento

edu.red

++(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

edu.red

–(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

edu.red

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

edu.red

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

edu.red

–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

edu.red

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

edu.red

DESPLAZAMIENTOYROTACIÓNserie C y CS1 Sub1Bit Y Dígitos (4 bits)

edu.red

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

edu.red

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

edu.red

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

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente