Скачать:
Отчет по лабораторной работе №141
по теме:
«Виды памяти в программной модели ядра МКС (на базе INTEL 8051)»
по дисциплине «Вычислительные машины, системы и сети»
Виды памяти в программной модели ядра МКС (на базе INTEL 8051)
1. Задача 1.1
Следует разработать программу на базе «Простейшего цикла», заполняющую область ВПД (с 0031h по 003Dh) константой 0EEh (рисунки 1, 2 и 3).
1 |
Установка параметров 1-го цикла |
MOV A,#0EEh MOV DPTR,#0031h |
|
2 |
Основное действие цикла |
Тело цикла |
M2: MOVX @DPTR,A |
3 |
Установка параметров следующего цикла |
INC DPTR MOV R2,DPL |
|
4 |
Проверка. |
CJNE R2,#3Eh,M2 |
|
5 |
Стоп |
NOP |
а) назначение блоков и программа б) блок схема
Рис. 1– Простейший цикл на основе CJNE R2,#d8,rel
MOV A,#0EEh – записать в аккумулятор константу EEh, чтобы заполнять ею ВПД
MOV DPTR,#0031h – Записываем в РПД константу 0031h, младший байт определяет начальный адрес заполнения.
MOV R2,DPL – скопировать в R2 младший байт DPTR, который определяет следующий адрес.
Рис. 2– Листинг ПП
Рис. 3– ВПД с конечным результатом
2. Задача 1.2
Следует разработать программу на базе «Простейшего цикла», заполняющую первую страницу ВПД (с 0100h по 01FFh) по принципу «содержимое равно младшему байту адреса», с использованием Р2 и R1 и команды JNZ rel (рисунки 4, 5 и 6).
1 |
Установка параметров 1 цикла |
MOV R1,#00h MOV P2,#01h MOV A,#00h |
|
2 |
Основное действие цикла |
Тело цикла |
M2: MOVX @R1,A |
3 |
Установка параметров следующего цикла |
INC R1 INC A |
|
4 |
Проверка. |
JNZ M2 |
|
5 |
Стоп |
NOP |
а) назначение блоков и программа б) блок схема
Рис. 4– Заполнение 1 страницы ВПД содержимым равным адресу
Рис. 5– Листинг ПП
Рис. 6– Результат содержимого 1 страницы ВПД
3. Задача 1.3
Следует разработать программу на базе «Простейшего цикла», копирующую содержимое первой страницы ВПД (с 0100h по 01FFh) на вторую по принципу «содержимое равно младшему байту адреса», с использованием Р2 и R1 на первой и DPTR на второй странице и команды СJNЕ R1,#d8,rel (рисунки 7, 8 и 9).
1 |
Установка параметров 1 цикла |
MOV R1,#00h MOV P2,#01h MOV DPTR,#0200h |
|
2 |
Основное действие цикла |
Тело цикла |
M1: MOVX @R1,A MOVX @DPTR,A |
3 |
Установка параметров следующего цикла |
INC R1 INC DPTR |
|
4 |
Проверка. |
СJNЕ R1,#00h,M1 |
|
5 |
|
NOP |
а) назначение блоков и программа б) блок схема
Рис. 7 – Копирование содержимого 1 страницы ВПД во вторую
Рис. 8 – Листинг ПП
Рис. 9 – Результат 2 страницы ВПД, если задать 1 страницу как в зад.1.2
4. Задача 1.4
Следует разработать программу на базе «Простейшего цикла», обрабатывающую содержимое первой страницы ВПД (принимаемый за прямой код однобайтового числа со знаком) и помещающий его по соответствующему адресу во вторую страницу в виде дополнительного кода.
1 |
Установка параметров 1 цикла |
MOV R1,#00h MOV P2,#01h MOV DPTR,#0200h |
|
2 |
Основное действие цикла |
Тело цикла |
M2: MOVX A,@R1 JNB Acc.7,M3 COMP1A: ….. M3: MOVX @DPTR,A
|
3 |
Установка параметров следующего цикла |
INC R1 INC DPTR |
|
4 |
Проверка. |
СJNЕ R1,#00h,M2 |
|
5 |
|
NOP |
а) назначение блоков и
программа б) блок схема
Рис. 7 – Помещение ДК во 2ую страницу ВПД с использованием команд программы COMP1A
Рис. 8 – Листинг ПП
Рис. 9 – Результат 2-ой и 3-ей страницы ВПД, если задать 1 страницу как в зад.1.2
5. Задача 1.5
Следует разработать программу, суммирующую ДК одинаковых по модулю, но противоположных по знаку чисел, помещающую результат по соответствующему адресу нижней половины страницы 02h ВПД.
Одинаковые по модулю, но противоположные по знаку числа будут находиться в верхней части страницы ВПД (положительные) и нижней(отрицательные). ДК в верхней части равен самому положительному числу, а для нижней части он приведён по специальному методу (FFh – есть ДК числа -1, FEh –числа -2 и т.д.).
Листинг и результат разработанной программы представлен на рисунках 10 и 11.
Рис. 10 – Листинг ПП
а – область ВПД б – область РПД
Рис. 11 – Результат работы программы
6. Задача 1.6
Следует разработать программу перевода двухбайтного числа со знаком из прямого кода в ДК. ПК двухбайтного числа размещать по адресам 2Еh (старший байт) и 2Fh (младший байт) РПД, а полученный ДК программа должна записать по соответствующим адресам третьей строки РПД.
ORG 0000h ; 0000h-начальный адрес сегмента кодов
MOV 2Eh,R6 ; содержимое старшего в R6 до начала
MOV 2Fh,R7 ; содержимое младшего в R7 до начала
JB 2Eh.7,M1 ; если 7 бит старшего=1, ищем ДК по M1
MOV 3Eh,2Eh ; если 7 бит старшего не=1содержимое R6 записать в 3Eh
MOV 3Fh,2Fh ; если 7 бит старшего не=1содержимое R7 записать в 3Fh
SJMP M2 ; прыжок в конец
M1: MOV A,2Eh ; в А копируем старший
ANL A,#7Fh ; старший байт умнож. на 0111 1111
CPL A ; инверсия старшего в А
MOV 3Eh,A ; содержимое А копируется в 3Eh (старший)
CLR A ; очистка А
ADDC A,3Eh ; перенос в старшем
MOV 3Eh,A ; в А копируется содержимое 3Eh
CLR A ; чистим А
MOV A,2Fh ; в А копируем младший
CPL A ; инверсия младшего в А
ADD A,#01h ; младший +1
MOV 3Fh,A ; содержимое А копируется в 3Fh (младший)
M2: NOP
END
Отрицательное число со знаком 8E73h = 1000111001110011 (ПК) ДК: 1111000110001101=F18Dh (Рис. );
Отрицательное число со знаком C673h = 1100011001110011 (ПК) ДК: 1011100110001101=B98Dh(Рис. );
Положительное число 0E67h (ПК равен ДК) (Рис. );
Положительное число 0B31h (ПК равен ДК) (Рис. ).
Рис. 12 – Дополнительный код числа 8E73h
Рис. 13 - Дополнительный код числа C673h
Рис. 14 – Число 0E67h прямой код равен дополнительному
Рис. 7 - Число 0E67h прямой код равен дополнительному