Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Teslenko_Drobyazko_Systeme_programuvannia_Lab

.pdf
Скачиваний:
56
Добавлен:
17.03.2016
Размер:
1.43 Mб
Скачать

Таблиця 2-2.1

 

Варіанти завдання

1.

 

2.

 

#include <stdio.h>

 

#include <stdio.h>

int A[8];

 

int A[9];

int k;

 

int i,j;

 

int main(){

 

int main(){

int i,j;

 

i=0;

 

k=1;

 

while(i<9){

i=0;

 

j=2*i;

 

do{

 

switch(i){

j=i+k*2;

 

case 5:j+=10; break;

if(j>11)

 

case 6: j*=2; break;

A[i]=j;

 

case 7: j-=4; break;

else{

 

case 8: j=7; break;

k+=1;

 

default: j++;

A[i]=k;

 

}

 

}

 

A[i]=j;

i++;

 

i++;

 

}while(i<8);

 

}

 

for(i=0;i<8;i++)

 

for(i=0;i<9;i++)

printf("%d ",A[i]);

 

printf("%d ",A[i]);

printf("\n");

 

printf("\n");

return 0;

 

return 0;

}

 

}

 

3.

 

4.

 

#include <stdio.h>

 

#include <stdio.h>

int i,k;

 

int A[8];

int main(){

 

int main(){

int j;

 

int

i,d;

int A[9];

 

d=1;

 

k=1;

 

i=7;

 

for(i=0;i<=8;i++){

 

do{

 

j=k+i*3;

 

d=i%2;

if(j>18)

 

if(!d)

 

A[i]=j;

 

A[i]=i;

else{

 

else

 

k+=2;

 

A[i]=-i;

A[i]=k;

 

i--;

 

}

 

}while(i>=0);

}

 

for(i=0;i<8;i++)

for(i=0;i<=8;i++)

 

printf("%d ",A[i]);

printf("%d ",A[i]);

 

printf("\n");

printf("\n");

 

return 0;

return 0;

 

}

 

}

 

 

 

71

 

 

Продовження табл. 2-2.1

 

 

 

5.

 

6.

#include <stdio.h>

#include <stdio.h>

int A[7];

int A[8];

int d;

 

int main(){

int main(){

int p,k;

int i;

 

k=1;

d=1;

 

p=0;

i=0;

 

do{

while(i<=6){

k=p;

A[i]=i | d;

k++;

d+=A[i];

switch(p){

if(d>10)

case 0: k=99; break;

A[i]=127-i;

case 2: k+=10; break;

i++;

 

case 4: k*=2; break;

}

 

case 6: k-=4; break;

for(i=0;i<7;i++)

default: k*=4;

printf("%d ",A[i]);

}

printf("\n");

A[p]=k;

return 0;

p++;

}

 

}while(p<8);

 

 

for(p=0;p<8;p++)

 

 

printf("%d ",A[p]);

 

 

printf("\n");

 

 

return 0;

 

 

}

7.

 

8.

#include <stdio.h>

#include <stdio.h>

char b;

 

char a1,c;

int c;

 

int A[13];

int main(){

int main(){

int

a1;

char b;

int A[7];

a1=2;

a1=3;

 

b=12;

c=0;

 

while(b>=0){

for(b=0;b<7;b++){

if(b<10)

c+=3;

 

c=a1*2;

if(c<9)

else

a1=5*c+b+1;

c-=a1;

else

 

A[b]=c;

a1=b<<2;

a1+=b;

A[b]=a1;

b--;

}

 

}

for(b=0;b<7;b++)

for(b=0;b<13;b++)

printf("%d ",A[b]);

printf("%d ",A[b]);

printf("\n");

printf("\n");

return 0;

return 0;

}

 

}

 

 

 

72

 

Продовження табл. 2-2.1

 

 

9.

10.

#include <stdio.h>

#include <stdio.h>

int c;

int A[11];

int A1[12];

int main(){

int main(){

int l,k;

int a;

char j;

char b;

l=2;

a=6;

k=0;

b=0;

for(j=0;j<11;j++){

do{

k=j;

if(a>b)

l+=8;

c=a*3-b;

k++;

else

switch(j){

c=a*2+b;

case 1: k=0; break;

A1[b]=c;

case 3: k+=l; break;

b++;

case 5: k-=l; break;

}while(b!=12);

case 6: k=2*l-k; break;

for(b=0;b<12;b++)

default: k--;

printf("%d ",A1[b]);

}

printf("\n");

A[j]=k;

return 0;

}

}

for(j=0;j<11;j++)

 

printf("%d ",A[j]);

 

printf("\n");

 

return 0;

 

}

11.

12.

#include <stdio.h>

#include <stdio.h>

int k;

int l,k;

int main(){

int A[11];

int A[10];

int main(){

char j;

char j;

k=3;

l=2;

j=0;

k=64;

while(j<10){

j=10;

if(j!=7)

do{

k+=j;

if(j%4==0)

A[j]=k;

k/=l;

j++;

else

}

k+=l;

for(j=0;j<10;j++)

A[j]=k;

printf("%d ",A[j]);

j--;

printf("\n");

}while(j>=0);

return 0;

for(j=0;j<11;j++)

}

printf("%d ",A[j]);

 

printf("\n");

 

return 0;

 

}

73

 

Продовження табл. 2-2.1

 

 

13.

14.

#include <stdio.h>

#include <stdio.h>

int p,j;

int A[11];

int main(){

int main(){

int A[11];

int j;

for(p=0;p<11;p++){

j=0;

j=32-2*p;

A[4]=0;

switch(p){

while(j<11){

case 9: j*=2; break;

if(j>5)

case 7: j+=15; break;

A[j]=A[j-1]+j;

case 4: j=-5; break;

else

case 2: j-=8; break;

A[j] = j*j;

case 0: j=0; break;

j++;

default: j=77;

}

}

for(j=0;j<11;j++)

A[p]=j;

printf("%d ",A[j]);

}

printf("\n");

for(j=0;j<11;j++)

return 0;

printf("%d ",A[j]);

}

printf("\n");

 

return 0;

 

}

 

15.

16.

#include <stdio.h>

#include <stdio.h>

int j;

int A[11];

int main(){

int s;

int A[11];

int main(){

j=2;

int i;

A[1]=1;

s=0;

A[0]=1;

for(i=0;i<11;i++){

do{

A[i]=2*i;

A[j]=A[j-1]+A[j-2];

s+=A[i];

if(A[j]>62)

if(s>10)

A[j]=0;

A[i]=s;

j++;

}

}while(j<11);

for(i=0;i<11;i++)

for(j=0;j<11;j++)

printf("%d ",A[i]);

printf("%d ",A[j]);

printf("\n");

printf("\n");

return 0; }

return 0;

 

}

 

17.

18.

#include <stdio.h>

#include <stdio.h>

int i,s;

int i;

int main(){

int A[11];

int A[11];

int main(){

s=0;

int s;

i=10;

s=0;

74

Продовження табл. 2-2.1

while(i>=0){

i=0;

s=i*4;

do{

switch(i){

A[i]=2*i;

case 6: s=17; break;

s+=A[i];

case 3: s*=4; break;

if(s>80)

case 4: s+=8; break;

A[i]=s;

default: s-=4;

i++;

}

}while(i<11);

A[i]=s;

for(i=0;i<11;i++)

i--;

printf("%d ",A[i]);

}

printf("\n");

for(i=0;i<11;i++)

return 0;

printf("%d ",A[i]);

}

printf("\n");

 

return 0;

 

}

 

19.

20.

#include <stdio.h>

#include <stdio.h>

int i;

int A[11];

int main(){

int m;

int m;

int main(){

int A[11];

int i;

m=1;

m=1;

for(i=0;i<11;i++){

i=0;

m= (m^i) && 1;

while(i<=10){

if(m==1)

A[i]=3*i;

A[i]=2*i;

m+=A[i];

else

if(m>100)

A[i]=2*i+1;

A[i]=2*i;

}

i++;

for(i=0;i<11;i++)

}

printf("%d ",A[i]);

for(i=0;i<11;i++)

printf("\n");

printf("%d ",A[i]);

return 0;

printf("\n");

}

return 0;

 

}

21.

22.

#include <stdio.h>

#include <stdio.h>

int i,m;

int r;

int main(){

int A[10];

int A[9];

int main(){

m=0;

int i;

i=8;

r=0;

do{

for(i=0;i<10;i++){

m=8*i;

r+=i*2;

switch(i){

if(r<32)

case 2: m+=4; break;

A[i]=r;

case 0: m=17; break;

else

case 7: m-=4; break;

A[i]=r & i;

75

 

Продовження табл. 2-2.1

case 1: m=4; break;

}

default: m++;

for(i=0;i<10;i++)

}

printf("%d ",A[i]);

A[i]=m;

printf("\n");

i--;

return 0; }

}while(i>-1);

 

for(i=0;i<9;i++)

 

printf("%d ",A[i]);

 

printf("\n");

 

return 0;

 

}

 

23.

24.

#include <stdio.h>

#include <stdio.h>

int i,r;

int A[11];

int main(){

int main(){

int A[11];

int i,r;

r=100;

r=0;

i=10;

i=1;

while(i>=0){

A[0]=4;

A[i]=2*i;

do{

r-=A[i];

A[i]=A[i-1]+r;

if(r<0)

r=r | i;

A[i]=-A[i]+1;

if(r>9)

i--;

A[i]=r;

}

i++;

for(i=0;i<11;i++)

}while(i<11);

printf("%d ",A[i]);

for(i=0;i<11;i++)

printf("\n");

printf("%d ",A[i]);

return 0;

printf("\n");

}

return 0;

 

}

25.

26.

#include <stdio.h>

#include <stdio.h>

char i;

char p;

int main(){

char A[11];

char d;

int main(){

int A[4];

int i;

d=1;

p=0;

for(i=0;i<4;i++){

i=0;

d=16*i;

while(p<11){

switch(i){

if(p>=7)

case 0: d+=14; break;

i=i ^ p;

case 1: d*=4; break;

else

case 3: d-=7; break;

i=i | p;

default: d+=10;

A[p]=i;

}

p++;

A[i]=d;

}

}

for(i=0;i<11;i++)

76

 

Продовження табл. 2-2.1

for(i=0;i<4;i++)

printf("%d ",A[i]);

printf("%d ",A[i]);

printf("\n");

printf("\n");

return 0;

return 0;

}

}

 

27.

28.

#include <stdio.h>

#include <stdio.h>

unsigned int A[6];

int j;

int main(){

int main(){

int i,p;

int i;

p=6;

int A[7];

for(i=5;i>=0;i--){

i=3;

if(i<3)

j=0;

p++;

do{

else

if(j<5)

p--;

i+=2*j;

A[i]=p;

else

}

i+=j;

for(i=0;i<6;i++)

A[j]=i;

printf("%d ",A[i]);

j++;

printf("\n");

}while(j<7);

return 0;

for(i=0;i<7;i++)

}

printf("%d ",A[i]);

 

printf("\n");

 

return 0;

 

}

29.

30.

#include <stdio.h>

#include <stdio.h>

int i;

unsigned int A[9];

int A[9];

int main(){

int main(){

int i,k;

int j;

k=0;

i=0;

for(i=0;i<9;i++){

j=0;

k+=i;

while(i<=8){

if(k<9)

j=i+10;

A[i]=i;

switch(i){

else

case 2: j=0; break;

A[i]=k;

case 4: j=13; break;

}

case 6: j*=4; break;

for(i=0;i<9;i++)

case 8: j+=9; break;

printf("%d ",A[i]);

default: j--;

printf("\n");

}

return 0;

A[i]=j;

}

i++;

 

}

 

for(i=0;i<9;i++)

 

printf("%d ",A[i]);

 

printf("\n"); return 0;}

 

77

2-2.6. Контрольні запитання

1.Що відображає мовою Асемблера ідентифікатор змінної мови С++?

2.Як реалізуються мовою Асемблера оператори присвоєння?

3.Як реалізуються мовою Асемблера оператори if та if...else?

4.Як реалізуються мовою Асемблера оператори for?

5.Як реалізуються мовою Асемблера оператори while?

6.Як реалізуються мовою Асемблера оператори do…while?

7.Як реалізується мовою Асемблера оператор switch?

8.Які вимоги ставлять до асемблерних вставок у програмах мовою С++?

78

ЛАБОРАТОРНА РОБОТА №3

Ознайомлення з методами адресації даних

Мета роботи – вивчення типових структур даних та методів адресації їх елементів у мікропроцесорах 80х86 (Pentium) в реальному режимі.

3.1. Зміст роботи

При виконанні роботи студенти вивчають особливості створення та використання в мові Асемблера багатовимірних масивів, структур та масивів структур. Для доступу до елементів складних структур даних вивчаються режими адресації та команди обробки адрес. З навчальною метою мовою Асемблера створюються програми, які складаються з багатьох логічних сегментів. На конкретних прикладах вивчаються проблеми, які виникають при об‘єднанні логічних сегментів в один фізичний сегмент.

3.2. Теоретичні відомості

Створення багатовимірних масивів, структур та масивів структур у програмах мовою Асемблера

1) Директиви визначення простих даних

Асемблер надає дуже широкий набір засобів подання й обробки даних,

які за своїми можливостями не гірші від аналогічних засобів багатьох мов високого рівня. Спочатку розглянемо правила опису простих типів даних, які є базовими для більш складних типів. Для опису використовують спеціальні директиви резервування й ініціалізації даних. Якщо проводити аналогію з мовами високого рівня, то ці директиви являють собою визначення змінних.

Машинного еквіваленту цим директивам не має, просто транслятор,

оброблюючи кожну таку директиву, виділяє необхідну кількість комірок пам‘яті та, при необхідності, ініціалізує цю область деяким значенням. Формат

79

директив резервування й ініціалізації даних простих типів показаний на рис.

3.1.

db – резервування пам‘яті для даних розміром 1 байт;

dw - резервування пам‘яті для даних розміром 2 байти;

dd - резервування пам‘яті для даних розміром 4 байти;

df - резервування пам‘яті для даних розміром 6 байтів;

dp - резервування пам‘яті для даних розміром 6 байтів;

dq - резервування пам‘яті для даних розміром 8 байтів;

dt - резервування пам‘яті для даних розміром 10 байтів.

Рис. 3.1. Формат директив резервування й ініціалізації даних Транслятор masm, залежно від версії, може не підтримувати директиви df

та dp. На рис.3.1 використані наступні позначення:

? показує, що вміст поля не визначено, тобто вміст виділеної частини фізичної пам’яті при завантаженні програми змінюватися не буде.

Фактично створюється неініціалізована змінна. Операційні системи в багатьох випадках попередньо обнуляють область пам‘яті для завантаження програми, але розраховувати на це не слід.

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]