Реферат Курсовая Конспект
Зміст звіту - раздел Образование, Виконати дослідження переводу чисел з десяткової в двійкову систему числення 1. Постановка Задачі Для Конкретного Варіанта Завдання. 2. Блок-Схем...
|
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 masm32includewindows.inc
include masm32includeuser32.inc
include masm32includekernel32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.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).
– Конец работы –
Эта тема принадлежит разделу:
Лабораторна робота Подання даних... Мета заняття... Виконати дослідження переводу чисел з десяткової в двійкову систему числення Дати їх внутрішнє машинне подання...
Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Зміст звіту
Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:
Твитнуть |
Новости и инфо для студентов