Добавил:
Кафедра ВТ Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
1
Добавлен:
07.04.2023
Размер:
324.13 Кб
Скачать

Порядок выполнения работы

  1. Подготовить программы на Ассемблере, реализующие заданную логическую функцию с использованием выше описанных методов. Значения аргументов функции целесообразно вводить, например, с битов порта Р0.0–Р0.3. Результат вывести в порт Р1: если функция принимает значение "1", байт индикации имеет значение FFh, в противном случае - 00h.

  2. С помощью кросс-отладчика проверить правильность этих программ и оценить время вычисления функции различными методами для фиксированной комбинации входных переменных.

Общий алгоритм подготовки программного обеспечения:

Для подготовки исходного текста программы на входном языке, может использоваться любой редактор, формирующий текстовый файл в коде ASCII. В настоящем цикле лабораторных работ в целях глубокого изучения архитектуры ОМК в качестве входного языка используется язык ассемблера. Для трансляции исходного текста программы в объектный код в данном цикле лабораторных работ используется ассемблер ASM51. На этапе трансляции выявляются и должны быть исправлены синтаксические ошибки в исходном тексте. При разработке достаточно сложных многомодульных программ используется также редактор связей (линкер), который позволяет включать в исполняемую программу независимо разработанные и библиотечные модули.

Часть 2.1

ASM:

$mod52

;(x1 XOR x2)&(!x3 OR x4)

M1:

MOV A,P0;читаем данные с порта

SETB C

MOV C,ACC.0;читаем первый бит данных

;если он 0,то сбросим флаг переноса С

JC R1_1

MOV R1,#0h;запишем в X1 значение 0

JMP FINR1

R1_1:

MOV R1,#1h;запишем в X1 значение 1

FINR1:

RR A

SETB C

MOV C,ACC.0

JC R2_1

MOV R2,#0h;запишем в X2 значение 0

JMP FINR2

R2_1:

MOV R2,#1h;запишем в X2 значение 1

FINR2:

RR A

SETB C

MOV C,ACC.0

JC R3_1

MOV R3,#0h;запишем в X3 значение 0

JMP FINR3

R3_1:

MOV R3,#1h;запишем в X3 значение 1

FINR3:

RR A

SETB C

MOV C,ACC.0

JC R4_1

MOV R4,#0h;запишем в X4 значение 0

JMP FINR4

R4_1:

MOV R4,#1h;запишем в X4 значение 1

FINR4:

MOV A,R1

XRL A,R2;(x1 XOR x2)

MOV R0,A

MOV B,R3

CPL B

MOV A,B;!x3

ORL A,R4;(!x3 OR x4)

ANL A,R0;(x1 XOR x2)&(!x3 OR x4)

JB ACC.0,OUTIS1

MOV P1, #0h

JMP M1

OUTIS1:

MOV P1, #0ffh

JMP M1

END

Часть 2.2

ASM:

$mod52

;(x1 XOR x2)&(!x3 OR x4)

M1:

MOV A,P0;читаем данные с порта

SETB C

MOV C,ACC.0;читаем первый бит данных

;если он 0,то сбросим флаг переноса С

JC X1_1

;в X1 значение 0

SETB C

MOV C,ACC.1

JC X2_1

;в X2 значение 0

JMP OUTIS0;вывод false

X2_1:

;в X2 значение 1

SETB C

MOV C,ACC.2

JC X3_1

;в X3 значение 0

JMP OUTIS1;вывод true

X3_1:

;в X3 значение 1

SETB C

MOV C,ACC.3

JC X4_1

;в X4 значение 0

JMP OUTIS0;вывод false

X4_1:

;в X4 значение 1

JMP OUTIS1;вывод true

X1_1:

;в X1 значение 1

SETB C

MOV C,ACC.1

JNC X2_1

JMP OUTIS0;вывод false

OUTIS0:

MOV P1, #0h

JMP M1

OUTIS1:

MOV P1, #0ffh

JMP M1

END

Часть 2.3

ASM:

$mod52

ORG 0h

M1:

MOV A,#0

MOV DPTR,#init;Устанавливаем указатель DPTR на начало данных

MOV DPH, #11h;в старший байт регистра DPTR загрузим значение 11h

MOV DPL, P0;а в младший байт регистр DPTR – содержимое порта P0

MOVC A, @A+DPTR;Чтение данных из CSEG по адресу (A)+(DPTR)

MOV B,A

MOV C,B.0;проверяем, что содержится в выбранной нами с порта ячейке таблицы

JC result

MOV P1,#0

JMP M1

result:

MOV P1,#0ffh

JMP M1

ORG 1100h

init:

DB 0,1,1,0,0,0,0,0,0,1,1,0,0,1,1,0

END

Соседние файлы в папке Первый чел