Page 276 - 4503
P. 276

retlw        b’00000110’;           код      для      1,
           ;повертається при ;N=1
                  retlw        b’01011011’;           код      для      2,
           ;повертається при ;N=2
                  retlw        b’01001111’;           код      для      3,
           ;повертається при ;N=3
                  retlw        b’01100110’;           код      для      4,
           ;повертається при ;N=4
                  retlw        b’01101101’;           код      для      5,
           ;повертається при ;N=5
                  retlw        b’01111101’;           код      для      6,
           ;повертається при ;N=6
                  retlw        b’00000111’;           код      для      7,
           ;повертається при ;N=7
                  retlw        b’00111111’;           код      для      8,
           ;повертається при ;N=8
                  retlw        b’01101111’;           код      для      9,
           ;повертається при ;N=9
           ;-------------------------------------------
                 Для  виклику  підпрограми  (функції)  дешифрації
           SVN_SEG  у  програмі  8.6  використано  команду  call
           SVN_SEG. У цей момент на збереження у стек занесена адреса
           повернення  із  підпрограми  SVN_SEG  —  наступна  після
           адреси  щойно  виконаної  команди.  Якщо  наприклад  адресою
           команди сall SVN_SEG є h’23’ то у стек занесена адреса
           повернення  в  основну  програму  h’24’.  Повернення  у
           основну програму відбувається завдяки команді retlw.
                Команда  addwf  PCL,f  виконує  збільшення  вмісту
           лічильника команд на величину константи  N, яка записана у
           робочий  регістр  ще  до  виклику  підпрограми  SVN_SEG.  Під
           час  виконання  цієї  команди  вміст  РС,  збільшується  на
           одиницю,  адже  таке  відбувається  при  виконанні  більшості
           команд  (розділ  5.1.2).  Отже,  у  сумі  вміст  лічильника  одразу


                                         276
   271   272   273   274   275   276   277   278   279   280   281