Всё для Учёбы — студенческий файлообменник
1 монета
docx

Студенческий документ № 058215 из НИУ МЭИ

Филиал федерального государственного бюджетного образовательного учреждения высшего профессионального образования

"Национальный исследовательский университет "МЭИ"

в городе Смоленске

Кафедра ВТ

Отчет

по лабораторной работе №2

Тема: "Работа с подпрограммами"

Предмет: "Аппаратные и программные средства АСОИУ"

Студент: Костюхин К. А.

Группа: АС-11

Преподаватель: Тихонов В. А.

Вариант №8

Смоленск

2014

1. Исследование команд

Информация об исследованных командах сведена в таблицы 1 и 2.

Таблица 1 -Результаты выполнения команд

№ Команда Код Выполняемая операция Содержимое регистров и ячеек памяти До После 1 MOV P1, #3FH 75903F Запись в регистр Р1 константы 3F P1/FF P1/3F 2 MOV R1, #C3H 79C3 Запись в R1 константы С3 R1/0 R1/C3 3 MOV A, R1 E9 Запись в аккумулятор значения из регистра R1 A/0 A/C3 4 PUSH P1 C090 Запись в стек значения из P1 Указатель стека SP/07

банк памяти 1

R0/00 Указатель стека SP/08.

банк памяти 1

R0/3F 5 PUSH 01H C001 Запись в стек данных из ячейки с адресом 01H Банк 1 R1/00

SP/08 Банк 1 R1/C3

SP/09 6 PUSH PSW C0D0 Запись в стек значения регистра PSW PSW был пуст поэтому изменился только указатель стека

SP/09 SP/0A 7 SETB RS1 D2D4 Установить бит RS1 регистра PSW в единицу RS1/0 RS1/1 8 MOV P1, #01H 759001 В P1 пишем константу 01 P1/3F P1/01 9 MOV 01H, #02H 750102 В регистр R1 банка 1записываем значение 02 R1/C3 R1/02 10 POP PSW D0D0 Извлечение из стека PSW/10

SP/0A PSW/00 SP/09 11 POP 01H D001 Извлекли из стека, положили в R1 Банка 0 Банк 0 R1/02

SP/09 Банк 0 R1/C3

SP/08 12 POP P1 D090 Извлечение из стека в P1 P1/01

SP/08 P1/3F SP/07

Таблица 2 - результаты выполнения команд.

№ Команда Код Выполняемая операция Содержимое используемых регистров и ячеек памяти до и после До После 1 ACALL 05H 1105 Перейти по адресу 05 SP/07

Банк 1 R0/00

SP/09 Банк 1 R0/02

2 LJMP 20H 050020 Безусловный переход PC/0002 PC/0020 3 RET 22 Вернуться в адрес, записанный в вершине стека SP/09 SP/07 Листинги использованных программ для первой и второй таблиц:

C:0000: 75903F MOV P1, #3FH

C:0003: 79C3 MOV R1, #C3H

C:0005: E9 MOV A, R1

C:0006: C090 PUSH P1

C:0008: C001 PUSH 01H

C:000A: C0D0 PUSH PSW

C:000C: D2D4 SETB RS1

C:000E: 759001 MOV P1, #01H

C:0011: 750102 MOV 01H, #02H

C:0014: D0D0 POP PSW

C:0016: D001 POP 01H

C:0018: D090 POP P1

//------------------------

C:0000: 1105 ACALL 0005H

C:0002: 020020 LJMP 0020H

C:0008: 22 RET

2. Подпрограмма возведения в квадрат

C:0001: 020009 LJMP 0009H

C:0009: E9 MOV A, R1

C:000A: 89F0 MOV B, R1

C:000C: A4 MUL AB

C:000D: 22 RET

Данная подпрограмма считает данные из регистра R1, возведет их в квадрат, а результат запишет в аккумулятор.

3. Программа перехода в зависимости от состояния P1

C:0000: 209006 JB P1.0, 0009H

C:0003: 20911F JB P1.1, 0025H

C:0006: 020021 LJMP 0021H

C:0009: 209123 JB P1.1, 002FH

C:000C: 02003A LJMP 003AH

Если нулевой бит Р1 установлен в единицу, то прыгаем на адрес 0009, где еще одно условие. Если первый бит Р1 единица, то перепрыгнем на адрес 002F, в противном случае следующей командой перейдем по адресу 003А.

Если нулевой бит Р1 установлен в ноль, то первая строка ничего не сделает, а во второй, если единичный бит равен 1, то перейдем по адресу 0025, если нет, то третья строка перешлет программу на адрес 0021.

2

Показать полностью…
24 Кб, 25 апреля 2017 в 10:54 - Россия, Москва, НИУ МЭИ, 2017 г., docx
Рекомендуемые документы в приложении