Subrutina de Cálculo de Paridad Impar Introducción Se trata de desarrollar una subrutina para el c á lc ulo del bit de paridad de un dato de 8 bits utiliz ando paridad im par. E l v alor de este bit se debe aj ustar para q ue el nú m ero total de unos, c ontando el bit de paridad, sea im par. E l bit de paridad se usa en la transm isió n de datos para la detec c ió n de errores. Cálculo paridad 1 Etapas a cubrir Desarrollo del algoritmo. E lab orac ió n del diagrama de f lu j o. R ealiz ac ió n en len gu aj e má q u in a Desarrollo del algoritmo (I) A lgoritmo: sec u en c ia de p asos q u e resu elv e el p rob lema. S e emp iez a p or u n a desc rip c ió n de alto n iv el, en len gu aj e n atu ral o u n p seu dolen gu aj e de p rogramac ió n . E sta desc rip c ió n se v a f ormaliz an do h asta q u e c on temp la todos los detalles del p roc eso. Cálculo paridad 2 Desarrollo del algoritmo (II) En este caso una primera descripción de alto niv el podrí a ser: – Contar el número de bits a 1 en el dato. 0, si es impar – B it de p aridad = 1, si es par Desarrollo del algoritmo (III) N o es p osible transc ribir direc tamente esta desc rip c ió n a ensamblador. S e debe detallar má s: Cálculo paridad ¿ Cuál e s la in t e rf az de la s ub rut in a ( có m o s e le pas an los parám e t ros y có m o s e de v ue lv e e l re s ult ado? ¿ Cuále s s on los v alore s le g ale s de l parám e t ro? ¿ E x is t e n cas os e s pe ciale s ? S i e l v alor e s ile g al, ¿ q ué s e h ace ? ¿ Có m o s e cue n t an los b it s a 1 y có m o s e s ab e q ue h e m os t e rm in ado de h ace rlo? ¿ Q ué v ariab le s de e s t ado adicion ale s s on n e ce s arias ( con t adore s , m arcas , . . . ) ? ¿ D ó n de s e alm ace n an los dat os ( m e m oria, pila o re g is t ros ) y con q ué e s t ruct ura ( v alor, pun t e ro, m at riz . . . ) ? 3 Desarrollo del algoritmo (IV) ¿Cuál es la interfaz de la subrutina? – El único parámetro se pasará en D0 con tamaño b y te. – El resu ltad o se d ev olv erá en D1 con tamaño W : " " D 1 = 0 , b it de paridad = 0 . D 1 ≠ 0 , b it de paridad = 1 . ! Desarrollo del algoritmo (V) $ ¿ C u áles son los v alores leg ales d el parámetro? ¿ Ex isten casos especiales? S i el v alor es ileg al, ¿ q u é se h ace? % % % ! Cálculo paridad E n e s t e cas o t odos los v alore s de l parám e t ro s on le g ale s . S ie m pre con v ie n e com prob ar q ué s uce de con los v alore s lí m it e de los parám e t ros , s ob re t odo s i re pre s e n t an un a can t idad ( at e n ció n al v alor ce ro) . N o s upon e r n un ca q ue la s ub rut in a s e v a a ut iliz ar s ie m pre de f orm a in t e lig e n t e . # 4 Desarrollo del algoritmo (VI) - ¿Cómo se cuentan los bits a uno? N o e x is t e un a in s t rucció n para con t ar los b it s a un o e n D 0 . D e b e m os ir e x am in an do los b it s de un o e n un o, de f orm a q ue e n f un ció n de s u v alor s e e j e cut e un a acció n u ot ra. E s t o im plica un a ope ració n q ue re f le j e e n e l CCR e l v alor de l b it para pode r us ar un a in s t rucció n B x x . E s t o pue de log rars e con un a in s t rucció n de de s plaz am ie n t o, q ue v ue lca e l L S B o e l M S B al b it C. . . . . &'( )*( &))+ , Desarrollo del algoritmo (VII) ¿Cómo se sabe que hemos terminado? – L a ex p lor ación d el p ar á metr o h abr á ter minad o tr as och o d esp laz amientos. – T ambié n es v á lid o ter minar cuand o y a no q ued en má s bits a uno en el d ato ( y p or tanto, tod os los bits sean cer os) &'( )*( &))+ Cálculo paridad */) 5 Desarrollo del algoritmo (VIII) ¿Qué variables de estado adicionales son necesarias? 6 E n e s t e e j e m plo, f in aliz are m os e l alg orit m o cuan do n o q ue de n un os e n e l dat o, por lo q ue n o e s n e ce s aria n in g un a ot ra v ariab le . 7 E n e l cas o de re aliz ar och o de s plaz am ie n t os , s e rí a n e ce s ario un con t ador de los de s plaz am ie n t os q ue q ue dan por re aliz ar. 7 A de m ás e s n e ce s ario lle v ar la cue n t a de los un os o por lo m e n os alm ace n ar s i la ú lt im a cue n t a f ue par o im par. 7 N os ot ros alm ace n are m os e l v alor de l b it de paridad s e g ú n e l n ú m e ro de un os e n con t rados h as t a e l m om e n t o 012 342 0335 act ual. 44 7 Desarrollo del algoritmo (IX) 6 ¿D ó nde se alm acenan los datos y con q ué estructura? 7 7 7 E n e s t e cas o, e l parám e t ro s e pas a e n D 0 con t am Com o n o s e dice q ue de b a pre s e rv ars e , re aliz are m e x ploració n dire ct am e n t e s ob re e s t e re g is t ro. E n cuan t o a la ú n ica v ariab le de e s t ado q ue t e n e m v alor act ual de l b it de paridad) , por coin cidir con re s ult ado, la alm ace n are m os e n D 1 con t am añ o W E n g e n e ral, dada un a v ariab le : añ o B . os la os ( e l e l . 8:9<;>=@?BA CD=@EGF<=@HIA CBJKHKA LMEONQP/EGRSNTCSUBEWV<EX=@CYVQZEW[T; [T; Z\HIA HIA A HWLMHKUBHIHIA H =FQVBZFQP/; NTHX]^ZEO_B;=P ZC>` 8:9<;>=@EGF<=@HIEONSLMab=c=@; P/; CT=dRDUBEWV<Ee=@CYVBZEW[T; [T; Z\UYFQZHWNQP/EIJK; EWZP/CfP/; EWLSg<C ]hLMEOLMCYZ; HY` 012 342 0335 Cálculo paridad 40 6 Diagrama de flujo p<qGrcs/tuqGt t{y ← y<| } ~uu~d| td vxw<wzy r~u B\r\| td w<wzy Ir\| }y< t{y ijk lmk illn m/o Código ensamblador p<qGrcs/tuqGt fc| } y< t{y { > ~uu~d| td s/ ijk lmk illn Cálculo paridad { s/ B\r\| y< td { { > Ircs| } y< t{y {ruq { > r~u mn 7