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

Особенности разработки программы и выбор методов решения задачи. Составление алгоритма, распределение регистров программы и формирование файлов. Описание процедуры очистки памяти, сложения, вычитания, умножения. Тестирование и листинг программы.

Рубрика Программирование, компьютеры и кибернетика
Вид лабораторная работа
Язык русский
Дата добавления 14.05.2011
Размер файла 51,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Украины

Житомирский государственный технологический университет

ЛАБОРАТОРНАЯ РАБОТА

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

Кафедра ПОВТ

Группа ПИ-40

ФИКТ

Выполнил

Проверил

Житомир

2010

Содержание

  • 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-;ДЕЛИМ НА 10000

- 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<ADDITION.INC>

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

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<P16F84.INC>

- INCLUDE<INIT.INC>; ИНИУИАЛИЗАЦИЯ РЕГИСТРОВ, КОТОРЫЕ СПОЛЬЗУЮТСЯ

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

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

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

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

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

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

- INCLUDE<CLRREG.INC> - ;ОЧИСТКА РЕГИСТРОВ

- INCLUDE<BASEPROG.INC> - ;ПРОЦЕДУРЫ, КОТОРЫЕ РЕАЛИЗУЮТ ОСНОВНОЙ АЛГОРИТМ

- INCLUDE<DATEWORK.INC> - ;ПРОЦЕДУРЫ ПЕРЕВЕДЕНИЯ ДАТ В КОЛИЧЕСТВО ДНЕЙ

- INCLUDE<DEDUCT.INC> - ;ВЫЧИТАНИЕ

- INCLUDE<INCREASE.INC> - ;УМНОЖЕНИЯ

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

ENDPROG - GOTO - $

- END

Вывод

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

Размещено на Allbest.ru


Подобные документы

  • Математическое обоснование метода решения задачи: определенный интеграл, квадратурная формула Симпсона (формула парабол). Словесное описание алгоритма и составление его блок-схемы. Выбор языка программирования. Текст программы решения задачи, ее листинг.

    курсовая работа [593,6 K], добавлен 09.07.2012

  • Анализ технического задания. Разработка программы по вычислению функции на языке ассемблер для микропроцессора Кр580ВМ80. Алгоритмы программного умножения, деления, сложения, вычитания и сдвига влево многобайтных чисел. Расчет времени работы программы.

    курсовая работа [88,2 K], добавлен 19.09.2012

  • Описание алгоритма решения задачи по вычислению суммы элементов строк матрицы с использованием графического способа. Детализация укрупненной схемы алгоритма и разработка программы для решения задачи в среде Turbo Pascal. Листинг и тестирование программы.

    курсовая работа [446,0 K], добавлен 19.06.2014

  • Описание алгоритма решения задачи графическим способом. Вывод элементов массива. Описание блоков укрупненной схемы алгоритма на языке Pascal. Листинг программы, а также ее тестирование. Результат выполнения c помощью ввода различных входных данных.

    контрольная работа [150,4 K], добавлен 03.05.2014

  • Словесное описание алгоритма программы. Открытие файла процедурой Rewrite, его проверка на наличие ошибок при открытии. Особенности построения диаграммы. Листинг программы, ее тестирование и отладка. Выполнение процедуры CloseFile при закрытии файла.

    контрольная работа [17,3 K], добавлен 11.06.2010

  • Разработка программы на языке Pascal. Описание переменных. Действия, которые должна выполнить программа согласно выбранного алгоритма. Детализация графической части программы. Листинг и тестирование программы. Вывод массива данных на экран монитора.

    контрольная работа [360,4 K], добавлен 13.06.2012

  • Создание тестовой программы на определение доминирующего полушария мозга у человека с применением наиболее распространенного языка Visual Basic for Applications. Выбор технических и программных средств. Интерфейс программы, ее тестирование и листинг.

    курсовая работа [222,5 K], добавлен 08.01.2015

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.