Nastya19kiss
Junior Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Здравствуйте. Извините что снова беспокою вас с этой проблемой. Хочу обратиться к вам снова с программой преобразования двоичного числа в двоично-десятичное: mov R2, #0eeh ;in loByte mov R3, #0ddh ;in hiByte mov R4, #0 ;loOut (10 & 1) mov R5, #0 ;midOut(1000 & 100) mov R6, #0 ;hiOut (100000 & 10000) mov R7, #16 ;bit counter ;--------------------- shift bits in L1: mov A, R2 rlc A mov R2, A mov A, R3 rlc A mov R3, A mov A, R4 rlc A mov R4, A mov A, R5 rlc A mov R5, A mov A, R6 rlc A mov R6, A djnz R7, L2 ;is last bit? sjmp L6 ;yes, goto end ;--------------------- decimal adjust 3 output bytes L2: mov R0, #6 ;ptr out L3: mov A, @R0 add A, #3 jnb 0e3h, L4 ;is bit 3 of A set? mov @R0, A ;yes, add 3 L4: mov A, @R0 add A, #30h jnb 0e7h, L5 ;is bit 7 of A set? mov @R0, A ;yes, add 0x30 L5: dec R0 cjne R0, #3, L3 ;--------------------- next bit sjmp L1 L6: nop END Я прочитала информацию в Википедии, ну все понятно. Но все равно не могу понять что происходит вот в этом куске программы: L2: mov R0, #6 ;ptr out L3: mov A, @R0 add A, #3 jnb 0e3h, L4 ;is bit 3 of A set? mov @R0, A ;yes, add 3 Почему мы изначально в регистр R0 поместили 6? Можно немного объяснить мне этот момент? |