Волзький університет імені В. Н. Татіщева Факультет "Інформатика і телекомунікації" Кафедра "Інформатика та системи управління" Курсова робота з дисципліни: "Організація ЕОМ" Тема: "Асемблер" Виконав: студент гр. ІС-311 Керівник: Тольятті
Зміст курсової роботи: 1.
Опис і схема алгоритму.
2. Область застосування.
3. Лістинг програми з коментарями.
4. Список літератури.
1. Опис і схема алгоритму Початок програми починається з розподілу пам'яті під код програми під дані та під стік. Прописавши рядок
Model Small виділяється по 64кб під дані та під код. У завданні нам необхідно працювати з 32-х бітними змінними для чого прописуємо рядок .386.
Визначившись з основними моментами починаємо введення змінних. Змінної є
x. Введення змінної
x і
обробка здійснюється в кілька етапів. Спочатку вводиться код числа
стандартним перериванням
int 21 функцією 0 Ah, замет береться кожен
символ і перетвориться в десяткове значення і здійснюється визначення десятків чи одиниць відповідно. У результаті отримуємо введене нами десяткове число.
Наступним етапом є обчислення полінома за формулою у = 2 * x
-6y-4. По-перше зводимо в квадрат "x", потім множимо на 2. Потім підсумовуємо отримані значення і поміщаємо в змінну у, яка і є
відповіддю даної задачі.
Завершальною стадією програми є висновок перемінної у та завершення програми. Висновок змінної здійснюється функцією
outword, яка міститься в підключається модулі
io. Asm. Підключення даного модуля здійснюється командного
include прописується до коду програми. Завершення програми здійснюється стандартним способом за стандартним
DOS-кому переривання
int 21 функцією
4С h. Рис. 1. Схема алгоритму. Модуль вводу-виводу Io. Asm. Спочатку розглянемо схему зберігання операцій введення-виведення (ВВ) і підключення їх до програм:
Частина операцій введення-виведення реалізована у вигляді процедур, опису яких зібрані в окремому модулі, що зберігається у файлі з ім'ям
ioproc. Asm (
текст модуля наведений нижче). Передбачається, що цей модуль заздалегідь відтранслювати і у вигляді об'єктного модуля записаний у
файл з ім'ям
ioproc. Obj. Зміни стека під час прогону програми Стік у даній програмі при виведенні перемінної
у нам необхідно було звільнити 6 байт стека для виведення числа.
SP-покажчик стека. SS - стік.
Наведемо покрокове зміна стека:
SP: 00F0 SS: 00F2 0000
SS: 00F0 3530
SP: 00F2 SS: 00F4 13BA
SS: 00F2 0000
SP: 0F4 SS: 00F6 0000
SS: 00F4 13BA
SP: 00F6 SS: 00F8 00C9
SS: 00F6 0000
SP: 00F8 SS: 00FA 1645
SS: 00F8 00C9
SS: 00FE 0924
SP: 0100 SS: 0102 02B4
SS: 0100 5052
2. Область застосування. Програма застосовується для розрахунку полінома у = 2 * x
-6y-4. Програма має обмеження у застосуванні, тому що в ній застосовується розрахунок одного значення і за одним алгоритмом.
3. Лістинг програми: model small
include io.asm
. Data
vvx db 10,13, 'Введіть x:','$'
vvy db 10,13, 'Введіть y:','$'
otvet db 10,13, 'Відповідь:','$'
x db 0
two dd 2
four dd 4
six dd 6
z dw 0,0
. Stack 256
.386
. Code
main:
;*********- Початок програми-********************************
mov dx, @ data; початкова адреса в сегмент даних
mov ds, dx
;*********- Висновок рядка-************************************ *
mov dx, offset vvx
mov ah, 9h; Висновок рядка 'Введіть x'
int 21h
;********- Введення числа-************************************* ***
mov ah, 1h
int 21h
sub al, 30h
push ax
;*********- Висновок рядка-************************************ *
mov dx, offset vvy
mov ah, 9h; Висновок рядка 'Введіть y'
int 21h
;********- Введення числа-************************************* ***
mov ah, 1h
int 21h
sub al, 30h
push ax
;**********- Розрахунок полінома-***********************************
pop ax
xor ah, ah
mov bx,
word ptr (six +2)
mul bx; dx, ax = y * 6
mov cx, dx
mov bx, ax
pop ax
xor ah, ah
mov x, al
mul x; ax = al * al
; Xor cx, cx
mov dx, word ptr (two +2)
mul dx; dx, ax: = 2 * al
sub ax, bx
sbb dx, cx
; Результат DX, AX
xor cx, cx
mov bx, word ptr (four +2); dx = Результат
sub ax, bx
sbb dx, cx
; Результат DX, AX
mov z, dx
mov z +2, ax
;**********- Завершення роботи програми-**********************
mov dx, offset otvet; Висновок повідомлення "Відповідь"
mov ah, 9h
int 21h
outword z; Процедура виведення
outword z +2
mov ax, 4c00h
int 21h
end main
4.Список літератури: 1. Єфремов В.Д., Мелехін В.Ф., Дурандін К.П. та ін Обчислювальні машини і системи.
Підручник для вузів - 2М.: Вища
школа, 1994.
2. Ларіонов А.М., Майоров С.А., Новіков Г.І. Обчислювальні комплекси, системи,
мережі. / /
Підручник для вузів. - Л.: Вища школа, 1987.
3. Григор'єв В.Л. Мікропроцесор i486.
Архітектура та програмування. -М.: БІНОМ, 1993