Студопедия  
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Лабораторна робота №5

Читайте также:
  1. IV. Лабораторная диагностика ВИЧ-инфекции
  2. X. Робота самодіяльних організацій засуджених.
  3. XV. Аналітична робота.
  4. Ассемблер. Лабораторная работа № 5
  5. Бычий цепень. Систематическое положение, морфология, цикл развития, лабораторная диагностика. Тениаринхоза.
  6. Вирус папилломы человека. Характеристика. Онкогенность. Лабораторная диагностика
  7. Виховна та позакласна робота.
  8. Данная лабораторная работа предполагает освоение базовых принципов работы с консолью в Linux.
  9. Дипломна робота
  10. Емісійно-касова робота установ Національного банку України

1. Постановка задачі для конкретного варіанта завдання.

2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.

3. Лістинг програми та коментарі до всіх команд.

4. Рrint screen екрана 32-розрядного налагоджувача з виконанням програми та результатами виконання.

5. Короткий опис виконання програми.

6. Висновки за результатами роботи.

Приклад 8.1. Для функції Y = 40 Х + 15 одержати перше значення, що перевищує 512, починаючи з Х = 2. Значення аргументу та функції вивести на екран.

Алгоритм вирішення прикладу 8.1 наведено на рис. 8.14.

 

 
 

 


Лістинг 8.12. Програма виконання прикладу 8.1:

title CopyRight by Rysovaniy A. N.

.386; директива визначення типу мікропроцесора

.model flat, stdcall; завдання лінійної моделі пам’яті та угоди ОС Windows

option casemap:none; відмінність малих та великих літер

include \masm32\include\windows.inc

include \masm32\include\user32.inc

include \masm32\include\kernel32.inc

includelib \masm32\lib\user32.lib

includelib \masm32\lib\kernel32.lib

; Для функції У=40Х+15 одержати перше значення, при якому

; Y > 512,; починаючи з Х = 2. Значення аргументу та функції

; записати в комірки пам’яті. Вивести результат на екран

BSIZE equ 15; завдання реальної кількості байтів

.data; директива визначення даних

x dd 40; резервування 32-розрядної комірки пам’яті для х = 40

y dd?; резервування 32-розрядної комірки пам’яті для змінної Y

buf db BSIZE dup(?); резервування пам’яті для буфера

frmt db "%d",0; завдання перетворення одного символу

stdout DWORD?; резервування в пам’яті 32-розрядної комірки

cWritten DWORD?; резервування 32-розрядної комірки пам’яті

; з ім’ям cWritten для адреси символів виведення

st1 db " y = 40X + 15",0

st2 db "Автор: Рысованый А.Н.",0

st3 db " ЛР Организация ввода-вывода",0

st4 db "Программа выполнена успешно",0

st6 db "До следующей лабораторной работы!!!",0

.code; початок сегмента даних

start:; мітка початку програми

mov ebx,2; початкове значення аргументу Х

m1: mov eax,ebx; підготування до множення

mul x; виконання частини функції Y (40Х)

add eax,15; виконання всієї функції Y = 40Х + 15

cmp eax,512; порівняння з умовою

jnc exit; перейти, якщо Y > 128

inc ebx; збільшити лічильник аргументу Х

jmp m1; перейти при Y < 128

exit:

mov esi,ebx; збереження Х

mov edi,eax; збереження Y

invoke GetStdHandle, STD_OUTPUT_HANDLE; отримання дескриптора

mov stdout, eax; збереження одержаного дескриптора у пам’яті

invoke wsprintf, \; АРІ-функція перетворення числа

ADDR buf, \; адреса буфера, куди буде записана послідовність символів

ADDR frmt, \; адреса рядка перетворення формату

esi; регістр, вміст якого перетворюється

invoke WriteConsoleA, \; АРІ-функція виведення на екран

stdout, \; дескриптор стандартного пристрою виведення

ADDR buf, \; адреса початку повідомлення

BSIZE, \; розмір повідомлення

ADDR cWritten, 0; адреса, де зберігається число символів

invoke wsprintf, ADDR buf, ADDR frmt,edi; функція перетворення edi

invoke WriteConsoleA, \; АРІ-функція виведення на екран

stdout, \; дескриптор стандартного пристрою виведення

ADDR buf, \; адреса початку повідомлення

BSIZE, \; розмір повідомлення

ADDR cWritten, 0; адреса, де зберігається число символів

invoke Sleep, 2000d; API-функція затримки зображення

invoke MessageBox, \; АРІ-функція виведення вікна консолі

NULL, \; hwnd – ідентифікатор вікна

addr st2, \; адреса рядка, який містить текст повідомлення

addr st1, \; адреса рядка, який містить заголовок повідомлення

MB_OKCANCEL; вигляд діалогового вікна

xor eax,1

jz a1

invoke MessageBox, NULL, addr st4, addr st3, MB_ICONINFORMATION

jmp a2

a1: invoke MessageBox, NULL, addr st6, addr st3, MB_OK

a2: invoke ExitProcess, 0; повернення керування ОС Windows

; та визволення ресурсів

end start; директива закінчення програми з ім’ям start

 

Наприкінці програми показано використання АРІ-функції MessageBox. Останній її параметр повертає до регістра еах або 1 (якщо OK), або 2 (якщо CANCEL). За допомогою команди xor (додавання за mod2), якщо значення регістра еах дорівнювало 1, прапорець ZF встановиться в 1. У такому випадку виводиться одне повідомлення, у іншому випадку – друге повідомлення.

На рис. 8.15 наведено результат виконання лістингу 8.12.

 
 

 


Ліворуч наведено змінну Х, а праворуч – Y. Є декілька варіантів підпису. Найбільш простим є варіант, при якому можна використати директиви

frmt1 db "х = %d",0

frmt2 db "y = %d",0

При іншому варіанті програма суттєво модернізується. Спочатку, як наведено у лістингу 8.13, замість функції wsprintf напишемо підпрограму, яка переводить число у десяткову систему числення (діленням на 10), а потім підсумуємо константу 48D = 30h = ‘0’ (лістинг 8.13).

 

Висновки: …

 

 

Література: Рисований О.М. Системне програмування [Текст]: підручник для студентів напрямку “Компютерна інженерія” вищих навчальних закладів. Видання друге: виправлено та доповнено – Х.: “Слово”, 2011. – 944 с.

 

Лабораторна робота №5

“ Програмуванням задач з використанням команд співпроцесора ”

Мета заняття:

– поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування;

– придбати практичні навички складання, налагодження і виконання програм з використанням команд співпроцесора, написаних мовою асемблеру для програмування МП платформи х86.

 




Дата добавления: 2014-12-18; просмотров: 41 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2024 год. (0.011 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав