Разработка программы ADР22 с двукратным вызовом подпрограммы AD2




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

 

MOV R2,#04h - R2 является счетчиком циклов

 

DJNZ R2, M2 - уменьшает содержимое R2 на единицу и переходит на начало цикла, пока содержимое R2не равно 0.

2.3. Обоснование выбора команд, реализующих основное действие

цикла (поле 2В) и подготовка параметров следующего цикла (поле 3В)

MOV A, @R0; в аккумулятор идет содержимое регистра РПД, адрес

; которого находится в R0

ADDC A, @R1; в аккумулятор идет число, которое находится суммой

;содержимого аккумулятора и содержимого регистра РПД,

;адрес которого находится в R1

 

 

MOV @R1, A;в регистр РПД, адрес которого находится в R1, идет

;содержимое аккумулятора

ADN1 PAGE 1

 

1;

2 $MOD845; Использовать таблицу кодов МК ADuC845

---- 3 CSEG; Начало сегмента кодов

0000 4 ORG 0000h; 0000h-начальный адрес сегмента кодов

0000 782F 6 mov R0,#2Fh

0002 793F 7 mov R1,#3Fh

0004 7A03 8 mov R2,#04h

0006 E6 10 M2: MOV A, @R0

0007 37 11 ADDC A, @R1

0008 F7 12 MOV @R1, A

0009 18 13 DEC R0

000A 19 14 DEC R1

000B DAF9 15 DJNZ R2, M2

000D 00 16 nop

17 END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

ADN1 PAGE 2

 

M2............... C ADDR 0006H

HEX:

:0E000000782F793F7A03E637F71819DAF900FE

:00000001FF

 

MOV R0, #2Fh MOV R0, #3Fh MOV R0, #04h     M1: MOV A,@R0 ADDC A,@R0 MOV @R1,A     DEC R0 DEC R1   DJNZ R2,M1   NOP

 

2.5. Написание исходного текста, ассемблирование и апробирование

  Ст.   Мл.
Мл.символ адреса 0h Ch Dh Eh Fh
1-е слагаемое 20h   B9    
2-е слагаемое 30h     D1 BC
АС-полуперенос          
С-перенос          
Сумма 40h   3C    
Р-паритет          

 

Данные до начала работы:

Результат работы программы после первого цикла

Результат работы программы после второго цикла

Результат работы программы после третьего цикла

Результат работы программы после четвертого цикла

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

ADN2 PAGE 1

 

1;

2 $MOD845; Использовать таблицу кодов МК ADuC845

---- 3 CSEG; Начало сегмента кодов

0000 4 ORG 0000h; 0000h-начальный адрес сегмента кодов

0000 782F 6 mov R0,#2Fh

0002 793F 7 mov R1,#3Fh

0004 7A03 8 mov R2,#03h

0006 75084F 9 MOV 08H, #4FH

0009 E6 11 M2: MOV A, @R0

000A 37 12 ADDC A, @R1

000B D2D3 13 SETB RS0

000D F6 14 MOV @R0, A

000E 18 15 DEC R0

000F C2D3 16 CLR RS0

0011 18 17 DEC R0

0012 19 18 DEC R1

0013 DAF4 19 DJNZ R2, M2

0015 00 20 nop

21 END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

ADN2 PAGE 2

 

M2............... C ADDR 0009H

RS0............... B ADDR 00D3H PREDEFINED

HEX:

:10000000782F793F7A0375084FE637D2D3F618C2B6

:06001000D31819DAF40018

:00000001FF

 

 

  Ст.   Мл.
Мл.символ адреса 0h Ch Dh Eh Fh
1-е слагаемое 20h   B9    
2-е слагаемое 30h     D1 BC
АС-полуперенос          
С-перенос          
Сумма 40h   3C    
Р-паритет          
Циклы           3-й     2-й     1-й  
             

 

Результаты работы программы ADN2:

 

Данные до начала работы:

Результат работы программы после первого цикла:

Результат работы программы после второго цикла:

Результат работы программы после третьего цикла:

Результат работы программы после четвертого цикла:

 

 

Разработка структуры программы ADP2. Выделение из программы ADP2 основной программы и подпрограммы

 

ADP2 PAGE 1

 

1;

2 $MOD845; Использовать таблицу кодов МК ADuC845

---- 3 CSEG; Начало сегмента кодов

0000 4 ORG 0000h; 0000h-начальный адрес сегмента кодов

0000 782F 7 mov R0,#2Fh

0002 793F 8 mov R1,#3Fh

0004 7A04 9 mov R2,#04h

0006 75115F 10 MOV 11H, #5FH

0009 120030 11 CALL AD2

000C 00 12 NOP

000D 784F 13 mov R0,#4Fh

000F 795F 14 mov R1,#5Fh

0011 7A04 15 mov R2,#04h

0013 75116F 16 MOV 11H, #6FH

0016 120030 17 CALL AD2

0019 00 18 nop

0030 19 org 0030h

0030 C3 20 AD2: clr C

0031 E6 21 M2: MOV A, @R0

0032 37 22 ADDC A, @R1

0033 D2D4 23 SETB RS1

0035 F7 24 MOV @R1, A

0036 19 25 DEC R1

0037 C2D4 26 CLR RS1

0039 18 27 DEC R0

003A 19 28 DEC R1

003B DAF4 29 DJNZ R2, M2

003D 22 30 RET

31 END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

ADP2 PAGE 2

 

AD2............... C ADDR 0030H

M2............... C ADDR 0031H

RS1............... B ADDR 00D4H PREDEFINED

 

Результат работы программы ADP2:

Данные до начала работы:

Результат работы программы после первого цикла:

Результат работы программы после второго цикла:

Результат работы программы после третьего цикла:

Результат работы программы после четвертого цикла:

 

Разработка программы ADР22 с двукратным вызовом подпрограммы AD2

Расположение исходных данных промежуточного и окончательного результатов работы программы ADP2:

  Ст. Адреса байт Мл.
1-е слагаемое 20h 20h 2Eh 2Fh
2-е слагаемое 30h 30h 3Eh 3Fh
3-е слагаемое 40h 40h 4Eh 4Fh
Сумма 1+2 50h 50h 5Eh 5Fh
Сумма 1+2+3 60h 60h 6Eh 6Fh

 

Численный пример вычисления суммы трех трехбайтных чисел:

  Ст. Адреса байт Мл.
Мл.символ адреса 0h Ch Dh Eh Fh
1-е слагаемое 20h   B9    
2-е слагаемое 30h     D1 BC
3-е слагаемое 40h   BB E1  
АС-полуперенос          
С-перенос          
Сумма 1+2 50h   3C    
Р-паритет          
АС-полуперенос          
С- перенос          
Сумма 1+2+3     F8   D4
Р-паритет          
             

 

 

ADP22 PAGE 1

 

1;

2 $MOD845; Использовать таблицу кодов МК ADuC845

---- 3 CSEG; Начало сегмента кодов

0000 4 ORG 0000h; 0000h-начальный адрес сегмента кодов

0000 782F 7 mov R0,#2Fh

0002 793F 8 mov R1,#3Fh

0004 7A04 9 mov R2,#04h

0006 75115F 10 MOV 11H, #5FH

0009 120030 11 CALL AD2

000C 00 12 NOP

000D 784F 13 mov R0,#4Fh

000F 795F 14 mov R1,#5Fh

0011 7A04 15 mov R2,#04h

0013 75116F 16 MOV 11H, #6FH

0016 120030 17 CALL AD2

0019 00 18 nop

0030 19 org 0030h

0030 C3 20 AD2: clr C

0031 E6 21 M2: MOV A, @R0

0032 37 22 ADDC A, @R1

0033 D2D4 23 SETB RS1

0035 F7 24 MOV @R1, A

0036 19 25 DEC R1

0037 C2D4 26 CLR RS1

0039 18 27 DEC R0

003A 19 28 DEC R1

003B DAF4 29 DJNZ R2, M2

003D 22 30 RET

31 END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

ADP2 PAGE 2

 

AD2............... C ADDR 0030H

M2............... C ADDR 0031H

RS1............... B ADDR 00D4H PREDEFINED

 

 

Данные до начала вызова подпрограммы AD2 в первый раз:

Результат после выполнения первого цикла подпрограммы:

Результат после выполнения второго цикла подпрограммы:

Результат после выполнения третьего цикла подпрограммы:

Результат после выполнения четвертого цикла подпрограммы:

 

Данные до начала вызова подпрограммы AD2 во второй раз:

Результат после выполнения первого цикла подпрограммы:

Результат после выполнения второго цикла подпрограммы:

Результат после выполнения третьего цикла подпрограммы:

Результат после выполнения четвертого цикла подпрограммы:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-12-29 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: