Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Заполнение 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; Просмотров: 112; Нарушение авторского права страницы