STC / CLC, FUN 40 / 41 FUNCIÓN: ESTAS INSTRUCCIONES GESTIONAN EL FLAG DE ACARREO, O FLAG CY. EL FLAG CY SE UTILIZA EN LAS OPERACIONES MATEMÁTICAS, PARA DETECTAR: EXISTENCIA DE OVERFLOW EN EL RESULTADO DE UNA SUMA (ADD) EXISTENCIA DE RESULTADO NEGATIVO EN UNA SUBSTRACCIÓN (SUB) LD 0000 STC(40) LD NOT 0000 CLC(41) LD 1904 OUT 1000
SUMA BDC: ADD, FUN(30) /1 (Série C) LA INSTRUCCIÓN ADD EJECUTA LA SUMA ENTRE DOS DATOS DE 16 BIT (CANALES Y/O CONSTANTES) EN FORMATO BCD AL RESULTADO SE LE SUMA EL ACARREO SUMANDO 1 SI CY= ON LOS PARÁMETROS DE LAS INSTRUCCIONES SON 3: A1,A2 = SUMANDOS (#, IR, SR, HR, TIM, CNT) R = RESULTADO (IR, HR) = A1+A2+CY A1 A2 R LD 0000 STC(40) ADD(30) HR00 #0001 HR00
SUMA BDC: ADD, FUN(30) /2 (Série C) EN EL CASO DE ACARREO (CY = 1), LA SUMA DE LOS DOS SUMANDOS HA SUPERADO EL LÍMITE 9999. EL RESULTADO EFECTIVO ES ENTONCES 10000+R EN EL CASO DE SUMA CON 8 O MÁS CIFRAS BCD, (SUMA COMBINADA) SE DEBERÁ RESETEAR CY SÓLO PARA LA PRIMERA SUMA. SI EL RESULTADO DE LA OPERACIÓN SUMA ES = 0, ENTONCES EL FLAG EQ = 1 SI LOS SUMANDOS NO ESTÁN EN FORMATO BCD, LA OPERACIÓN NO SE EJECUTA Y ENTONCES ER = 1
RESTA BDC: SUB, FUN(31) /1 (Série C) LA INSTRUCCIÓN SUB EJECUTA LA SUBSTRACCIÓN DE DOS DATOS DE 16 BIT EN FORMATO BCD AL RESULTADO SE LE RESTA EL ACARREO O BIEN SE LE SUMA -1 SI CY = ON LOS PARÁMETROS DE LA INSTRUCCIÓN SON 3: Mi = MINUENDO (#, IR, SR, HR, TIM, CNT) Su = SUSTRAENDO (#, IR, SR, HR, TIM, CNT) R = RESULTADO (IR, HR) = Mi – Su – CY Mi Su R LD 0000 STC(40) SUB(31) #0100 00 05
RESTA BDC: SUB, FUN(31) /2 (Série C) SEGÚN LOS VALORES QUE TENGAN Mi Y Su, SE TIENEN LOS SIGUIENTES CASOS: (Gp:) RESULTADO (Gp:) CY (Gp:) EQ (Gp:) DATOS (Gp:) Mi > Su (Gp:) Mi = Su (Gp:) Mi < Su (Gp:) R= Mi – Su (Gp:) R= 0 (Gp:) R= Mi + (10000-Su) (Gp:) 0 (Gp:) 0 (Gp:) 1 (Gp:) 0 (Gp:) 1 (Gp:) 0
SI Mi Y Su NO ESTÁN EN EL FORMATO BCD, LA OPERACIÓN NO SE EJECUTA, Y ER = 1
EJEMPLO DE PROGRAMACIÓN (Série C) SUMA DE DATOS DE HASTA 8 DÍGITOS APLICACIÓN: SE TRATA DE SUMAR DOS DATOS QUE PUEDEN TENER UNA LONGITUD DE HASTA 8 DÍGITOS. ESTE PROGRAMA PUEDE LLEVARSE A CABO UTILIZANDO DIRECTAMENTE LA INSTRUCCIÓN DE SUMA DE DOBLE LONGITUD PERO LO HAREMOS USANDO LA INSTRUCCIÓN ADD NORMAL. LOS DATOS A SUMAR SON LOS SIGUIENTES: DATO A: 4 DÍGITOS MAYORES 4 DÍGITOS MENORES DATO B: 4 DÍGITOS MAYORES 4 DÍGITOS MENORES DM1 DM0 DM3 DM2 EL RESULTADO SE GUARDARÁ EN : DÍGITO NUM 9 4 DÍGITOS MAYORES 4 DÍGITOS MENORES DM6 DM5 DM4 El programa debe poder detectar si alguno de los datos A o B no está en formato BCD. Utilizar el CARRY en las instrucciones suma.
MULTIPLICACIÓN BCD: MUL, FUN(32) (Série C) FUNCIÓN: MULTIPLICA EL CONTENIDO DE LOS DATOS ESPECIFICADOS EN LA INSTRUCCIÓN (EN BCD) Y EL RESULTADO SE TRANSFIERE A UN REGISTRO. MUL A B C A, B = CANALES /CONSTANTES R = REGISTRO RESULTADO
MULTIPLICACIÓN BCD: MUL, FUN(32) (Série C) MUL 10 #0021 DM100 3300 0034 X 0021 = 714 CH 10 DM100= (CH 10) X 21
DIVISIÓN BCD: DIV, FUN(33) (Série C) FUNCIÓN: DIVIDE EL CONTENIDO DE LOS DATOS ESPECIFICADOS EN LA INSTRUCCIÓN (EN BCD) Y EL RESULTADO SE TRANSFIERE A DOS REGISTROS (COCIENTE Y RESTO). DIV A B C A = DIVIDENDO R = COCIENTE B = DIVISOR R+1 = RESTO A, B = CANAL / CONSTANTE
DIVISIÓN BCD: DIV, FUN(33) (Série C) DIV 10 #4 LR10 3300 133 CH 10 33 1 LR 10 LR 11 4 (CH 10) = (LR 10) X 4 + LR 11
OPERACIONES ARITMETICAS (CS1)/1 -(410), -L(411), -C(412), -CL(413) – Resta Binaria +(400), +L(401), +C(402), +CL(403) – Suma Binaria +B(404), +BL(405), +BC(406), +BCL(407) – Suma BCD -B(414), -BL(415), -BC(416), -BCL(417) – Resta BCD +F(454) – Suma Coma Flotante +D(845) – Doble Suma en coma flotante -F(455) – Resta Coma Flotante -D(846) – Resta en coma flotante de doble precisión
+(400) y +B(404) Suma 2 números binarios o BCD de 16 bits. Au: Palabra del primer sumando. Ad: Plabra del segundo sumando. R: Palabra del resultado. El rango para +(400) es de -32.768 a 32.767.Para +B(404) es de 0000 a 9999 (Gp:) +B(404) Au Ad R
(Gp:) +(400) Au Ad R
Binario BCD
Página siguiente ![]() |