Помощь в написании студенческих работ
Антистрессовый сервис

Определение возраста человека на PICassembler

Лабораторная работаПомощь в написанииУзнать стоимостьмоей работы

Министерство образования и науки Украины Житомирский государственный технологический университет ЛАБОРАТОРНАЯ РАБОТА. DateWork. inc — в данном файле описаны процедуры, которые используются для переведения дат в количество дней; Init. inc — в данном файле оглашаются все регистры и биты, которые используются в программе; 18h-1Ah, — 28h-2Ah, 38h-3Ah, 48h-4Ah, — используются для умножения количества… Читать ещё >

Определение возраста человека на PICassembler (реферат, курсовая, диплом, контрольная)

Министерство образования и науки Украины Житомирский государственный технологический университет ЛАБОРАТОРНАЯ РАБОТА

Определение возраста человека на PICassembler

Кафедра ПОВТ

Группа ПИ-40

ФИКТ

Выполнил

Проверил

Житомир

  • 1. Задание
  • 2. Разработка программы
    • 2.1 Выбор методов решения данной задачи
    • 2.2 Разработка алгоритма
  • 3. Распределение регистров
  • 4. Тестирование программы
  • 5. Листинг программы
  • Вывод

1. Задание

На языке PICAssembler написать программу, которая подсчитывает количество прожитых дней.

2. Разработка программы

2.1 Выбор методов решение данной задачи

В данной задаче используются 2 даты, по этому для их записи будем использовать правила записи дат: дд.мм.гггг. В данной программе исходными данными являются даты D1 и D2, которые задаются в двоично-десятичном коде. По этому для их записи выделяем 1 байт для дней, 1 байт для месяцев и 2 байта для года. Для поиска количества прожитых дней сначала обе даты переведем в количество дней, потом найдем разницу между этими количествами — это и будет количество прожитых дней. Для подсчета данной функции разработаем процедуры сложения, вычитания, умножение, деления, умножения и деления на 4.

Проект программы включает файлы: Проект:

· Init. inc — в данном файле оглашаются все регистры и биты, которые используются в программе;

· Clrreg. inc — в данном файле описывается процедура очистки памяти;

· Baseprog. inc — в данном файле описаны основные процедуры, которые используются в программе;

· DateWork. inc — в данном файле описаны процедуры, которые используются для переведения дат в количество дней;

· Addition. inc — в данном файле описаны процедуры сложения;

· Deduct. inc — в данном файле описаны процедуры вычитания;

· Increase. inc — в данном файле описана процедура умножения;

· HMDL. asm-это главный файл, который объединяет все функции в одно целое;

· Input. sti — отладочный файл для введения данных.

Данную программу будем разрабатывать для микроконтроллера 16F84.

2.2 Разработка алгоритма

3. Распределение регистров

Распределение регистров указано на рис. 1

Рис. 1

· 10h-13h-в начале программы заносится I дата (в прямом коде);

· 20h-23h-на — в начале программы заносится II дата (в прямом коде);

· 14h-16h-используется для сохранения промежуточных данных при переводе I даты в количество дней и сохранения количества дней в I дате; 24h-26h — используется для сохранения промежуточных данных при переводе I даты в количество дней и сохранения количества дней в II дате;

· 3Ch-47h — используется для сохранения количества дней в разных месяцах, что необходимо для корректного перевода дат в количество дней;

· 0Сh-0Fh-вспомогательные регистры;

· 18h-1Ah, — 28h-2Ah, 38h-3Ah, 48h-4Ah, — используются для умножения количества годов в каждой дате на 365;

· 35h-36h-находится промежуточный результат;

· 34h-36h, 44h-46h, а также 3Сh-3Fh, 4Fh — регистры, которые используются для переведения результата с прямого кода в двоично-десятичную систему;

· 3Dh-3Fh — результат работы программы (количество прожитых дней) в двоично-десятичном коде;

4. Тестирование программы

программа алгоритм регистр файл листинг

Для проверки работы программы было введено несколько контрольных примеров. Результаты программы сопоставлялись с реальными.

Пример 1:

Введено следующие значения:

D1=25.11.2009(10)=19.0B.07D9(h)

D2=21.03.1990(10)=15.03.07C6(h)

Результат работы программы: 1С15(h)=7189(10). Реальный результат — 7189.

Пример 2:

Введено следующие данные:

D1=30.10.2009(10)=1E.0A.07D9(h)

D2=30.12.1987(10)=1E.0C.07C3(h)

Результат работы программы: 1F27(h)=7975(10). Реальный результат — 7975.

Пример 3:

Введено следующие данные:

D1=30.10.2009(10)=1E.0A.07D9(h)

D2=26.02.1991(10)=1A.02.07C7(h)

Результат работы программы: 1AA5(h)=6821(10). Реальный результат — 6821.

5. Листинг программы

Файл Init. inc

;Инициализация регистров

D1-EQU-0X10

D2-EQU-0X20

RP-EQU-0X0C

RS-EQU-0X0D

ICV-EQU-0X0E

IC-EQU-0X0F

RM-EQU-0X3C

RPM-EQU-0X4F

Файл Clrreg.inc

;ОЧИЩЕНИЕ ПАМЯТИ

CLREG-MOVLW — 0X40 ;

— MOVWF — IC ;

— MOVLW — 0X10

— MOVWF — FSR

CR-CLRF-INDF

— INCF-FSR, F

— DECFSZ — IC, F

— GOTO — CR

— RETURN

Файл Baseprog.inc

;СЧИТЫВАЕНИ ВХОДНЫХ ДАННЫХ

DATEIN — MOVLW — D1

— MOVWF — FSR

— CALL-DATAIN

— MOVLW — D1 ;

— MOVWF — FSR

— CALL-TDATE

— MOVLW — D2;

— MOVWF — FSR;

— CALL-DATAIN ;

— MOVLW — D2 ;

— MOVWF — FSR

— CALL-TDATE;

— RETURN

;СЧИТЫВАНИЕ ДАТ С ФАЙЛА

DATAIN — MOVLW — 0X04 ;

— MOVWF — IC ;

NL-MOVF-PORTB, W ;

— MOVWF — INDF ;

— INCF-FSR, F ;

— DECFSZ — IC, F ;

— GOTO — NL

— RETURN

;КОНВЕРТАЦИЯ ДАТ С ДОВИЧНО-ДЕСЯТИЧНОГО В ПРЯМОЙ КОД

TDATE — MOVLW — 0X10

— SUBWF-INDF, W

— BTFSS-STATUS, C ;

— GOTO-TMONS

— MOVLW — 0X20

— SUBWF-INDF, W

— BTFSC-STATUS, C

— GOTO-GO30-;СМ. ЛИСТ. 8

— MOVLW — 0X06

— SUBWF-INDF, F

— GOTO-TMONS-;СМ. ЛИСТ. 8

GO30 — MOVLW — 0X30

— SUBWF-INDF, W

— BTFSC-STATUS, C

— GOTO-GO31

— MOVLW — 0X0C

— SUBWF-INDF, F

— GOTO-TMONS

GO31 — MOVLW — 0X12

— SUBWF-INDF, F

TMONS — INCF-FSR, F

— BTFSS-INDF, 4

— GOTO-TYEARS

— BCF-INDF, 4

— MOVLW — 0X0A

— ADDWF — INDF, F

TYEARS — INCF-FSR, F

— MOVF-INDF, W ;

— MOVWF — RP ;

— MOVLW — 0X17 ;

— ADDWF — FSR, F ;

— MOVF-RP, W ;

— MOVWF — INDF ;

— MOVLW — 0X04 ;

— MOVWF — IC ;

YMR11 — BCF-STATUS, C ;

— RRF-INDF, F;

— DECFSZ — IC, F;

— GOTO-YMR11;

— MOVLW — 0X11 ;

— SUBWF-FSR, F ;

— MOVLW — 0X03 ;

— MOVWF — INDF ;

— INCF-FSR, F ;

— MOVLW — 0XE8 ;

— MOVWF — INDF ;

— MOVLW — 0X0A

— MOVWF — ICV

— CALL-MNOZH ;

— MOVLW — 0X64

— MOVWF — INDF

— MOVLW — 0X10

— ADDWF — FSR, F

— CLRF-INDF

— DECF-FSR, F

— CLRF-INDF

— MOVLW — 0X16

— SUBWF-FSR, F

— MOVF-INDF, W ;

— MOVWF — RP ;

— MOVLW — 0X17 ;

— ADDWF — FSR, F ;

— MOVF-RP, W ;

— MOVWF — INDF ;

— MOVLW — 0X04 ;

— MOVWF — IC ;

YML1 — BCF-STATUS, C

— RLF-INDF, F ;

— DECFSZ — IC, F ;

— GOTO-YML1 ;

— MOVWF — IC ;

YMR12 — BCF-STATUS, C

— RRF-INDF, F ;

— DECFSZ — IC, F ;

— GOTO-YMR12 ;

— MOVLW — 0X07

— MOVWF — ICV

— MOVLW — 0X10

— SUBWF-FSR, F

— CALL-MNOZH

— MOVLW — 0X0A

— MOVWF — INDF

— MOVLW — 0X10

— ADDWF — FSR, F

— CLRF-INDF

— DECF-FSR, F

— CLRF-INDF

— MOVLW — 0X15

— SUBWF-FSR, F

— MOVF-INDF, W

— MOVWF — RP

— MOVLW — 0X16

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X04

— MOVWF — IC

YMR21 — BCF-STATUS, C

— RRF-INDF, F

— DECFSZ — IC, F

— GOTO-YMR21

— MOVLW — 0X10

— SUBWF-FSR, F

— MOVLW — 0X04

— MOVWF — ICV

— CALL-MNOZH

— MOVLW — 0X10

— ADDWF — FSR, F

— CLRF-INDF

— DECF-FSR, F

— CLRF-INDF

— MOVLW — 0X15

— SUBWF-FSR, F

— MOVF-INDF, W

— MOVWF — RP

— MOVLW — 0X16

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X04

— MOVWF — IC

YML2 — BCF-STATUS, C

— RLF-INDF, F

— DECFSZ — IC, F

— GOTO-YML2

— MOVWF — IC

YMR22 — BCF-STATUS, C

— RRF-INDF, F

— DECFSZ — IC, F

— GOTO-YMR22

— MOVLW — 0X02

— MOVWF — IC

— CALL-PLUS2

— MOVLW — 0X12

— ADDWF — FSR, F

— MOVF-INDF, W

— MOVWF — RP

— CLRF-INDF

— MOVLW — 0X26

— SUBWF-FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X25

— ADDWF — FSR, F

— MOVF-INDF, W

— MOVWF — RP

— CLRF-INDF

— MOVLW — 0X26

— SUBWF-FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X17

— ADDWF — FSR, F

— CLRF-INDF

— RETURN

;ПЕРЕВОД ДАТ В КОЛИЧЕСТВО ДНЕЙ

CNTDAYS — CALL-REGMONS

— MOVLW — D1+0X03

— MOVWF — FSR

— CALL-CDAYS

— MOVLW — D2+0X03

— MOVWF — FSR

— CALL-CDAYS

— RETURN

;ПОДСЧЕТ КОЛИЧЕСТВА ПРОЖИТЫХ ДНЕЙ

LIVEDAY — MOVLW — 0X03

— MOVWF — IC

— MOVLW — D1+0X06

— MOVWF — FSR

— CALL-MINUS3

— ;КОНВЕРТАЦИЯ РЕЗУЛЬТАТА ИЗ ШЕСТНАДЦАТИРИЧНОГО В ДВОИЧНО-ДЕСЯТИЧНЫЙ КОД

— MOVLW — RM

— MOVWF — FSR

— MOVLW — 0X14

— MOVWF — IC

CLRMNS — CLRF-INDF

— INCF-FSR, F

— DECFSZ — IC, F

— GOTO-CLRMNS

— MOVLW — 0X0A

— SUBWF-FSR, F

— MOVLW — 0X10

— MOVWF — INDF

— DECF-FSR, F

— MOVLW — 0X27

— MOVWF — INDF

— MOVLW — 0X10

— SUBWF-FSR, F ;

STEP4 — MOVLW — 0X03-;ДЕЛИМ НА 10 000

— MOVWF — IC

— INCF-FSR, F

— CALL-MINUS1

— INCF-FSR, F

— MOVF-INDF, F

— BTFSS-STATUS, Z

— GOTO-GOSTEP3

— INCF-RPM, F

— INCF-FSR, F

— GOTO-STEP4

GOSTEP3 — MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X02

— ADDWF — FSR, F

— CALL-PLUS1

— MOVLW — 0X0C

— ADDWF — FSR, F

— CALL-ADDDCML

— MOVLW — 0X0A

— ADDWF — FSR, F

— MOVLW — 0XE8

— MOVWF — INDF

— DECF-FSR, F

— MOVLW — 0X03

— MOVWF — INDF

— MOVLW — 0X10

— SUBWF-FSR, F

STEP3 — MOVLW — 0X03-;ДЕЛИМ НА 1000

— MOVWF — IC

— INCF-FSR, F

— CALL-MINUS1

— INCF-FSR, F

— MOVF-INDF, F

— BTFSS-STATUS, Z

— GOTO-GOSTEP2

— INCF-RPM, F

— INCF-FSR, F

— GOTO-STEP3

GOSTEP2 — MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X02

— ADDWF — FSR, F

— CALL-PLUS1

— MOVLW — 0X0C

— ADDWF — FSR, F

— CALL-ADDDCML

— MOVLW — 0X0A

— ADDWF — FSR, F

— MOVLW — 0X64

— MOVWF — INDF

— DECF-FSR, F

— CLRF-INDF

— MOVLW — 0X10

— SUBWF-FSR, F

STEP2 — MOVLW — 0X03-;ДЕЛИМ НА 100

— MOVWF — IC

— INCF-FSR, F

— CALL-MINUS1

— INCF-FSR, F

— MOVF-INDF, F

— BTFSS-STATUS, Z

— GOTO-GOSTEP1

— INCF-RPM, F

— INCF-FSR, F

— GOTO-STEP2

GOSTEP1 — MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X02

— ADDWF — FSR, F

— CALL-PLUS1

— MOVLW — 0X0C

— ADDWF — FSR, F

— CALL-ADDDCML

— MOVLW — 0X0A

— ADDWF — FSR, F

— MOVLW — 0X0A

— MOVWF — INDF

— MOVLW — 0X11

— SUBWF-FSR, F

STEP1 — MOVLW — 0X03-;ДЕЛИМ НА 10

— MOVWF — IC

— INCF-FSR, F

— CALL-MINUS1

— INCF-FSR, F

— MOVF-INDF, F

— BTFSS-STATUS, Z

— GOTO-GOSTEP0

— INCF-RPM, F

— INCF-FSR, F

— GOTO-STEP1

GOSTEP0 — MOVLW — 0X03-;ПРИБАВЛЯЕМ ОСТАТОК

— MOVWF — IC

— MOVLW — 0X02

— ADDWF — FSR, F

— CALL-PLUS1

— MOVLW — 0X0C

— ADDWF — FSR, F

— CALL-ADDDCML

— MOVLW — 0X06

— SUBWF-FSR, F

— MOVF-INDF, W

— MOVWF — RPM

— MOVLW — 0X09

— ADDWF — FSR, F

— CALL-ADDDCML

— RETURN

;ВСПОМОГАТЕЛЬНАЯ ПРОЦЕДУРА КОНВЕРТАЦИИ

ADDDCML — MOVLW — 0X04

— MOVWF — ICV

BITMOV — MOVLW — 0X03

— MOVWF — IC

BITEMOV — RLF-INDF, F

— DECF-FSR, F

— DECFSZ — IC, F

— GOTO-BITEMOV

— ADDWF — FSR, F

— DECFSZ — ICV, F

— GOTO-BITMOV

— MOVWF — IC

— CALL-PLUS1

— CLRF-RPM

— RETURN

Файл DateWork.inc

;ОСНОВНАЯ ПРОЦЕДУРА ПЕРЕВЕДЕНИЯ ДАТ В КОЛИЧЕСТВО ДНЕЙ

CDAYS — MOVF-INDF, W

— MOVWF — RP

— MOVLW — 0X03

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X04

— SUBWF-FSR, F

— MOVF-INDF, W ;

— MOVWF — RP

— MOVLW — 0X03

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVF-FSR, W

— MOVWF — RP

— CALL-VYSGOD

— MOVLW — 0X06

— SUBWF-FSR, F

— MOVF-FSR, W

— MOVWF — RPM

— MOVF-NDF, W

— MOVWF — ICV

— DECF-ICV, W

— MOVWF — RM

DTOMONS — MOVLW — RM

— ADDWF — RM, W

— MOVWF — FSR

— MOVF-INDF, W ;

— MOVWF — RP

— MOVLW — 0X15

— ADDWF — RPM, W

— MOVWF — FSR

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X10

— SUBWF-FSR, F

— CALL-PLUS1

— DECF-RM, F

— DECFSZ — ICV, F ;

— GOTO-DTOMONS ;

— MOVLW — 0X03

— SUBWF-FSR, F

— MOVF-INDF, W

— MOVWF — RP

— MOVLW — 0X16

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X10

— SUBWF-FSR, F

— CALL-PLUS1

— MOVLW — 0X02

— MOVWF — ICV

DMOV — MOVF-INDF, W ;

— MOVWF — RP

— MOVLW — 0X17

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X18

— SUBWF-FSR, F

— DECFSZ — ICV, F

— GOTO-DMOV

— MOVLW — 0X09

— ADDWF — FSR, F

— MOVLW — 0X6D

— MOVWF — INDF

— DECF-FSR, F

— MOVLW — 0X01

— MOVWF — INDF ;

— MOVLW — 0X09

— MOVWF — ICV

— INCF-FSR, F

— CALL-MNOZH

— MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X10

— ADDWF — FSR, F

MNTODOD — CLRF-INDF

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-INDF, W ;

— MOVWF — RP

— CLRF-INDF

— MOVLW — 0X14

— SUBWF-FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X03

— ADDWF — FSR, F

— DECFSZ — IC, F

— GOTO-MNTODOD ;

— MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X11

— SUBWF-FSR, F

— CALL-PLUS1

— MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X13

— ADDWF — FSR, F

CLRDOD — CLRF-INDF

— DECF-FSR, F

— DECFSZ — IC

— GOTO-CLRDOD

— RETURN

;ПОДСЧЕТ КОЛИЧЕСТВА ВЫСОКОСНЫХ ГОДОВ

VYSGOD — MOVLW — 0X02

— MOVWF — ICV

KOLSDV — MOVLW — 0X02

— MOVWF — IC

— MOVF-RP, W

— MOVWF — FSR

VG-RRF-INDF, F

— INCF-FSR, F

— DECFSZ — IC, F

— GOTO-VG

— BCF-STATUS, C

— DECFSZ — ICV, F

— GOTO-KOLSDV

— RETURN

;ЗАПОЛНЕНИЕ РЕГИСТРОВ ДНЕЙ В МЕСЯЦЫ

REGMONS — MOVLW — 0X1F

— MOVWF — RM+0X01

— MOVLW — 0X1C

— MOVWF — RM+0X02

— MOVLW — 0X1F

— MOVWF — RM+0X03 ;

— MOVLW — 0X1E

— MOVWF — RM+0X04

— MOVLW — 0X1F

— MOVWF — RM+0X05

— MOVLW — 0X1E

— MOVWF — RM+0X06

— MOVLW — 0X1F

— MOVWF — RM+0X07

— MOVLW — 0X1F

— MOVWF — RM+0X08

— MOVLW — 0X1E

— MOVWF — RM+0X09

— MOVLW — 0X1F

— MOVWF — RM+0X0A

— MOVLW — 0X1E

— MOVWF — RM+0X0B

— RETURN

Файл Addition.inc

;ПРОЦЕДУРЫ СЛОЖЕНИЯ

PLUS1 — CLRF-RS

ADN1 — MOVF-INDF, W

— ADDWF — RS, W

— MOVWF — RP

— CLRF-RS

— MOVLW — 0X01

— BTFSC-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-INDF, W

— ADDWF — RP, F

— MOVLW — 0X01

— BTFSC-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— SUBWF-FSR, F

— MOVF-RP, W

— MOVWF — INDF

— DECF-FSR, F

— DECFSZ — IC, F

— GOTO-ADN1

— RETURN

PLUS2 — CLRF — RS

ADN2 — MOVF-INDF, W

— ADDWF — RS, W

— MOVWF — RP

— CLRF-RS

— MOVLW — 0X01

— BTFSC-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-INDF, W

— ADDWF — RP, F

— MOVLW — 0X01

— BTFSC-STATUS, C

— MOVWF — RS

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X11

— SUBWF-FSR, F

— DECFSZ — IC, F

— GOTO-ADN2

— RETURN

PLUS3 — CLRF-RS

ADN3 — MOVF-INDF, W

— ADDWF — RS, W

— MOVWF — RP

— CLRF-RS

— MOVLW — 0X01

— BTFSC-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-INDF, W

— ADDWF — RP, F

— MOVLW — 0X01

— BTFSC-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X21

— SUBWF-FSR, F

— DECFSZ — IC, F

— GOTO-ADN3;

— RETURN

Файл Deduct.inc

;ПРОЦЕДУРЫ ВЫЧИТАНИЯ

MINUS1 — CLRF-RS

VIDN1 — MOVF-INDF, W ;

— MOVWF — RP

— MOVF-RS, W

— SUBWF-RP, F

— CLRF-RS

— MOVLW — 0X01

— BTFSS-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-INDF, W

— SUBWF-RP, W

— MOVWF — RP

— MOVLW — 0X01

— BTFSS-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— SUBWF-FSR, F

— MOVF-RP, W

— MOVWF — INDF

— DECF-FSR, F

— DECFSZ — IC, F

— GOTO-VIDN1

— RETURN

MINUS2 — CLRF-RS

VIDN2 — MOVF-INDF, W

— MOVWF — RP

— MOVF-RS, W

— SUBWF-RP, F

— CLRF-RS

— MOVLW — 0X01

— BTFSS-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-INDF, W

— SUBWF-RP, W

— MOVWF — RP

— MOVLW — 0X01

— BTFSS-STATUS, C

— MOVWF — RS

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X11

— SUBWF-FSR, F

— DECFSZ — IC, F

— GOTO-VIDN2

— RETURN

MINUS3 — CLRF-RS

VIDN3 — MOVF-INDF, W

— MOVWF — RP

— MOVF-RS, W

— SUBWF-RP, F

— CLRF-RS

— MOVLW — 0X01

— BTFSS-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-INDF, W

— SUBWF-RP, W

— MOVWF — RP

— MOVLW — 0X01

— BTFSS-STATUS, C

— MOVWF — RS

— MOVLW — 0X10

— ADDWF — FSR, F

— MOVF-RP, W

— MOVWF — INDF

— MOVLW — 0X21

— SUBWF-FSR, F

— DECFSZ — IC, F

— GOTO-VIDN3

— RETURN

Файл Increase.inc

— INCLUDE

;ПРОЦЕДУРЫ УМНОЖЕНИЯ

MNOZH — MOVLW — 0X09

— MOVWF — ICV

— MOVF-FSR, W

— MOVWF — RM

MN-BTFSC-INDF, 0

— GOTO-MNDOD

GOMN — MOVLW — 0X03

— MOVWF — IC

— MOVF-RM, W

— MOVWF — FSR

— MOVLW — 0X10

— ADDWF — FSR, F

— BCF-STATUS, C

SDVL — RLF-INDF, F

— DECF-FSR, F

— DECFSZ — IC, F

— GOTO-SDVL

— MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X0F

— SUBWF-FSR, F

— BCF-STATUS, C

SDVR — RRF-INDF, F

— INCF-FSR, F

— DECFSZ — IC, F

— GOTO-SDVR

— MOVF-RM, W

— MOVWF — FSR

— DECFSZ — ICV, F ;

— GOTO-MN

— GOTO-ENDMN

MNDOD — MOVLW — 0X03

— MOVWF — IC

— MOVLW — 0X10

— ADDWF — FSR, F

— CALL-PLUS2

— GOTO-GOMN ;

ENDMN — RETURN

Файл HMDL.asm

— INCLUDE

— INCLUDE; ИНИУИАЛИЗАЦИЯ РЕГИСТРОВ, КОТОРЫЕ СПОЛЬЗУЮТСЯ

— CALL — CLREG-;ОЧИЩЕНИЯ РЕГИСТРОВ

— CALL — DATEIN — ;ЗАГРУЗКА ДАТ

— CALL — CNTDAYS — ;ПЕРЕВЕДЕНИЯ ДАТ В КОЛИЧЕСТВО ДНЕЙ

— CALL — LIVEDAY — ;НАХОДИМ КОЛИЧЕСТВО ПРОЖИТЫХ ДНЕЙ

— GOTO — ENDPROG — ;ПЕРЕХОД В КОНЕЦ ПРОГРАММЫ

;———-СТРУКТУРНЫЕ ЭЛЕМЕНТЫ——————

— INCLUDE — ;ОЧИСТКА РЕГИСТРОВ

— INCLUDE — ;ПРОЦЕДУРЫ, КОТОРЫЕ РЕАЛИЗУЮТ ОСНОВНОЙ АЛГОРИТМ

— INCLUDE — ;ПРОЦЕДУРЫ ПЕРЕВЕДЕНИЯ ДАТ В КОЛИЧЕСТВО ДНЕЙ

— INCLUDE — ;ВЫЧИТАНИЕ

— INCLUDE — ;УМНОЖЕНИЯ

;———-СТРУКТУРНЫЕ ЭЛЕМЕНТЫ——————

ENDPROG — GOTO — $

— END

Вывод

В данной лабораторной работе были приобретены навыки программирования на языке PICAssembler и определенные знания в области использования IDE MPLAB. Результатом данной работы является программы, которая подсчитывает количество прожитых дней.

Показать весь текст
Заполнить форму текущей работой