Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП2.docx
Скачиваний:
2
Добавлен:
31.08.2019
Размер:
327.18 Кб
Скачать
  1. Алгоритм решения задачи

Схема 1 – Последовательность проектирования программы

    1. Зарезервировать память для данных значений;

    2. Занести адрес начала сегмента данных в регистр ds;

    3. Занести значения a1 и a5 в соответствующие регистры;

    4. Выполнить сложение содержимого регистров ax и bx;

  1. Результаты работы программы

Рисунок 1 – Трансляция исходного файла, создание объектного файла, компиляция объектного файла, создание исполняемого файла

Рисунок 2 – начало трансляции программы prog.exe в Turbo Debugger

Рисунок 3 – окно Turbo Debugger после выполнения команды mov ax,1410

Рисунок 4 – окно Turbo Debugger после выполнения команды mov ds,ax

Рисунок 5 – окно Turbo Debugger после выполнения команды ax,0000

Рисунок 6 – окно Turbo Debugger после выполнения команды al,[0000]

Рисунок 7 – окно Turbo Debugger после выполнения команды bl,[000e]

Рисунок 8 – окно Turbo Debugger после выполнения команды add ax,bx

Рисунок 9 – окно Turbo Debugger после выполнения команды ax,[000f]

Рисунок 10 – начало окно Turbo Debugger после выполнения команды bx,[0021]

Рисунок 11 – окно Turbo Debugger после выполнения команды ax,4c00

Рисунок 12 – дамп памяти: видно, что байт по адресу ds:0000 имеет значение 12

  1. Выводы

  1. Файл листинга содержит две части: аннотированный листинг исходного кода и таблицу идентификаторов. Сначала выводится исходный ассемблируемый код с заголовком, содержащим имя файла, в котором находится исходный код. Вывод исходного кода Ассемблера сопровождается информацией о машинном коде, который ассемблирует Турбо Ассемблер. Все ошибки или предупреждения, обнаруженные в процессе ассемблирования, включаются в листинг непосредственно за содержащей ошибку строкой.Разобран файл листинга, выдаваемый программой TASM.

  2. Окно сегмента данных также разделено на три части. Сегмент данных, отображает участок памяти, начиная с адреса 0000. Участок памяти еще иначе называют дампом памяти. Первый столбец - адрес строки байт. Второй столбец - строка из 8 байт. Turbo Debugger в окне сегмента данных представляет дамп памяти в виде строк по 8 байт. Во втором столбце данные отображаются в виде шестнадцатеричных чисел. В третьем столбце те же данные отображаются в виде ASCII символов.

  1. Список использованной литературы

1. Юров В.И. Учебник для вузов. СПб.: Питер, 2006.

Приложение

Код программы, содержащийся в файле prog.asm:

.model small

.stack 256

.data

a1 db 12h

a2 db 2 dup(?)

a3 db 3 dup(?)

db 'afkgdgaf'

a5 db 43h

a6 dw 5h

a7 dw 2 dup(?)

a8 dd 43h

a9 df 45h

a10 dw a3

a11 dw 34h

a12 dq 1234h

.code

start:

mov ax,@data

mov ds,ax ;заносим адрес начала сегмента данных

mov ax,0

mov al,a1

mov bl,a5

add ax,bx

mov ax,a6

mov bx,a11

exit:

mov ax,04c00h

int 21h

end start

В файле листинга содержится следующая информация:

Turbo Assembler Version 4.1 05/04/12 21:21:01 Page 1

d:\tasm\prog.asm

1 0000 .model small

2 0000 .stack 256

3 0000 .data

4 0000 12 a1 db 12h

5 0001 02*(??) a2 db 2 dup(?)

6 0003 03*(??) a3 db 3 dup(?)

7 0006 61 66 6B 67 64 67 61+ db 'afkgdgaf'

8 66

9 000E 43 a5 db 43h

10 000F 0005 a6 dw 5h

11 0011 02*(????) a7 dw 2 dup(?)

12 0015 00000043 a8 dd 43h

13 0019 000000000045 a9 df 45h

14 001F 0003r a10 dw a3

15 0021 0034 a11 dw 34h

16 0023 0000000000001234 a12 dq 1234h

17

18 002B .code

19 0000 start:

20 0000 B8 0000s mov ax,@data

21 0003 8E D8 mov ds,ax ;заносим адрес начала сегмента данных

22 0005 B8 0000 mov ax,0

23 0008 A0 0000r mov al,a1

24 000B 8A 1E 000Er mov bl,a5

25 000F 03 C3 add ax,bx

26 0011 A1 000Fr mov ax,a6

27 0014 8B 1E 0021r mov bx,a11

28 0018 exit:

29 0018 B8 4C00 mov ax,04c00h

30 001B CD 21 int 21h

31 end start

Turbo Assembler Version 4.1 05/04/12 21:21:01 Page 2

Symbol Table

Symbol Name Type Value

??DATE Text "05/04/12"

??FILENAME Text "prog "

??TIME Text "21:21:01"

??VERSION Number 040A

@32BIT Text 0

@CODE Text _TEXT

@CODESIZE Text 0

@CPU Text 0101H

@CURSEG Text _TEXT

@DATA Text DGROUP

@DATASIZE Text 0

@FILENAME Text PROG

@INTERFACE Text 000H

@MODEL Text 2

@STACK Text DGROUP

@WORDSIZE Text 2

A1 Byte DGROUP:0000

A10 Word DGROUP:001F

A11 Word DGROUP:0021

A12 Qword DGROUP:0023

A2 Byte DGROUP:0001

A3 Byte DGROUP:0003

A5 Byte DGROUP:000E

A6 Word DGROUP:000F

A7 Word DGROUP:0011

A8 Dword DGROUP:0015

A9 Pword DGROUP:0019

EXIT Near _TEXT:0018

START Near _TEXT:0000

Groups & Segments Bit Size Align Combine Class

DGROUP Group

STACK 16 0100 Para Stack STACK

_DATA 16 002B Word Public DATA

_TEXT 16 001D Word Public CODE