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
=================================================================