Определение возраста человека на 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Программа для расчета полинома. Описание и схема алгоритма, распределение памяти под код программы, под данные и стек. Схема хранения операций ввода-вывода и их подключение. Изменения стека во время прогона программы. Листинг программы с комментариями.
курсовая работа [59,0 K], добавлен 02.12.2009Системы линейных алгебраических уравнений. Матричный метод решения систем линейных уравнений. Решение задачи математическим методом. Блок-схема алгоритма и листинг программы. Расчет трудоемкости разработки программы. Расчет себестоимости и цены программы.
дипломная работа [144,8 K], добавлен 25.04.2012Составление алгоритма и разработка в среде программирования Delphi 7 программы, вычисляющей макроэкономические индексы цен. Реализация программы в виде 4 форм и 1 диалогового окна. Описание алгоритма решения задачи. Текст программы, руководство оператора.
курсовая работа [1,4 M], добавлен 04.06.2013