Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


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

 


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

 



<== предыдущая лекция | следующая лекция ==>
Основные соглашения MS DOS и WINDOWS об именах файлов и устройств | Пример использования команд
Поделиться с друзьями:


Дата добавления: 2017-02-11; Мы поможем в написании ваших работ!; просмотров: 456 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Слабые люди всю жизнь стараются быть не хуже других. Сильным во что бы то ни стало нужно стать лучше всех. © Борис Акунин
==> читать все изречения...

2307 - | 2207 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.013 с.