Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Заполнение 2 страницы ВПД дополнительным кодом однобайтного числа со знаком (от –128 до 127) с помощью COMP1A



ЗАДАЧА 1.1

Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), заполняющую область ВПД (задана начальным 0031h и конечным адресами 003Dh) константой 0EEh.

Исходный текст

; L1.ASM 

;

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

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

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

MOV A, #0EEh; Отправляем константу в аккумулятор

MOV DPTR, #31h; Задаем начальный адрес ВПД для заполнения константой

MOV R2, #30h; Устанавливаем количество циклов 

M2:      MOVX @DPTR,A; Заполняем ячейку ВПД по адресу                  

                                          ;хранящимся в DPTR константой

INC DPTR; Увеличиваем значение DPTR на 1, следующий адрес ВПД

INC R2; Увеличиваем значение счетчика циклов

CJNE R2,#3Dh,M2; Проверка: Циклы все? Если содержимое R2 равно константе #3Dh- выход

                                             ; из цикла         

END

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

L1DPTR                                                                                                   PAGE 1

                  1 ; L1.ASM 

                  2 ;

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

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

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

                                            6   

0000 74EE                         7 MOV A, #0EEh;

0002 900031                     8  MOV DPTR, #31h;

0005 7A30                         9 MOV R2, #30h;

                                           10   

0007 F0                             11 M2: MOVX @DPTR,A;

0008 A3                            12  INC DPTR;

0009 0A                            13  INC R2;

000A BA3DFA                  14 CJNE R2,#3Dh,M2;

                                           15           

                                           16 END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

L1DPTR                                                                                                   PAGE 2

 

M2 . . . . . . . . . . . . . . . C ADDR 0007H 

 

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

 

 

ЗАДАЧА 1.2

1.2.1. Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), заполняющую первую страницу ВПД (задана начальным 0100h и конечным 01FFh адресами) по принципу «содержимое равно младшему байту адреса». Начальный адрес задавать через P2 и R1. При проверке «Циклы все?» использовать команду JNZ rel.

Исходный текст

;

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

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

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

MOV R1,#00h; Вводим младший байт ВПД

MOV P2,#01h; Вводим старший байт ВПД

MOV А,#00h; Отправляем константу в аккумулятор

M2:      MOVX @R1, A; Заполняем ячейку ВПД по принципу «содержимое равно младшему 

                                 ; байту адреса»

INC R1; Увеличиваем значение содержимого регистра РПД R1

INC A; Увеличиваем значение аккумулятора

JNZ M2; Проверка: Циклы все? Если содержимое аккумулятора равен 0 – выход из цикла

NOP;

END

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

MAK5                                                                                                     PAGE 1

 

                           1 ;

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

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

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

                           5           

0000 7900        6       MOV R1,#00h

0002 75A001   7       MOV P2,#01h

0005 7400             8       MOV A,#00h

0007 F3            9 M2: MOVX @R1, A

0008 09            10       INC R1

0009 04            11       INC a  

000A 70FB       12       JNZ M2 

000C 00           13       NOP

                          14          END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

MAK5                                                                                                     PAGE 2

 

M2 . . . . . . . . . . . . . . . C ADDR 0007H 

P2 . . . . . . . . . . . . . . . D ADDR 00A0H PREDEFINED 

 

 

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


 ЗАДАЧА 1.3

1.3.1. Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), копирующую содержимое первой страницы ВПД (задана начальным 0100h и конечным 01FFh адресами) на вторую по принципу «содержимое равно младшему байту адреса». Адреса на первой странице задавать через P2 и R1, а на второй – через DPTR. При проверке «Циклы все?» использовать команду CJNE R1,#d8,rel.

Исходный текст

;

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

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

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

MOV R1,#00h

MOV P2,#01h

MOV A,#00h

M2:      MOVX @R1, A

INC R1

INC a    

JNZ M2

 

MOV DPTR, #0200h

MOV P2,#01h

MOV R1,#00h

M3:      MOV A, @R1

MOVX @DPTR,A

INC DPTR

INC R1

CJNE R1,#0FFh,M3

INC A

MOVX @DPTR,A

NOP

END

Заполнение 1страницы:

Заполнение 2 страницы:

 

ЗАДАЧА 1.4

1.4.1. Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), обрабатывающую содержимое первой страницы ВПД (прямой код однобайтного числа со знаком (от -128 до + 127)). Результат обработки должен помещаться по соответствующему адресу второй (третьей) страницы в виде дополнительного кода однобайтного числа со знаком. Программы перевода прямого кода в дополнительный COMP1A и COMP1B

;

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

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

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

;Заполнение 1 страницы ВПД прямым кодом однобайтного числа со знаком (от -128 до +     

;127)

mov R1,#00h

mov P2,#01h

mov a,#80h

MOVX @R1,A

mov a,#0FFh

M2:      inc R1

movx @R1, A

dec a

CJNE A,#7Fh,M2             

MOV A,#00h

M3: movx @R1,A

inc A

inc R1

CJNE A,#80h,M3

NOP

; Заполнение 2 страницы ВПД дополнительным кодом однобайтного числа со знаком (от –

; 128 до 127)  с помощью COMP1A

MOV DPTR,#0200h

mov P2,#01h

MOV R1,#00h

M4:      MOVX A,@R1

JNB ACC.7,M5

ANL A, #07Fh

CPL A

ADD A, #01h

M5:      MOVX @DPTR,A

INC DPTR

INC R1

CJNE R1,#00h,M4

NOP

; Заполнение 3 страницы ВПД дополнительным кодом однобайтного числа со знаком (от –

; 128 до 127)  с помощью COMP1B

MOV DPTR,#0300h

MOV R1,#00h

mov P2,#01h

M6:      MOVX A,@R1

JNB ACC.7,M7

CPL A

ADD A,#01H

ORL A, #80H

M7:      MOVX @DPTR,A

INC DPTR

INC R1

CJNE R1,#00h,M6

END

Заполнение 1 страницы ВПД прямым кодом однобайтного числа со знаком (от -128 до + 127)

 

ЗАДАЧА 1.6.

1.6.1. Разработать программу перевода двухбайтного числа со знаком из прямого кода в дополнительный. Прямой код двухбайтного числа со зна-ком размещать по адресам 2Eh (старший байт) и 2Fh (младший байт) РПД, а полученный дополнительный, программа должна записать по соответствую-щим адресам третьей строки РПД.

MOV A,2Eh

JNB ACC.7,M1; Проверка знака

MOV A, 2Eh ; Извлечение старшего байта

ANL A,#7Fh ; Маскирование бита знака

CPL A ; Обратный код старшего байта

MOV 3Eh,А ; Хранение старшего байта

MOV A, 2Fh  ; Извлечение младшего байта

CPL A ; Обратный код младшего байта

ADD A,#01h ; Добавление 1 в младший байт

MOV 3Fh,A ; Хранение младшего байта

CLR A ; [A]=0 Добавление переноса в

ADDC A, 2Eh  ; A<=[A]+[R4]+[C] старший байт

MOV 3Eh,А ; Хранение старшего байта

CALL M2

NOP ; Конец фрагмента

M1:

MOV 3Eh,2Eh

MOV 3Fh,2Fh

M2: NOP

END

ЗАДАЧА 1.1

Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), заполняющую область ВПД (задана начальным 0031h и конечным адресами 003Dh) константой 0EEh.

Исходный текст

; L1.ASM 

;

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

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

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

MOV A, #0EEh; Отправляем константу в аккумулятор

MOV DPTR, #31h; Задаем начальный адрес ВПД для заполнения константой

MOV R2, #30h; Устанавливаем количество циклов 

M2:      MOVX @DPTR,A; Заполняем ячейку ВПД по адресу                  

                                          ;хранящимся в DPTR константой

INC DPTR; Увеличиваем значение DPTR на 1, следующий адрес ВПД

INC R2; Увеличиваем значение счетчика циклов

CJNE R2,#3Dh,M2; Проверка: Циклы все? Если содержимое R2 равно константе #3Dh- выход

                                             ; из цикла         

END

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

L1DPTR                                                                                                   PAGE 1

                  1 ; L1.ASM 

                  2 ;

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

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

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

                                            6   

0000 74EE                         7 MOV A, #0EEh;

0002 900031                     8  MOV DPTR, #31h;

0005 7A30                         9 MOV R2, #30h;

                                           10   

0007 F0                             11 M2: MOVX @DPTR,A;

0008 A3                            12  INC DPTR;

0009 0A                            13  INC R2;

000A BA3DFA                  14 CJNE R2,#3Dh,M2;

                                           15           

                                           16 END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

L1DPTR                                                                                                   PAGE 2

 

M2 . . . . . . . . . . . . . . . C ADDR 0007H 

 

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

 

 

ЗАДАЧА 1.2

1.2.1. Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), заполняющую первую страницу ВПД (задана начальным 0100h и конечным 01FFh адресами) по принципу «содержимое равно младшему байту адреса». Начальный адрес задавать через P2 и R1. При проверке «Циклы все?» использовать команду JNZ rel.

Исходный текст

;

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

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

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

MOV R1,#00h; Вводим младший байт ВПД

MOV P2,#01h; Вводим старший байт ВПД

MOV А,#00h; Отправляем константу в аккумулятор

M2:      MOVX @R1, A; Заполняем ячейку ВПД по принципу «содержимое равно младшему 

                                 ; байту адреса»

INC R1; Увеличиваем значение содержимого регистра РПД R1

INC A; Увеличиваем значение аккумулятора

JNZ M2; Проверка: Циклы все? Если содержимое аккумулятора равен 0 – выход из цикла

NOP;

END

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

MAK5                                                                                                     PAGE 1

 

                           1 ;

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

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

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

                           5           

0000 7900        6       MOV R1,#00h

0002 75A001   7       MOV P2,#01h

0005 7400             8       MOV A,#00h

0007 F3            9 M2: MOVX @R1, A

0008 09            10       INC R1

0009 04            11       INC a  

000A 70FB       12       JNZ M2 

000C 00           13       NOP

                          14          END

 

VERSION 1.2h ASSEMBLY COMPLETE, 0 ERRORS FOUND

MAK5                                                                                                     PAGE 2

 

M2 . . . . . . . . . . . . . . . C ADDR 0007H 

P2 . . . . . . . . . . . . . . . D ADDR 00A0H PREDEFINED 

 

 

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


 ЗАДАЧА 1.3

1.3.1. Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), копирующую содержимое первой страницы ВПД (задана начальным 0100h и конечным 01FFh адресами) на вторую по принципу «содержимое равно младшему байту адреса». Адреса на первой странице задавать через P2 и R1, а на второй – через DPTR. При проверке «Циклы все?» использовать команду CJNE R1,#d8,rel.

Исходный текст

;

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

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

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

MOV R1,#00h

MOV P2,#01h

MOV A,#00h

M2:      MOVX @R1, A

INC R1

INC a    

JNZ M2

 

MOV DPTR, #0200h

MOV P2,#01h

MOV R1,#00h

M3:      MOV A, @R1

MOVX @DPTR,A

INC DPTR

INC R1

CJNE R1,#0FFh,M3

INC A

MOVX @DPTR,A

NOP

END

Заполнение 1страницы:

Заполнение 2 страницы:

 

ЗАДАЧА 1.4

1.4.1. Разработать программу (на базе конструкции «Простейший цикл», см.рис.1), обрабатывающую содержимое первой страницы ВПД (прямой код однобайтного числа со знаком (от -128 до + 127)). Результат обработки должен помещаться по соответствующему адресу второй (третьей) страницы в виде дополнительного кода однобайтного числа со знаком. Программы перевода прямого кода в дополнительный COMP1A и COMP1B

;

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

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

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

;Заполнение 1 страницы ВПД прямым кодом однобайтного числа со знаком (от -128 до +     

;127)

mov R1,#00h

mov P2,#01h

mov a,#80h

MOVX @R1,A

mov a,#0FFh

M2:      inc R1

movx @R1, A

dec a

CJNE A,#7Fh,M2             

MOV A,#00h

M3: movx @R1,A

inc A

inc R1

CJNE A,#80h,M3

NOP

; Заполнение 2 страницы ВПД дополнительным кодом однобайтного числа со знаком (от –

; 128 до 127)  с помощью COMP1A

MOV DPTR,#0200h

mov P2,#01h

MOV R1,#00h

M4:      MOVX A,@R1

JNB ACC.7,M5

ANL A, #07Fh

CPL A

ADD A, #01h

M5:      MOVX @DPTR,A

INC DPTR

INC R1

CJNE R1,#00h,M4

NOP

; Заполнение 3 страницы ВПД дополнительным кодом однобайтного числа со знаком (от –

; 128 до 127)  с помощью COMP1B

MOV DPTR,#0300h

MOV R1,#00h

mov P2,#01h

M6:      MOVX A,@R1

JNB ACC.7,M7

CPL A

ADD A,#01H

ORL A, #80H

M7:      MOVX @DPTR,A

INC DPTR

INC R1

CJNE R1,#00h,M6

END

Заполнение 1 страницы ВПД прямым кодом однобайтного числа со знаком (от -128 до + 127)

 

Заполнение 2 страницы ВПД дополнительным кодом однобайтного числа со знаком (от –128 до 127) с помощью COMP1A

 


Поделиться:



Последнее изменение этой страницы: 2019-04-10; Просмотров: 97; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.094 с.)
Главная | Случайная страница | Обратная связь