Программа-калькулятор (0802 CD9702 CALL BLNK очистка экрана, 0834 C20A08 JNZ 080A переход если в С не 0), страница 2

0860      21A00B                                          LXI        H,0BA0            указать на ячейку памяти 0BA0

0863      86                                                    ADD      M                       сложить содержимое ячейки 0B00 и А

0864      32A00B                                          STA       0BA0                сохранить А в памяти по адресу 0BA0

0867      E1                                                    POP       H,L                    восстановить из стека H,L    

0868      2B                                                   DCX      H                        декрементирование содержимого пары H, L

0869      0D                                                   DCR      C                        декрементирование содержимого С

086A     C23F08                                          JNZ        083F                  переход если в С не 0

******************************************************************************************************

086D     CD9702                                          CALL    BLNK               очистка экрана

0870      21050B                                          LXI        H,0B05             указать на ячейку памяти 0В05

0873      CD4B01                                         CALL    KIND                ожидание нажатия клавиши

0876      77                                                    MOV     M,A                   записать код клавиши по адресу в H, L

0877      D60A                                              SUI        0A                     вычесть из А 0А       

0879      ССB008                                         CZ          SUM                 если 0, то вызвать подпрограмму сложения

087C                                                             3A050B                           LDA              0B05      записать в А данные из памяти по адресу 0B05

087F                                                              D60B     SUI                    0B   вычесть из А 0B

0881                                                              СС0009                           CZ   SUB       если 0, то вызвать подпрограмму вычитания

0884                                                              3A050B                           LDA              0B05      записать в А данные из памяти по адресу 0B05

0887                                                              D60C     SUI                    0B   вычесть из А 0C

0889                                                              СС2509                           CZ   MUL     если 0, то вызвать подпрограмму умножения

088C                                                             3A050B                           LDA              0B05      записать в А данные из памяти по адресу 0B05

088F                                                              D60D    SUI                    0D   вычесть из А 0D                                                                                                    

0891                                                              СС5B09                          CZ   DIV       если 0, то вызвать подпрограмму деления

******************************************************************************************************

SUM:

08B0     1E02                                               MVI       E,02

08B1     21000B                                          LXI        H,0B00            

08B4     01A00B                                         LXI        B,0BA0

08B7     AF                                                   XRA      A                        поразрядное исключающее или над А и А (CY=0)

08B8     0A                                                   LDAX   B                        записать в А данные по адресу в В,С

08B9     8E                                                   ADC      M                       сложение с учетом переноса

08BA     27                                                    DAA                                двоично-десятичная коррекция

08BB     02                                                    STAX    B                        сохранение данных из А по адресу в В,С