отчет_4

advertisement
Поволжский Государственный Университет
Телекоммуникации и Информатики
Отчет по лабораторной работе №4
Программирование арифметических операций.
Изучение основ работы с TURBO DEBUGGER
Выполнил:
Ст. гр. ИТ-71
Дудкин Н.А.
Самара 2008 г.
1. Цель работы
Применение команд арифметических операций при разработке
программ;
Практическое освоение основных функций TURBO DEBUGGER.
2. Ход работы
1. Используя текстовый редактор, создали и отредактировали
исходный модуль программы Prog_4.asm, которая вычисляет значение
Х в соответствии с заданием.
Таблица 1. Вариант задания
№
Функция
варианта
9
X
A
A B
DC
2
Данные
B
C
D
2
7
12
-15
После выполнения операции деления, в дальнейших операциях
учитывали только частное.
;Prog_4
Data SEGMENT
A DB 7
B DB 12
D Dw 3
C DW -15
X DW ?
Data ENDS
;Открыть сегмент данных
;Инициализировать переменные A, B, C, D, X
;Закрыть сегмент данных
Ourstack SEGMENT Stack
;Открыть сегмент стека
DB 100h DUP (?)
;Отвести под стек 256 байт
Ourstack ENDS
;Закрыть сегмент стека
ASSUME CS:Code, DS: Data, SS: Ourstack ;Назначить сегментные
регистры
Code SEGMENT
;Открыть сегмент кодов
Start: mov AX, Data
;Инициализировать сегментный
регистр DS
mov DS, AX
xor AX, AX
; очистить регистр AX
mov AL, A
-2-
3
mul A
Mov BX, AX
mov AL, B
mul B
ADD AX, BX
mov CX, D
sub CX, C
idiv D
mov X, AX
mov AX, 4C00h
int 21h
Code ENDS
END Start
;Закрыть сегмент кодов
;Конец исходного модуля
2. Используя компилятор Турбо Ассемблера tasm.exe и
компоновщик tlink.exe с соответствующими ключами, создали файл
prog_4.exe.
3. Загрузили программу в отладчик и в окне CPU произвели
трассировку программы (пошаговое выполнение) нажатием клавиши
F8. На каждом шаге контролировали содержимое регистров и флагов.
Записали вычисленное значение частного и остатка. Результаты
пошагового выполнения свели в таблицу 2 и сделали по ним
соответствующие выводы.
-3-
Таблица 2. Результаты выполнения программы
Вариант
№
Команда
строки Ассемблера
Машинный
код
1
Mov DS, AX
8ED8
2
Xor AX, AX
33C0
3
4
5
6
Mov AL, A
Mul A
Mov BX, AX
Mov AL, B
A00000
F6260000
8BD8
A00100
Длина
Логический
машинного
адрес в
Состояние регистров и флагов
кода,
памяти
байт
AX=120B,
.
BX=0000,
CF=1,
CX=9A3E,
ZF=0,
DX=F73A,
SF=1,
2
5FC5:0003
DS=3192,
OF=0,
SS=120B,
PF=0,
CS=0000,
AF=0 .
ES=F732
AX=120B,
BX=0000,
CF=1,
CX=9A3E,
ZF=0,
DX=F73A,
SF=1,
DS=3192,
2
5FC5:0005
OF=0,
SS=120B,
PF=0,
CS=0000,
AF=0 .
ES=F732.
3
4
2
3
5FC5:0007
5FC5:000
A
5FC5:000
E
5FC5:0010
-4-
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
7
8
9
10
11
Mull B
ADD AX, BX
F6260100
03C3
Mov CX, D 8B0E0200
Sub CX, C 2B0E0400
Idiv D
F73E0200
4
2
4
4
4
5FC5:0013
5FC5:0017
5FC5:0019
5FC5:001
D
5FC5:0021
Значение переменной X: частное =
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
AX=120B,
BX=0000,
CX=9A3E,
DX=F73A,
DS=3192,
SS=120B,
CS=0000,
ES=F732
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0 .
CF=1,
ZF=0,
SF=1,
OF=0,
PF=0,
AF=0
остаток =
4.Определили начальные и конечные адреса сегментов кода,
данных и стека составленной программы prog_4.exe. Вычислили длину
сегментов указанной программы в байтах.
-5-
Download