Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
отчёт 2лр осмс.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
105 Кб
Скачать
☆

Для второй части лабораторной работы

LIST p=16F877, st = OFF

#include "P16F877.INC"

UDATA ; Структура данных

H_sum RES 1 ; Старший байт суммы

L_sum RES 1 ; Младший байт суммы

EXTERN mulcnd, mulplr, H_byte, L_byte

EXTERN mpy

STARTUP CODE ;сегмент STARTUP

nop

goto start

nop

nop

nop

PROG1 CODE ;сегмент PROG1

start clrw

main clrf H_sum ;очистить сумму

clrf L_sum

movlw 0x51

movwf mulplr ;51h умножить на 3Eh

movlw 0x3E

movwf mulcnd

call mpy ;вызов подпрограммы

movf H_byte,w

movwf H_sum

movf L_byte,w

movwf L_sum

movlw 0x2B

movwf mulplr ;2Bh умножить на 57h

movlw 0x57

movwf mulcnd

call mpy ;вызов подпрограммы

movf L_byte,w

bcf STATUS,C

subwf L_sum,f ;вычесть мл.байты

movf H_byte,w

subwf H_sum,f ;вычесть ст.байты

goto main

END

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

MPASM 5.20 LR2_1.ASM 9-17-2013 12:05:19 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT

VALUE

00001 ;Программа вычисления суммы произведений однобайтных чисел

00002 ;*************************************************

00003 LIST p=16F877, st=OFF

00004 #include "P16F877.INC"

00001 LIST

00002 ; P16F877.INC Standard Header File, Version 1.00 Microchip Technology, Inc.

00373 LIST

00005 cblock 0x20 ; Структура данных

00000020 00006 mulcnd ; множимое

00000021 00007 mulplr ; множитель

00000022 00008 H_byte ; старший байт произведения

00000023 00009 L_byte ; младший байт произведения

00000024 00010 count ; счетчик циклов

00000025 00011 H_sum ; старший байт суммы

00000026 00012 L_sum ; младший байт суммы

00013 endc

00014

0000 00015 org 0x000 ;векторстарта

0000 280F 00016 goto start

00017 ;************* Подпрограмма умножения ************

0001 01A2 00018 mpy_SclrfH_byte

0002 01A3 00019 clrfL_byte

0003 3008 00020 movlw 8

0004 00A4 00021 movwf count

0005 0820 00022 movfmulcnd,w

0006 1003 00023 bcf STATUS,C

0007 0CA1 00024 loop rrfmulplr,F

0008 1803 00025 btfsc STATUS,C

0009 07A2 00026 addwfH_byte,F

000A 0CA2 00027 rrfH_byte,F

000B 0CA3 00028 rrfL_byte,F

000C 0BA4 00029 decfszcount,f

000D 2807 00030 goto loop

000E 3400 00031 retlw 0

00032 ;*************************************************

000F 0103 00033 start clrw

0010 01A5 00034 main clrfH_sum;очиститьсумму

0011 01A6 00035 clrfL_sum

0012 30CD 00036 movlw 0xCD

0013 00A1 00037 movwfmulplr ;CDhумножитьна 68h

0014 3044 00038 movlw 0x44

0015 00A0 00039 movwfmulcnd

0016 2001 00040 call mpy_S;вызовподпрограммы

0017 0822 00041 movfH_byte,w

0018 00A5 00042 movwfH_sum

0019 0823 00043 movfL_byte,w

001A 00A6 00044 movwfL_sum

001B 3018 00045 movlw 0x18

001C 00A1 00046 movwfmulplr ;18hумножитьна 44h

001D 3044 00047 movlw 0x44

001E 00A0 00048 movwfmulcnd

001F 2001 00049 callmpy_S ;вызов подпрограммы

0020 0823 00050 movfL_byte,w

MPASM 5.20 LR2_1.ASM 9-17-2013 12:05:19 PAGE 2

LOC OBJECT CODE LINE SOURCE TEXT

VALUE

0021 1403 00051 bsf STATUS,C

0022 02A6 00052 subwfL_sum,f ;сложитьмл.байты

0023 1C03 00053 btfss STATUS,C

0024 03A5 00054 decfH_sum,f

0025 0822 00055 movfH_byte,w

0026 02A5 00056 subwfH_sum,f ;сложитьст.байты

0027 2810 00057 goto main

00058 END

MEMORY USAGE MAP ('X' = Used, '-' = Unused)

0000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXX-------- ----------------

All other memory blocks unused.

Program Memory Words Used: 40

Program Memory Words Free: 8152

Errors : 0

Warnings : 0 reported, 0 suppressed

Messages : 0 reported, 0 suppressed