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)