Алгоритм решения задачи
Схема 1 – Последовательность проектирования программы
Зарезервировать память для данных значений;
Занести адрес начала сегмента данных в регистр ds;
Занести значения a1 и a5 в соответствующие регистры;
Выполнить сложение содержимого регистров ax и bx;
Результаты работы программы
Рисунок 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
Выводы
Файл листинга содержит две части: аннотированный листинг исходного кода и таблицу идентификаторов. Сначала выводится исходный ассемблируемый код с заголовком, содержащим имя файла, в котором находится исходный код. Вывод исходного кода Ассемблера сопровождается информацией о машинном коде, который ассемблирует Турбо Ассемблер. Все ошибки или предупреждения, обнаруженные в процессе ассемблирования, включаются в листинг непосредственно за содержащей ошибку строкой.Разобран файл листинга, выдаваемый программой TASM.
Окно сегмента данных также разделено на три части. Сегмент данных, отображает участок памяти, начиная с адреса 0000. Участок памяти еще иначе называют дампом памяти. Первый столбец - адрес строки байт. Второй столбец - строка из 8 байт. Turbo Debugger в окне сегмента данных представляет дамп памяти в виде строк по 8 байт. Во втором столбце данные отображаются в виде шестнадцатеричных чисел. В третьем столбце те же данные отображаются в виде ASCII символов.
Список использованной литературы
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