
отчеты по лабораторным работам / общий отчет / Битовые операции
.docЛабораторная работа по Организации ЭВМ
Битовые операции
Выполнили: студенты группы 2100
Митрофанов Александр
Пермяков Валерий
z=(x1 v /(x2x3))(/x2 v x4)
Реализация задачи на С
#include <reg51.h>
char bdata mem;
unsigned short int bdata out = 0;
sbit x1=mem^0;
sbit x2=mem^1;
sbit x3=mem^2;
sbit x4=mem^3;
sbit z = out^8;
// z= (x1 v /x2x3)(/x2 v x4)
main()
{
for(mem=15;mem>=0;mem--)
{
out <<= 1;
z =((x1|(~(x2&x3)))&((~x2)|x4));
}
P0 = out & 0xFF;
P1 = (out >> 8);
while (1);
}
Реализация задачи на ассемблере
mem equ 0x20
outl equ 0x21
outh equ 0x22
bseg at 0x23
x1 bit mem.0
x2 bit mem.1
x3 bit mem.2
x4 bit mem.3
y bit outl.0
tunec1 bit acc.0
tunec2 bit acc.1
cseg at 0
mov r0, #0x16
mov outl, #0
mov outh, #0
cyc:
mov a, outl
clr c
rlc a
mov outl, a
mov a, outh
rlc a
mov outh, a
mov a, r0
dec a
mov mem, a
mov c, x2 ; c=x2
anl c, x3 ; c=x2&x3
cpl c ; c=/x2&x3
orl c, x1 ; c=(/x2&x3 | x1)
mov tunec1, c ; tunec1=(/x2&x3 | x1)
mov c, x2 ; c=x2
cpl c ; c=/x2
orl c, x4 ; c=(/x2 | x4)
anl c, tunec1 ; c=(/x2&x3 | x1)&(/x2 | x4)
mov y, c
djnz r0, cyc
mov P0, outl
mov P1, outh
noper:
sjmp noper
end