Лаба_1_Таня отчет (Всё по лабораторным работам БМТ)
Описание файла
Файл "Лаба_1_Таня отчет" внутри архива находится в следующих папках: Всё по лабораторным работам БМТ, 1. Документ из архива "Всё по лабораторным работам БМТ", который расположен в категории "". Всё это находится в предмете "электроника" из , которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "электроника и микропроцессорная техника" в общих файлах.
Онлайн просмотр документа "Лаба_1_Таня отчет"
Текст из документа "Лаба_1_Таня отчет"
Задание:
Используя директиву .DEF, присвоить РОН имена: day, month, year, начиная с регистра, номер которого соответствует номеру варианта. Записать в эти регистры числа, соответствующие дню, месяцу и году рождения.
Дополнить программу командами арифметического сложения и вычитания (из 1-го семинара) с заданными числами. Результаты выполнения операций поместить в оперативную память используя прямой и косвенный способы адресации.
Текст программы должен содержать подробные комментарии, т.е. указания:
-выполняемого действия;
- содержимого регистров PC (программный счётчик), SP (регистр-указатель стека), SREG (регистр состояния МК);
-РОН, если они содержат операнды.
Листинг:
; Инициализация указателя стека
LDI R25, $5F; Записать в регистр (16-31) младший байт адреса
OUT $3d, R25; Переслать его в регистр УС
LDI R25, $02; Записать старший байт адреса
OUT $3e, R25; Переслать его в регистр УС
; Указатель стека занимает в адресном пространстве регистров ввода/вывода 2 регистра.
; Их адреса: $3d (SPL), $3e (SPH).
;устанавливаем имена регистров
.DEF day=R5
.DEF month=R6
.DEF year1=R7
.DEF year2=R8
;загружаем в регистры данные о дне месяце и годе рождения
LDI r16, 0x13; 19
LDI r17, 0x0b; 11
LDI r18, 0x07; первая часть года
LDI r19, 0xc1; вторая часть года
; обе части из шестнадцатеричной формы числа 1985
LDI r24, 0xc1; вписываем еще раз год рождения для осуществления операции сложения в одно действие
LDI r25, 0x07
ldi r26, 0x00
; Копируем содержимое регистров R16-R19 в регистры R5-R8
MOV day, R16; день: 0001 0011 --> 13
MOV month, R17; месяц: 0000 1011 --> 0b
MOV year1, R18; первая часть года: 0000 0111 --> 07
MOV year2, R19; вторая часть года: 1100 0001 --> c1
; СЛОЖЕНИЕ ГОДА И ДНЯ РОЖДЕНИЯ
; Сложение 2-ух младших разрядов года с числом рождения
ADD R19,R16
; В регистре R19 записывается 1101 0100 --> d4
; Сложение 2-ух старших разрядов года с числом рождения с учетом переноса
ADC R18,R26
; В регистре R18 записывается 0000 0111 --> 07
; сложение в одно действие
ADIW r24,$13
; ВЫЧИТАНИЕ ИЗ ДНЯ РОЖДЕНИЯ МЕСЯЦА РОЖДЕНИЯ.
; Переносим значения дня и месяца рождения в регистры R0,R1
MOV R0, day; день: 0001 0011 --> 13
MOV R1, month; месяц: 0000 1101 --> 0b
SUB R1,R0; В регистр R1 записывается 1000 1000 --> F8
; ПЕРЕНОС РЕЗУЛЬТАТОВ В ОПЕРАТИВНУЮ ПАМЯТЬ.
; Используем прямой способ адресации
STS $0061, R18
;1-ая часть результата сложения: 0000 0111 --> 07
;Записывается в ОЗУ по адресу $0061
STS $0062, R19
;2-ая часть результата сложения: 1101 0100 --> d4
;Записывается в ОЗУ по адресу $0062
STS $0063, R1
;Результат вычитания: 1000 1000 --> F8
;Записывается в ОЗУ по адресу $0063
; Используем обратный способ адресации
CLR R31; Очищаем старший байт Z
LDI R30, $64; Устанавливаем $0064 в младший байт Z
ST Z+,R18
;1-ая часть результата сложения: 0000 0111 --> 07
;Записывается в ОЗУ по адресу $0064
ST Z+,R19
;2-ая часть результата сложения: 1101 0100 --> d4
;Записывается в ОЗУ по адресу $0065
ST Z,R1
;Результат вычитания: 1000 1000 --> F8
;Записывается в ОЗУ по адресу $0066
3