-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTask07.txt
More file actions
18 lines (15 loc) · 1.4 KB
/
Task07.txt
File metadata and controls
18 lines (15 loc) · 1.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
/// Подготовка к алгоритму:
010003 // MOV R0, R3 ; Копируем значение R0 в R3
005002 // CLR R2 ; Стираем регистр, который является счётчиком двоичных единиц.
/// Непосредственно алгоритм:
006203 // ASR R3 ; Сдвигаем биты R3 вправо (делим на 2 и округляем в меньшую сторону).
; Бит C(arry) РСП делается 1 если младший разряд = 1 после сдвига
103401 // BCS +1 ; Если в младшем разряде единица - прибавляем единицу (прыжок до INC R2).
103002 // BCC +2 ; Если в младшем разряде ноль - продолжаем сдвигать (прыжок до BNE -5).
005202 // INC R2 ; Прибавляем единицу к счётчику единиц.
005703 // TST R3 ; Проверяем сдвигаемый регистр.
001372 // BNE -5 ; Если число не равно нулю - продолжаем сдвигать (прыжок на ASR R3).
/// Пишем резльтат в регистр R1 из R2:
010201 // MOV R2, R1 ; Копируем значение R2 в R1.
005002 // CLR R2 ; Стираем R2 (на всякий).
000000 // HALT ; Конец.