-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTask09.txt
More file actions
53 lines (45 loc) · 2.53 KB
/
Task09.txt
File metadata and controls
53 lines (45 loc) · 2.53 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
См. пояснения к подпрограмме в задаче 8.
/*********** Подпрограмма УМНОЖЕНИЕ (1150) ***********/
005002 // CLR R2
005700 // TST R0
100401 // BMI +1
100001 // BPL +1
005400 // NEG R0
005701 // TST R1
100401 // BMI +1
100001 // BPL +1
005401 // NEG R1
006200 // ASR R0
103401 // BCS +1
103001 // BCC +1
060102 // ADD R1, R2
006301 // ASL R1
005700 // TST R0
001371 // BNE -13
000207 // RTS PC ; Выход из подпрограммы.
/*********** Основная программа (1216) ***********/
012700 // MOV #5, R0 ; Поместить размер первого массива в R0
000005 ;
012703 // MOV #1034, R3 ; Поместить адрес начала первого массива в R3
001034 ;
012705 // MOV #1064, R5 ; Поместить адрес итогого массива в R5
001064 ;
012701 // MOV #5, R1 ; Поместить размер второго массива в R1
000005 ;
012704 // MOV #1050, R4 ; Поместить адрес начала второго массива в R4
001050 ;
010046 // MOV R0, -(R6) ; Поместить размер первого массива в стек
010146 // MOV R1, -(R6) ; Поместить размер второго массива в стек
011300 // MOV @R3, R0 ; Поместить первый множитель
012401 // MOV (R4+), R1 ; Поместить второй множитель
004737 // JSR PC УМНОЖЕНИЕ ; Выполнить умножение (перейти к соответствующей подпрограмме)
001150 ; Адрес начала подпрограммы
012601 // MOV (R6)+, R1 ; Вытолкнуть из стека размер второго массива
012600 // MOV (R6)+, R0 ; Вытолкнуть из стека размер первого массива
010225 // MOV R2, (R5)+ ; Переслать произведение в итоговый массив
077112 // SOB R1, 8 ; Цикл по второму массиву
005203 // INC R3 ;
005203 // INC R3 ; Переход к следующему элементу первого массива
077021 // SOB R0, #1256 ; Цикл по первому массиву
001256 ;
000000 // HALT ; Конец.