Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа №1 (Ассемблер).doc
Скачиваний:
8
Добавлен:
17.11.2019
Размер:
3.31 Mб
Скачать

Заключение

При написании программы на Ассемблере следует внимательно относиться к резервированию и инициализации памяти (данных). Следует иметь в виду, что к одним и тем же ячейкам можно обращаться как к данным различного типа, но это желательно предусмотреть при их резервировании. Не следует использовать для переменных типы данных, не соответствующие им по сути, по применяемой обработке, по диапазону значений.

Литература

  1. Абель П. Язык Ассемблера для IBM PC и программирования. – М.: Высш. шк., 1992. – 447 с.

  2. Коффрон Дж. Технические средства микропроцессорных систем. М. Мир 1983г. - 344 с.

  3. Коффрон Дж., В. Лонг. Расширение микропроцессорных систем. М. Машино-строение 1987г. - 320 с.

  4. Морису, Э.Т. Есикава. Микро ЭВМ за три дня. М. Мир 1981г. - 194 с.

  1. Уокерли Дж.. Архитектура и программирование микро ЭВМ. В 2-х кн. М. Мир 1984г. кн.1 - 486 с., кн. 2 - 341 с.

  2. Гивонэ Д., Россер Р.. Микропроцессоры и микрокомпьютеры. Вводный курс. М. Мир 1983г. - 484 с.

  3. Гилмор И.. Введение в микропроцессорную технику. М. Мир 1984г. - 334 с.

  4. Лю Ю - Чжен, Гибсон Г.. Микропроцессоры семейства 8086/8088. М. Радио и связь 1987г. - 512с.

  5. Морс С.П., Алберт Д.Д.. Архитектура микропроцессора 80286. М. Радио и связь 1990г.

  6. Григорьев В.Л.. Микропроцессор i486. Архитектура и программирование (в 4-х книгах). – М., ГРАНАЛ, 1993. – с. 346 (кн.1), с. 382 (кн.2-4).

  7. Григорьев В.Л.. Программирование однокристальных микропроцессоров. М. Энергоатомиздат 1987г. - 288 с.

  8. Дао Л.. Программирование микропроцессора 8088. М. Мир 1988г. - 357 с.

  9. Брамм П., Брамм Д.. Микропроцессор 80386 и его программирование. М. Мир 1990г. - 448 с.

  10. Смит Б. Э., Джонсон М. Т.. Архитектура и программирование микропроцессора INTEL 80386 М. ТОО “Конкорд” 1992 г. 326 с.

  11. Майко Г.В. Ассемблер для IBM PC. М.: Бизнес - Информ, Сирин 1997 г. - 212 с.

  12. Пильщиков В.Н. Программирование на языке ассемблера IBM PC. М.: ДИАЛОГ - МИФИ, 1997. - 288 с.

Приложения

Приложение 1. Пример сегмента данных программы.

Еще один пример описания данных различных типов.

В исходном модуле определен сегмент данных:

.data

db 'Begin of DATAseg'

z1 db 12h

z2 dw 12h

z3 dd 12h

z4 dq 12h

z5 dt 12h

z6 dp 12h

z7 df 12h

s1 db 'String 1'

db '*'

db ?

db ?

b1 db 10h dup (12h)

В листинге сегмент данных получен в следующем виде:

7 0000 42 65 67 69 6E 20 6F+ db 'Begin of DATAseg'

8 66 20 44 41 54 41 73+

9 65 67

10

11 0010 12 z1 db 12h

12 0011 0012 z2 dw 12h

13 0013 00000012 z3 dd 12h

14 0017 0000000000000012 z4 dq 12h

15 001F 00000000000000000012 z5 dt 12h

16 0029 000000000012 z6 dp 12h

17 002F 000000000012 z7 df 12h

18

19 0035 53 74 72 69 6E 67 20+ s1 db 'String 1'

20 31

21 003D 2A db '*'

22 003E ?? db ?

23 003F ?? db ?

24

25 0040 10*(12) b1 db 10h dup (12h)

В окне отладчика сегмент данных имеет следующий вид:

0 1 2 3 4 5 6 7 8 9 A B C D E F |

DS:0000 42 65 67 69 6E 20 6F 66 20 44 41 54 41 73 65 67 |Begin of DATAseg

DS:0010 12 12 00 12 00 00 00 12 00 00 00 00 00 00 00 12 |........ ........

DS:0020 00 00 00 00 00 00 00 00 00 12 00 00 00 00 00 12 |........ ........

DS:0030 00 00 00 00 00 53 74 72 69 6E 67 20 31 2A 00 00 |.....Str ing 1*..

DS:0040 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 12 |........ ........

Приложение 2. Пример сегмента данных программы с вещественными числами.

В программе определен сегмент данных, содержащий вещественные числа. Фрагмент листинга, полученного в результате трансляции, приведен ниже:

1 name dat_fp

2

3 .model small

4

5 0000 .data

6 ;---------------------

7 0000 00000000 xf0 dd 0e0

8 0004 0000000000000000 xf0q dq 0e0

9 000C 00000000000000000000 xf0t dt 0e0

10 0016 80000000 xf0_ dd –0e0

11

12 001A 3F000000 xf05 dd 0.5E0

13 001E 3FE0000000000000 xf05q dq 0.5E0

14 0026 3FFE8000000000000000 xf05t dt 0.5E0

15 0030 BF000000 xf05_ dd –0.5E0

16

17 0034 3F800000 xf1 dd 1E0

18 0038 3FF0000000000000 xf1q dq 1E0

19 0040 3FFF8000000000000000 xf1t dt 1E0

20 004A BF800000 xf1_ dd –1E0

21

22 004E 40000000 xf2 dd 2E0

23 0052 4000000000000000 xf2q dq 2E0

24 005A 40008000000000000000 xf2t dt 2E0

25 0064 C0000000 xf2_ dd –2E0

26

27 0068 477FFF00 xf16 dd 65535e0

28 006C 40EFFFE000000000 xf16q dq 65535e0

29 0074 400EFFFF000000000000 xf16t dt 65535e0

30

31 007E 7FFFFFFF xf38 dd 6.8056471355946732339e38

32 0082 47FFFFFFF0000000 xf38q dq 6.8056471355946732339e38

33

34 008A 7FFFFFFFFFFFFFFF xf308 dq 3.595386269724631317e308

Примечание. Подробнее о форматах вещественных чисел можно прочитать в [Л.10, кн 3, с.132 – 141].

Приложение 3. Пример сегмента данных программы с числами в формате BCD.

В программе определен сегмент данных, содержащий числа в формате «Упакованный BCD (binary coded decimal)». Фрагмент листинга, полученного в результате трансляции, приведен ниже:

1 name dat_bcd

2

3 0000 .model small

4

5 = 1234 my_const1 equ 1234h

6 = 04D2 my_const2 equ 1234

7 0000 .data

8 ;---------------------

9

10

11 0000 000004D2 bin dd 1234 ; это двоичное целое

12

13 0004 00000000000000001234 bcd dt 1234 ; это упакованное BCD

14

15 000E 00000000001234567890 bcd01 dt 1234567890

16

17 0018 99999999999999999999 bcd02 dt 99999999999999999999

18 0022 19999999999999999999 bcd03 dt -99999999999999999999

19

Далее пример представления константы 16 в различных форматах (32-битное с фиксированной точкой, 80-битное упакованное BCD, 32-битное с плавающей точкой, 80-битное с плавающей точкой):

20 002C 00000010 bin16 dd 16

21 0030 00000000000000000016 bcd16 dt 16

22 003A 41800000 fpd16 dd 16.

23 003E 40038000000000000000 fpt16 dt 16.

24

Далее – неинициализированные 10 байт:

25 0048 ???????????????????? bcd3 dt ?

26

Обратите внимание на использование директивы EQU (см. выше):

27 0052 00000000000000001234 bcd41 dt my_const1

28 005C 00001234 bcd42 dd my_const1

29 0060 000000000000000004D2 bcd43 dt my_const2

30 006A 000004D2 bcd44 dd my_const2