Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лаба №2, протокол (програмування).doc
Скачиваний:
0
Добавлен:
12.11.2018
Размер:
75.26 Кб
Скачать

2.2. Завдання на виковання роботи

1. Написати прoграму, яка здійснює пересилання даних мiж окремими комiрками сегмента даних, вмістом яких є значення змiнниx програми. Для цього в сегментi даних програми визначити змiннi а1, а2,... а8. Типи змiнниx i види пересилань наведено в табл. 2.1. Коректність результатiв пересилань проконтролювати шляхом виконання .ехе файла програми у налагоджувачi по кроках.

2. Нaписати програму, яка здійснює пересилання елементiв виxiдного масиву (символьний рядок) в iншy область пам'ятi (другий символьний рядок), змiнюючи їx порядок. Вiдповiднiстъ елементiв рядкiв s1, s2 залежить від вapiaнтa (табл. 2.2).

Для виконання п.2 необxiдно визначити рядок s1 довiльного вмicтy довжиною вiciм елементiв, а для рядка s2 зарезервувати область пам' ятi вiдповiдного розмiру. Рядки визначаються в рiзних сегментах програми (для парних номерiв вapiaнтiв рядок s1 визпачити у сегментi даних, а рядок s2 - в кiнцi сегмента коду, перед директивою закриття сегмента, для непарних вapiaнтiв - навпаки). При пересиланнi враховувати необxiднiсть перемикання ceгмeнтiв.

3. Виконати транслювання, компонування i виконання завдань (по кроках) у налагоджувачі. Перевірити правильність виконання програми, порiвняти отриманi результати з очікуваними.

Таблиця 2.1 Типи змінних та види пересилань

вар.

Характ. області

Назви змінних памяті

а1

а2

а3

а4

а5

а6

а7

а8

9

Типи змінних

word

byte

byte

byte

byte

word

word

word

Новий вміст

a7

a4

a2

a5

a3

a8

a1

a6

Таблuця 2.2. Вiдповiднiсть елементiв рядків s1, s2

варіанта

Номер елемента у рядку s1

1

2

3

4

5

6

7

8

Номер елемента у рядку s2

9

2

8

7

6

3

5

1

4

Завдання 1

Код програми (файл LABA2_1.lst):

Microsoft (R) Macro Assembler Version 5.10 10/19/11 00:58:3

Page 1-1

0000 data segment

0000 0001 a1 dw 1

0002 02 a2 db 2

0003 03 a3 db 3

0004 04 a4 db 4

0005 05 a5 db 5

0006 0006 a6 dw 6

0008 0007 a7 dw 7

000A 0008 a8 dw 8

000C data ends

0000 code segment

assume cs:code, ds:data

0000 begin:

0000 B8 ---- R mov ax, data

0003 8E D8 mov ds, ax

0005 A0 0002 R mov al, a2;

0008 8A 1E 0003 R mov bl, a3;

000C A2 0003 R mov a3, al;

000F A0 0004 R mov al, a4;

0012 A2 0002 R mov a2, al;

0015 A0 0005 R mov al, a5;

0018 A2 0004 R mov a4, al;

001B 88 1E 0005 R mov a5, bl;

001F A1 0000 R mov ax, a1;

0022 8B 1E 0008 R mov bx, a7;

0026 89 1E 0000 R mov a1, bx;

002A A3 0008 R mov a7, ax;

002D A1 0006 R mov ax, a6;

0030 8B 1E 000A R mov bx, a8;

0034 89 1E 0006 R mov a6, bx;

0038 A3 000A R mov a8, ax;

003B B8 4C00 mov ax, 4c00h

003E CD 21 int 21h

0040 code ends

end begin

Microsoft (R) Macro Assembler Version 5.10 10/19/11 00:58:3

Symbols-1

Segments and Groups:

N a m e Length Align Combine Class

CODE . . . . . . . . . . . . . . 0040 PARA NONE

DATA . . . . . . . . . . . . . . 000C PARA NONE

Symbols:

N a m e Type Value Attr

A1 . . . . . . . . . . . . . . . L WORD 0000 DATA

A2 . . . . . . . . . . . . . . . L BYTE 0002 DATA

A3 . . . . . . . . . . . . . . . L BYTE 0003 DATA

A4 . . . . . . . . . . . . . . . L BYTE 0004 DATA

A5 . . . . . . . . . . . . . . . L BYTE 0005 DATA

A6 . . . . . . . . . . . . . . . L WORD 0006 DATA

A7 . . . . . . . . . . . . . . . L WORD 0008 DATA

A8 . . . . . . . . . . . . . . . L WORD 000A DATA

BEGIN . . . . . . . . . . . . . L NEAR 0000 CODE

@CPU . . . . . . . . . . . . . . TEXT 0101h

@FILENAME . . . . . . . . . . . TEXT laba2_1

@VERSION . . . . . . . . . . . . TEXT 510

40 Source Lines

40 Total Lines

16 Symbols

47154 + 411850 Bytes symbol space free

0 Warning Errors

0 Severe Errors

Завдання 2

Код програми (файл LABA2_2.lst):

Microsoft (R) Macro Assembler Version 5.10 10/19/11 01:18:4

Page 1-1

0000 data segment

0000 00 00 00 00 00 00 s2 db ?, ?, ?, ?, ?, ?, ?, ?

00 00

0008 data ends

0000 code segment

assume cs:code, ds:data

0000 begin:

0000 B8 ---- R mov ax, data

0003 8E D8 mov ds, ax

0005 2E: A0 0042 R mov al, cs:s1

0009 A2 0006 R mov s2+6, al

000C 2E: A0 0043 R mov al, cs:s1+1

0010 A2 0000 R mov s2, al

0013 2E: A0 0044 R mov al, cs:s1+2

0017 A2 0004 R mov s2+4, al

001A 2E: A0 0045 R mov al, cs:s1+3

001E A2 0007 R mov s2+7, al

0021 2E: A0 0046 R mov al, cs:s1+4

0025 A2 0005 R mov s2+5, al

0028 2E: A0 0047 R mov al, cs:s1+5

002C A2 0003 R mov s2+3, al

002F 2E: A0 0048 R mov al, cs:s1+6

0033 A2 0002 R mov s2+2, al

0036 2E: A0 0049 R mov al, cs:s1+7

003A A2 0001 R mov s2+1, al

003D B8 4C00 mov ax, 4c00h

0040 CD 21 int 21h

0042 31 32 33 34 35 36 s1 db '1', '2', '3', '4', '5', '6', '7', '8'

37 38

004A code ends

end begin

Microsoft (R) Macro Assembler Version 5.10 10/19/11 01:18:4

Symbols-1

Segments and Groups:

N a m e Length Align Combine Class

CODE . . . . . . . . . . . . . . 004A PARA NONE

DATA . . . . . . . . . . . . . . 0008 PARA NONE

Symbols:

N a m e Type Value Attr

BEGIN . . . . . . . . . . . . . L NEAR 0000 CODE

S1 . . . . . . . . . . . . . . . L BYTE 0042 CODE

S2 . . . . . . . . . . . . . . . L BYTE 0000 DATA

@CPU . . . . . . . . . . . . . . TEXT 0101h

@FILENAME . . . . . . . . . . . TEXT laba2_2

@VERSION . . . . . . . . . . . . TEXT 510

34 Source Lines

34 Total Lines

10 Symbols

47042 + 411962 Bytes symbol space free

0 Warning Errors

0 Severe Errors

10