ASSUME CS:CODE,DS: NOTHING,ES:DATA,SS:NOTHING

A_str1 dd str1

str2 db len_str1 dup (' ')

A_str2 dd str2

Mov cx,len_str1

Lds sі,str1

Les dі,str2

Cld

Rep movsb

 

 

3. Варіанти завдань.

3.1. Прості завдання

 

Варіант 1.

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

I3 db ?

A1 dw 5 dup (6 dup (0fh,4 dup (0)))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання - всі слова трьохвимірного масиву А1, які містять значення 0fh, замінить на суму наступних (по зміщенню в сегменті) 5-х слів шляхом використання індексів, значення яких містяться в байтах за адресами I1,I2,I3

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 dw 5 dup (6 dup (0fh,4 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад з ім’ям Code2), в якому завдання п. 1 виконувалось шляхом використання ланцюгових команд для пошуку значення 0fh. Після підрахунку порівняти значення в масивах A1 та A2. Забезпечить безумовну передачу управління із сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 2.

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

I3 db ?

A1 dw 6 dup (8 dup (7 dup (0)))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в кожний елемент масиву записати добуток індексів, значення яких містяться в байтах за адресами I1,I2,I3

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 dw 6 dup (8 dup (7 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), у якому шляхом використання ланцюгових команд знайти всі слова масиву А1, значення яких дорівнює 36, а адреси (зміщення в сегменті) цих слів записати в елементи масиву А2 із тими самими індексами. Забезпечить безумовну передачу управління із сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 3.

Задано шаблон структури

Tabl1 struc

namex db 8 dup (?)

field2 dw ?

Tabl1 ENDS

Задано логічний сегмент

Data1 segment

I1 db 0

A1 Tabl1 6 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в кожне поле field2 структур із масиву структур А1 записати зміщення в сегменті поля namex структури з тим же самим індексом в масиві. Початкове значення індексу міститься в байті за адресою I1.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 Tabl1 12 dup (<>)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати весь масив структур А1 в масив структур А2, починаючи з 3-ої структури. Забезпечить безумовну передачу управління із сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 4.

Задано шаблон структури

Tabl1 struc

namex db 8 dup (10h)

field1 db ?

field2 dw ?

field8 dq ?

Tabl1 ENDS

Задано логічний сегмент

Data1 segment

I1 db 1

A1 Tabl1 6 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в кожне поле field2 структур із масиву структур А1 записати суму байтів поля namex цієї ж структури плюс індекс структури в масиві (індекси змінюються від 0 до 5). Значення індексу зберігається в байті за адресою I1.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 Tabl1 6 dup (<>)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати 8 байтів кожного поля namex масиву структур А1 в поле field8 масиву А2 із тим самим індексом. Забезпечить безумовну передачу управління із сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 5.

Задано шаблон структури

Tabl1 struc

namex db 4 dup (?)

field1 dw 4 dup (?)

Tabl1 ENDS

Задано логічний сегмент

Data1 segment

I_struc db ?

I_namex db ?

A1 Tabl1 6 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в кожний елемент масиву із поля field1 (по індексу I_namex) структури із масиву структур А1 (по індексу I_struc) записати зміщення в сегменті елементу масиву із поля namex (по індексу I_namex) структури з тим же самим індексом в масиві структур.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 Tabl1 13 dup (<>)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати весь масив структур А1 в масив структур А2, починаючи з 5-ої структури. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 6.

Задано логічний сегмент

Data1 segment

Sump dw 0

sumnp dw 0

A1 dw 6 dup (8 dup (7 dup (102h)))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – накопичити в слові по адресі sump суму байтів масиву А1, які мають парне значення зміщення в сегменті, а в по адресі sumnp - непарні значення зміщення в сегменті.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиви

A2 dw 3 dup (8 dup (2 dup (0)))

A3 dw 2 dup (4 dup (4 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд заповнить масив А2 значенням суми із Sump, а в масив А3 - із sumnp. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 7.

Задано логічний сегмент Data1

Data1 segment

I1 db 0

I2 db 0

I3 db 0

I4 db 0

A1 dw 5 dup (6 dup (6 dup (5 dup (?))))

Data1 ends

Задано логічний сегмент Data2

Data2 segment

A2 dd 5 dup (6 dup (6 dup (5 dup (0abcd0123h))))

Data2 ends

 

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – пересилання двох "середніх" байтів (0CD01H) кожного чотирьохбайтного елемену масиву A2 в відповідний (тобто, з тими самими значеннями індексів) елемент масиву A1, використовуючи значення індексів масивів по адресах І1,І2,І3,І4.

2. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому з використанням ланцюгових команд підраховувалась кількість байт логічного сегменту Data2, значення яких дорівнює 0abh. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 8.

Задано логічний сегмент Data1

Data1 segment

I1 db 0

I2 db 0

I3 db 0

I4 db 0

A1 dw 2 dup (6 dup (7 dup (5 dup (?))))

Data1 ends

Задано логічний сегмент Data2

Data2 segment

A2 dd 2 dup (6 dup (7 dup (5 dup (?))))

Data2 ends

 

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – завантаження логічної адреси кожного елементу масиву А1 в відповідний (тобто, з тими самими значеннями індексів) елемент масиву A2. Для значення індексів використовувати байти по адресах І1,І2,І3,І4.

2. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому з використанням ланцюгових команд завантажити у всі елементи масиву А1 зміщення в сегменті елементу А2[0,1,2,3] масиву А2. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 9.

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

I3 db ?

A1 dw 5 dup (8 dup (2 dup (0)))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – якщо всі індекси за адресами I1,I2,I3 парні, то в елемент масиву А1[i1,i2,i3] записується зміщення в сегменті цього елементу, а якщо хоча б один з індексів не парний, то в елемент масиву А1[i1,i2,i3] записується сегментна частина логічної адреси цього елементу.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 dw 5 dup (8 dup (2 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати масив А1 в А2 та підрахувати в масиві А2 кількість елементів, які містять сегментні частини логічних адрес. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 10.

Задано шаблон структури

Node struc

namex db 5 dup (?)

field1 dw 5 dup (?)

Node ENDS

Задано логічний сегмент

Data1 segment

I_struc db ?

I_namex db ?

A1 Node 6 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в елементи масиву із поля field1 (по індексу I_namex) структури із масиву структур А1 (по індексу I_struc) записати зміщення в сегменті інших структур із масиву структур А1 (формування повного орієнтованого графа, в якому вершини - це поля namex, а дуги - елементи масиву поля field1). Для доступу до слів масиву в полі field1 використовувати індекс по адресі I_namex. Для доступу до структур в масиві А1 використовувати індекс по адресі I_struc.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати наступну директиву

Db 'node1','node2', ,'node3','node4','node5','node6'

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати імена вершин графа в поля namex структур масиву структур А1. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 11.

Задано шаблон структури

Node struc

namex db 4 dup (0ffh)

field1 dw 2 dup (0)

Node ENDS

Задано логічний сегмент

Data1 segment

I_struc db ?

A0 Node <>

A1 Node 2 dup (<>)

A2 Node 4 dup (<>)

A3 Node 8 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – створити дерево, де в 2-х елементний масив поля field1 структури A0 записуються зміщення в сегменті 2-х структур із масиву структур A1. В 2-х елементний масив поля field1 структури A1[0] заносяться зміщення в сегменті структур A2[0] та A2[1] і т.д. При створенні програми для індексації масивів структур використовувати байт по адресі I_struc.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задать наступні директиви

B0 Node <>

B1 Node 2 dup (<>)

B2 Node 4 dup (<>)

B3 Node 8 dup (<>)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати масиви структур A0-A4 в масиви структур B0-B4 та відкоригувати значення полів field1 так, щоб масиви структур B0-B4 також репрезентували дерево. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 12.

Задано шаблон структури

Node struc

namex db 4 dup (?)

dst dw ?

Node ENDS

Задано логічний сегмент

Data1 segment

I_struc db ?

Order db 0,4,2,1,3

A1 Node 5 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – на базі масиву структур А1 створити кільцевий список, де в поле dst структури А1[0] записується зміщення в сегменті структури А1[4], в поле dst структури А1[4] записується зміщення в сегменті структури А1[2] і т.д. згідно з порядком, який заданий в масиві Order. В поле dst структури А1[3] записується зміщення в сегменті структури А1[0]. При створенні програми для індексації масивів структур використовувати байт по адресі I_struc.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати наступну директиву

A2 Node 5 dup (<>)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати масив А1 в масив А2, та відкоригувати значення полів dst, щоб масив А2 також являв собою кільцевий список. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 13.

Задано шаблон структури

Node struc

namex db 5 dup (?)

field1 dw 0

Node ENDS

Задано логічний сегмент

Data1 segment

I_struc db ?

A0 Node <>

A1 Node 2 dup (<>)

A2 Node 4 dup (<>)

A3 Node 8 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – створити дерево, де в поля field1 структур A3[0] та A3[1] записуються зміщення в сегменті структури A2[0], в поля field1 структур A3[2] та A3[3] записуються зміщення в сегменті структури A2[1] і т.д., в поля field1 структур A3[6] та A3[7] записуються зміщення в сегменті структури A2[3]. Аналогічно заповнюються поля field1 в структурах із масивів А2 та А1. При створенні програми для індексації масивів структур використовувати байт по адресі I_struc.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати наступні директиви

Db 'node0','node10', ,'node11,'node20','node21','node22', 'node23'

Db 'node30','node31','node32', 'node33','node34','node35','node36', 'node37'

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати імена вершин дерева в поля namex структур, які формують дерево (структура А0, масиви структур А1-А3). Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 14.

Задано шаблон структури

Node struc

namex db ‘парне’

field1 dw ?

Node ENDS

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

A1 Node 6 dup (4 dup<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в поле field1 структури із масиву структур А1 записати зміщення в сегменті наступної структури із масиву структур А1. Для доступу до структур в масиві А1 використовувати індекси по адресах I1 та I2. Наступною структурою для структури А1[5,3] вважати структуру А1[0,0]. Якщо значення в полі field1 виявилось не парним, то в поле namex записати ‘непар’

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати наступну директиву

A2 Dw 24 dup (?)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому з використання ланцюгових команд послідовно переписати в масив А2 всі парні значення полів fild1 масиву структур А1. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

 

Варіант 15.

Задано логічний сегмент Data1

Data1 segment

I1 db 0

I2 db 0

I3 db 0

I4 db 0

A1 db 3 dup (2 dup (7 dup (5 dup (?))))

Data1 ends

Задано логічний сегмент Data2

Data2 segment

II1 db 0

II2 db 0

II3 db 0

A2 db 7 dup (5 dup (2 dup (?)))

Data2 ends

 

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – занести в кожний елемент масиву А1 значення його зміщення відносно початку масиву, а потім переслати, використовуючи значення індексів масивів по адресах І1,І2,І3,І4 та ІI1,ІI2,IІ3, 17 елементів масиву А1 починаючи з елементу А1[1,0,3,2] в масив А2, починаючи з елементу А2[3,4,0].

2. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому з використанням ланцюгових команд виконати пересилання вказаних елементів масиву А1 в масив А2, починаючи з елементу А2[0,3,1]. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 16.

Задано логічний сегмент Data1

Data1 segment

I1 db 0

I2 db 0

I3 db 0

I4 db 0

A1 dw 4 dup (7 dup (5 dup (2 dup (4567h))))

Data1 ends

Задано логічний сегмент Data2

Data2 segment

A2 dd 4 dup (7 dup (5 dup (2 dup (23456789h))))

Data2 ends

 

3. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – пересилання слова 4567h кожного елемену масиву A1 в старше слово відповідного елементу масиву A2, використовуючи значення індексів масивів по адресах І1,І2,І3,І4.

4. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому з використанням ланцюгових команд підраховувалась кількість байт логічного сегменту Data2, значення яких дорівнює 67h. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 17.

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

I3 db ?

A1 dw 6 dup (8 dup (7 dup (0)))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в кожний елемент масиву записати суму індексів, значення яких містяться в байтах за адресами I1,I2,I3

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 dd 6 dup (8 dup (7 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд знайти всі слова масиву А1, значення яких дорівнює 5, а логічні адреси цих слів записати в елементи масиву А2 з тими самими індексами. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2.

 

Варіант 18.

Задано логічний сегмент

Data1 segment

Sumс4 dw 0

Sumnс4 dw 0

A1 dd 3 dup (5 dup (9 dup (1020201h)))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – накопичити в слові по адресі sumc4 суму байтів масиву А1, в яких значення зміщення в сегменті кратне 4 (ділиться на 4), а в по адресі sumnc4 - не кратне 4 (не ділиться на 4).

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиви

A2 dw 2 dup (8 dup (4 dup (0)))

A3 dw 4 dup (4 dup (4 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд заповнить масив А2 значенням суми із sumc4, а в масив А3 - із Sumnс4. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 19.

Задано логічний сегмент Data1

Data1 segment

I1 db 0

I2 db 0

I3 db 0

I4 db 0

A1 dw 3 dup (4 dup (2 dup (5 dup (?))))

Data1 ends

Задано логічний сегмент Data2

Data2 segment

A2 dd 3 dup (4 dup (2 dup (5dup (?))))

Data2 ends

 

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – завантаження зміщення в сегменті старшого слова кожного елементу масиву А2 в відповідний (тобто, з тими самими значеннями індексів) елемент масиву A1. Для значення індексів використовувати байти по адресах І1,І2,І3,І4.

2. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому з використанням ланцюгових команд завантажити у всі елементи масиву А2 логічну адресу елементу А1[2,1,1,3] масиву А1. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 20.

Задано шаблон структури

Tabl1 struc

namex db 7 dup (?)

field1 db ?

field2 dw ?

field4 dd ?

Tabl1 ENDS

Задано логічний сегмент

Data1 segment

I1 db 0

A1 Tabl1 6 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в кожне поле field2 структур із масиву структур А1 записати зміщення в сегменті поля field1 структури з тим же самим індексом в масиві. Початкове значення індексу міститься в байті за адресою I1.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 Tabl1 11 dup (<>)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати весь масив структур А1 в масив структур А2, починаючи з 2-ої структури. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 21.

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

I3 db ?

A1 dw 4 dup (5 dup (6 dup (0)))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – якщо сума індексів за адресами I1,I2,I3 парна, то в елемент масиву А1[i1,i2,i3] записується сегментна частина логічної адреси цього елементу, а якщо хоча б один з індексів не парний, то в елемент масиву А1[i1,i2,i3] записується зміщення в сегменті цього елементу.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 dw 4 dup (5 dup (6 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати масив А1 в А2 та підрахувати в масиві А2 кількість елементів, які не містять сегментні частини логічних адрес. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

 

Варіант 22.

Задано шаблон структури

Tabl1 struc

namex db 5 dup (1h)

field1 db ?

field2 dw ?

field8 db ‘not error’

Tabl1 ENDS

Задано логічний сегмент

Data1 segment

I1 db 1

A1 Tabl1 6 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – в кожне поле field2 структур із масиву структур А1 записати суму байтів поля namex плюс зміщення в сегменті поля field1. Значення індексу масиву структур зберігається в байті за адресою I1 та змінюється від 0 до 5.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 Tabl1 6 dup (<>)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати старші 6 байтів кожного поля field8 масиву структур А1 в поле field8 масиву А2 із тим самим індексом. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

 

Варіант 23.

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

I3 db ?

A1 dd 4 dup (7 dup (3 dup (0),1234h))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання - усі слова трьохвимірного масиву А1, які містять значення 1234h, замінить на суму наступних по зміщенню в сегменті 4-х слів шляхом використання індексів, значення яких містяться в байтах за адресами I1,I2,I3

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 dd 4 dup (7 dup (4 dup (0)))

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому завдання п.1 виконувалось шляхом використання ланцюгових команд для пошуку значення 1234h. Після підрахунку порівняти значення в масивах A1 та A2. Забезпечить безумовну передачу управління із сегменту Code1 в сегмент Code2 з використанням непрямої адресації.

 

Варіант 24.

Задано шаблон структури

Node struc

namex db 5 dup (?)

left dw ?

right dw ?

Node ENDS

Задано логічний сегмент

Data1 segment

I_struc db ?

I_order db ?

Order db 0,3,1,2,4

A1 Node 5 dup (<>)

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання – на базі масиву структур А1 створити кільцевий двонаправлений список, де в поле left структури А1[0] записується зміщення в сегменті структури А1[4], а в поле right структури А1[0] записується зміщення в сегменті структури А1[3]; в поле left структури А1[3] записується зміщення в сегменті структури А1[0], а в поле right структури А1[3] записується зміщення в сегменті структури А1[1], і т.д. згідно з порядком, який заданий в масиві Order. При створенні програми для індексації масивів структур використовувати байт по адресі I_struc, а для доступу до елементів масиву Order використовувати байт по адресі I_order.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати наступну директиву

Db 'Null ','One ','Two ',Three','Four ''

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому шляхом використання ланцюгових команд переписати імена елементів списку в поля namex структур, які формують список. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2 за допомогою непрямої міжсегментної передачі управління.

 

Варіант 25.

Задано логічний сегмент

Data1 segment

I1 db ?

I2 db ?

I3 db ?

I4 db ?

A1 dd 6 dup (5 dup (4 dup (3 dup (?))))

Data1 ends

1. Створити сегмент кодів (наприклад, з ім’ям Code1), в якому б програма реалізувала наступне завдання - записати у всі елементи масиву A1 значення індексів по правилу

А1[I1,I2,I3,I4]:= (I1 shl 24) or (I2 shl 16) or (i3 shl 8) or I4;

Вважається, що індекс по адресі I1 змінюється від 0 до 2, по адресі I2 - від 0 до 3 і т.д.

2. Створити ще один логічний сегмент даних (наприклад, з ім’ям Data2), в якому задати директиву A2 dd 180 dup (0)

3. Створити ще один логічний сегмент кодів (наприклад, з ім’ям Code2), в якому за допомогою ланцюгових команд знайти та послідовно переслати в масив А2 всі 4-х байтні елементи масиву А1, які містять хоча б один байт зі значенням 2. Забезпечить безумовну передачу управління з сегменту Code1 в сегмент Code2.

 

3.2. Ускладнене завдання

Для виконання ускладненого завдання необхідно:

3.2.1. Створити, налагодити та перевірити працездатність простого завдання згідно варіанту.

3.2.2. Скопіювати початковий файл простого завдання.

3.2.3. В копії добавить новий логічний сегмент даних (наприклад, Date3) та новий логічний сегмент кодів (наприклад Code3), в якому б програма реалізувала наступне завдання

· скопіювать сегмент даних Date2, а потім Date1 в сегмент Date3

· скопіювать сегмент кодів Code2, а потім Code1 в сегмент Code3

· Відкоригувати адресні посилання в скопійованих програмах

· Виконати просте завдання в спільному сегменті Code3 з використанням спільного сегменту Date3.

 

4. Питання для перевірки.

4.1. Як прочитати в програмі команди програми ?

4.2. Що таке багатокомпонентна адреса і для чого вона використовується ?

4.3. Як зміниться результат трансляції програми (порівняти лістинги), якщо задать наступну директиву ASSUME:

ASSUME CS:CODE,DS: NOTHING,ES:DATA,SS:NOTHING

Перевірити правильність виконання програми та пояснити результат перевірки.

4.4. Як треба змінити програму, щоб вона виконувалась без помилок при наступному операторі ASSUME:

ASSUME CS:CODE,DS: NOTHING,ES:DATA,SS:NOTHING

 


=================================================================