Лабораторная работа 3 / mps_lab3
.docСанкт-Петербургский государственный электротехнический университет
Кафедра ВТ
Микропроцессорные системы
Отчет по лабораторной работе №3
Вариант 1
Выполнили: Попов А.
Таранюк М.
Гр.2372
Проверила: Головина Л.К.
Санкт-Петербург
2006
Таблица истинности
y =
x1 |
x2 |
X3 |
x4 |
y |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
0 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
1 |
0 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
1.Вычисление логической функции с помощью команд байтовых поразрядных логических операций.
С помощью логических функций производим вычисления:
punkt1:
mov a,r1
cpl a
anl a,#01h
mov r1,a
mov a,r2
cpl a
anl a,#01h
mov r2,a
mov a,r0
anl a,r1
orl a,r2
anl a,r3
mov r4,a
jmp IDLE
2. Использование команд условных переходов.
Построив логическое дерево, реализуем его в коде:
punkt2:
mov a,r0
rrc a
jnc x10
jc x11
x10:
mov a,r2
rrc a
jnc x10x30
jc x10x31
x10x30:
mov a,r3
rrc a
jnc x10x30x40
jc x10x30x41
x10x31:
mov r4,#0h
jmp xEnd
x10x30x40:
mov r4,#0h
jmp xEnd
x10x30x41:
mov r4,#1h
jmp xEnd
x11:
mov a,r1
rrc a
jnc x11x20
jc x11x21
x11x20:
mov a,r3
rrc a
jnc x11x20x40
jc x11x20x41
x11x20x40:
mov r4,#0h
jmp xEnd
x11x20x41:
mov r4,#1h
jmp xEnd
x11x21:
mov a,r2
rrc a
jnc x11x21x30
jc x11x21x31
x11x21x30:
mov a,r3
rrc a
jnc x11x21x30x40
jc x11x21x30x41
x11x21x30x40:
mov r4,#0h
jmp xEnd
x11x21x30x41:
mov r4,#1h
jmp xEnd
x11x21x31:
mov r4,#0h
jmp xEnd
xEnd:
jmp IDLE
3.Табличный способ.
Используя таблицу истинности, получаем:
punkt3:
// tablichnii sposob
mov a,r0
rl a
rl a
rl a
mov r0,a
mov a,r1
rl a
rl a
mov r1,a
mov a,r2
rl a
mov r2,a
mov a,#0h
add a,r0
add a,r1
add a,r2
add a,r3 //schitaem nomer stroki po kotoromu legit otvet
jnz NeNol
mov dptr,#30h //esli nomer=0 to zapisivaem otvet
movx a,@dptr
anl a,#1h
mov r4,a
jmp NolEnd
NeNol:
mov r0,a //elsi nomer ne raven 0, to smotrim po kakomu adresu ego iskt'
subb a,#08h // esli nomer<8 - 1 addr, esli nomer>8 - 2 addr
jc Ad0
jnc Ad1
Ad0:
mov a,r0
mov r1,a
mov r0,#30h
jmp AdEnd
Ad1:
mov r1,a
mov r0,#31h
jmp AdEnd
AdEnd:
mov a,@r0
Sdvig:
rr a //sdvigaem i nahodim otvet
djnz r1,Sdvig
anl a,#01h
jz A0
jnz A1
A0:
mov r4,#0h
jmp NolEnd
A1:
mov r4,#1h
jmp NolEnd
NolEnd:
jmp IDLE
4.Использование команд битовых операций.
Произведя необходимые подготовительные действия, производим аналогичные логические операции, что и в пункте 1:
punkt4:
// bitovii operacii
mov 20h,#00h
mov 21h,#00h
mov 22h,#00h
mov 23h,#00h
mov 24h,#00h
mov 25h,#00h
mov 26h,#00h
mov 27h,#00h //obnulaem pamiat' chtobi ne bilo oshibok
clr c
mov a,r0
jz rx00
jnz rx01
rx01:
setb c
jmp rx0r
rx00:
clr c
jmp rx0r
rx0r:
mov 10h,c //zapisivaem 1-ii bit
clr c
mov a,r1
jz rx10
jnz rx11
rx11:
setb c
jmp rx1r
rx10:
clr c
jmp rx1r
rx1r:
mov 11h,c //zapisivaem 2-ii bit
clr c
mov a,r2
jz rx20
jnz rx21
rx21:
setb c
jmp rx2r
rx20:
clr c
jmp rx2r
rx2r:
mov 12h,c //zapisivaem 3-ii bit
clr c
mov a,r3
jz rx30
jnz rx31
rx31:
setb c
jmp rx3r
rx30:
clr c
jmp rx3r
rx3r:
mov 13h,c //zapisivaem 4-ii bit
mov c,11h
cpl c
mov 11h,c
mov c,12h
cpl c
mov 12h,c
mov c,10h //logika operacii vziata iz 1-go punkta
anl c,11h
orl c,12h
anl c,13h
mov 14h,c
mov a,22h
anl a,#10h
jz LC0
jnz LC1
LC1:
mov r4,#01h
jmp pEnd
LC0:
mov r4,#00h
jmp pEnd
pEnd:
jmp IDLE