-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathprog.asm
318 lines (273 loc) · 9.58 KB
/
prog.asm
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
ORG 0x0058
ARG1: WORD 0x007F
ARG2: WORD 0xFF82
ARG3: WORD 0x00FF
ARG4: WORD 0x8001
ARG5: WORD 0x0203
CHECK1: WORD 0xFFFF
CHECK2: WORD 0xFFFF
CHECK3: WORD 0xFFFF
FINAL: WORD 0xFFFF
RES1: WORD 0x00FE
RES2: WORD 0x8002
RES3: WORD 0x0006
START: CLA
CALL TEST1
HLT
CALL TEST2
HLT
CALL TEST3
HLT
LD #0x1
CLC
AND CHECK1
AND CHECK2
AND CHECK3
ST FINAL
STOP: HLT
TEST1: LD ARG1
PUSH
LD ARG2
PUSH
WORD 0x0F30
HLT
POP
CMP RES1
BEQ DONE1
ST RES1
POP
POP
CLA
ST CHECK1
RET
DONE1: ST RES1
POP
POP
LD #0x1
ST CHECK1
CLA
RET
TEST2: LD ARG3
PUSH
LD ARG4
PUSH
WORD 0x0F30
HLT
POP
CMP RES2
BEQ DONE2
ST RES2
POP
POP
CLA
ST CHECK2
RET
DONE2: ST RES2
POP
POP
LD #0x1
ST CHECK2
CLA
RET
TEST3: LD ARG5
PUSH
LD ARG5
PUSH
WORD 0x0F30
HLT
POP
CMP RES3
BEQ DONE3
ST RES3
POP
POP
CLA
ST CHECK3
RET
DONE3: ST RES3
POP
POP
LD #0x1
ST CHECK3
CLA
RET
МИНИСТЕРСТВО НАУКИ И ВЫСШЕГО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики»
ФАКУЛЬТЕТ ПРОГРАММНОЙ ИНЖЕНЕРИИ И КОМПЬЮТЕРНОЙ ТЕХНИКИ
ЛАБОРАТОРНАЯ РАБОТА №7
по дисциплине
«Основы профессиональной деятельности»
Вариант № 3100
Выполнил:
Студент группы P3131
Дворкин Борис Александрович
Преподаватель:
Клименков Сергей
Викторович
Санкт-Петербург, 2023 г.
Содержание
Текст задания 3
Описание программы 3
Вывод 6
Таблица трассировки 7
Текст задания
Описание программы
Назначение программы
1. MULSP - Знаковое умножение младших байтов двух верхних чисел на вершине стека, результат поместить на стек, установить признаки N/Z/V/C
2. Код операции - 0F30
3. Тестовая программа должна начинаться с адреса 006416
Исходный код синтезируемой программы
Адрес МП Микрокоманда Описание Комментарий
BB 81F0304002 if CR(8) = 1 then GOTO @ F3 Исправленная ячейка интерпретатора
F3 0080009008 SP -> AR Первое значение стека
F4 0100000000 MEM(AR) -> DR в DR
F5 0020009001 DR -> BR Первое значение в BR
F6 0080009408 SP + 1 -> AR Второе значение стека
F7 0100000000 MEM(AR) -> DR в DR
F8 0003809821 BR(mlb) * DR(mlb) -> DR; N, Z, V, C Умножение младших байтов, знаки N, Z, V, C
F9 0088009208 ~0 + SP -> SP, AR Результат выражения
FA 0200000000 DR -> MEM(AR) в стек
FB 80C4101040 GOTO INT @ C4 Переход к циклу прерывания
Текст программы на ассемблере
ORG 0x0058
ARG1: WORD 0x007F
ARG2: WORD 0xFF82
ARG3: WORD 0x00FF
ARG4: WORD 0x8001
ARG5: WORD 0x0203
CHECK1: WORD 0xFFFF
CHECK2: WORD 0xFFFF
CHECK3: WORD 0xFFFF
FINAL: WORD 0xFFFF
RES1: WORD 0x00FE
RES2: WORD 0x8002
RES3: WORD 0x0006
START: CLA
CALL TEST1
HLT
CALL TEST2
HLT
CALL TEST3
HLT
LD #0x1
CLC
AND CHECK1
AND CHECK2
AND CHECK3
ST FINAL
STOP: HLT
TEST1: LD ARG1
PUSH
LD ARG2
PUSH
WORD 0x0F30
HLT
POP
CMP RES1
BEQ DONE1
ST RES1
POP
POP
CLA
ST CHECK1
RET
DONE1: ST RES1
POP
POP
LD #0x1
ST CHECK1
CLA
RET
TEST2: LD ARG3
PUSH
LD ARG4
PUSH
WORD 0x0F30
HLT
POP
CMP RES2
BEQ DONE2
ST RES2
POP
POP
CLA
ST CHECK2
RET
DONE2: ST RES2
POP
POP
LD #0x1
ST CHECK2
CLA
RET
TEST3: LD ARG5
PUSH
LD ARG5
PUSH
WORD 0x0F30
HLT
POP
CMP RES3
BEQ DONE3
ST RES3
POP
POP
CLA
ST CHECK3
RET
DONE3: ST RES3
POP
POP
LD #0x1
ST CHECK3
CLA
RET
Вывод
В ходе выполнения лабораторной работы я изучил обмен данными с ВУ-1 и ВУ-3 в режиме прерываний, также изучил цикл прерывания и циклы исполнения новых команд. Также закрепил знания в написании программ на ассемблере БЭВМ.
Методика проверки программы
Проверка обработки прерываний:
1. Загрузить текст программы в БЭВМ.
2. Заменить NOP по нужному адресу на HLT.
3. Запустить программу в режиме РАБОТА.
4. Установить «Готовность ВУ-1».
5. Дождаться останова.
6. Записать текущее значение X из памяти БЭВМ:
1. Запомнить текущее состояние счетчика команд.
2. Ввести в клавишный регистр значение 0x010
3. Нажать «Ввод адреса».
4. Нажать «Чтение».
5. Записать значение регистра данных.
6. Вернуть счетчик команд в исходное состояние.
7. Нажать «Продолжение» 2 раза.
8. Записать результат обработки прерывания – полученное значение F(x) из DR контроллера ВУ-1.
9. Нажать «Продолжение».
10. Ввести в ВУ-3 произвольное число, записать его.
11. Установить «Готовность ВУ-3».
12. Дождаться останова.
13. Записать текущее значение X из памяти БЭВМ:
1. Запомнить текущее состояние счетчика команд.
2. Ввести в клавишный регистр значение 0x010
3. Нажать «Ввод адреса».
4. Нажать «Чтение».
5. Записать значение регистра данных.
6. Вернуть счетчик команд в исходное состояние.
14. Нажать «Продолжение» 2 раза.
15. Записать результат обработки прерывания – DR + X из DR контроллера ВУ-3.
16. Рассчитать ожидаемое значение переменной X после обработки прерывания и сравнить.
Проверка основной программы:
1. Загрузить текст программы в БЭВМ.
2. Записать в переменную X максимальное по ОДЗ значение (22)
3. Запустить программу в режиме останова.
4. Пройти нужное количество шагов программы, убедиться, что при уменьшении X на 1, до после момента, когда он равен 2-21, происходит сброс значения в минимальное по ОДЗ.
Прерывание ВУ-1 Прерывание ВУ-3
AC
(0...7) Ожидание
-6*X+3 DR AC (0…7) DR
КВУ-3 AC
(DR + X) Результат AC (0...7)
1016 (16) FFA316 (-93) FFA316 (-93) 116 (1) (5C)_(16) (127) 5D16 (126) 1616 (22)
FF16 (-1) FD16 (-3) FD16 (-3) 116 (1) (7F)_(16) (1) 0016 (0) 016 (0)
1816 (25) 7F16 (127) 7F16 (127) 116 (1) E1(-31) E216 (-32) EВ16 (-21)