DATE1 ENDS - раздел Образование, Виконати дослідження переводу чисел з десяткової в двійкову систему числення .data ; Директива Визначення Даних
Str1 Date1 <1,-1,-2,3&...
.data ; директива визначення даних
str1 DATE1 <1,-1,-2,3> ; структура з іменем str1
str2 DATE1 <0,-2,-1,-3> ; структура з іменем str2
st1 db " amount of negative elements ",0
st2 db 10 dup(?),0
ifmt db "%d",0
.code ; директива початку сегмента даних
start: ; мітка початку програми з ім’ям start
xor edx,edx ; заповнювання нулями
mov ebx,2 ; завантаження кількості рядків
lea esi,str1 ; завантаження адреси першого рядка структури
m5: mov ecx,4 ; кількість елементів у рядку
m3: mov eax,[esi] ; завантаження елемента з рядка структури
add eax,0 ; визначення ознак елемента
js m1 ; перейти на m1, якщо елемент негативний
jmp m2 ; безумовний перехід, якщо навпаки
m1: add edx,eax ; додавання негативних елементів рядка структури
m2: add esi,4 ; підготовка адреси нового елемента
loop m3 ; есх := ecx – 1 та перехід на m3, якщо не нуль
dec ebx ; ebx := ebx – 1
jz m4 ; якщо ebx = 0 (z = 1), то перехід на закінчення
lea esi,str2 ; завантаження адреси нового рядка
jmp m5 ; перехід на новий цикл
m4:
invoke wsprintf, ; АРІ-функція перетворення числа
ADDR st2, ; адреса буферу, куди буде записана послідовність символів
ADDR ifmt, ; адреса рядка перетворення формату
edx ; регістр, вміст якого перетворюється
invoke MessageBox, ; АРІ-функція виведення вікна консолі
NULL, ; hwnd – ідентифікатор вікна
addr st2, ; адреса рядка, яка містить текст повідомлення
addr st1, ; адреса рядка, яка містить заголовок повідомлення
MB_OK ; вигляд діалогового вікна
invoke ExitProcess, 0 ; повернення керування ОС Windows
; та визволення ресурсів
end start ; директива закінчення програми з іменем start
Результат виконання програми з лістингу 13.7 наведено на рис. 13.6.
У результаті виконання програми отримується число -9, яке заноситься до регістра edx, а потім виводиться у вікно консолі.
Приклад 14.5.Написати програму з використанням макросів для обчислення виразу
a(a – b) – (a – b)
та слів розміром у байт.
Програму без виведення результату на монітор наведено в лістингу 14.6.
Лістинг 14.6:
title CopyRight by Rysovaniy A. N. RYSOV@RAMBLER.RU
.686 ; директива визначення типу мікропроцесора
.model flat,stdcall ; завдання лінійної моделі пам’яті
; та угоди ОС Windows
option casemap:none ; відмінність малих та великих літер
includelib masm32libkernel32.lib
ExitProcess proto:dword ; прототип API-функції
mSubB macro a,b ; макрос з ім’ям mSubB
mov al,a ;; занесення змінної а
sub al,b ;; віднімання a – b
mov res1,al ;; збереження результату у пам’яті
endm ;; закінчення макросу
.data ; директива визначення даних
a db 6 ; збереження в комірці пам’яті розміром в байт операнда 6
b db 5 ; збереження в комірці пам’яті розміром в байт операнда 5
res1 db 0 ; резервування пам’яті для результату res1
res2 dw 0 ; резервування пам’яті для результату res2
.code ; директива початку програми
_start: ; мітка початку програми з ім’ям _start
mSubB [a],[b] ; виклик макросу
mov al,a
mov bl,res1
mul bl ; ax := al × bl
mov bx,ax ; визволення ах для наступних операцій
mSubB [a],[b] ; виклик макросу
movzx ax,res1 ; занесення з розширенням розрядності
sub bx,ax ;
mov res2,bx ; збереження залишкового результату
invoke ExitProcess, 0 ; повернення керування ОС Windows
; та визволення ресурсів
end _start ; директива закінчення програми з ім’ям _start
Стан програми лістингу 14.6 після її виконання наведено на рис. 14.6. У програмі макрос викликається два рази.
15.4. Лабораторна робота “Dll-файли”
Мета заняття:
– поглибити і закріпити знання з архітектури МП платформи х86 і навички його програмування;
– придбати практичні навички складання, налагодження і виконання програм з використанням Dll-файлів з використанням точки входу, написаних мовою асемблеру для програмування МП платформи х86. Дані, які виводяться необхідно підписати. Окремо вивести довідку про автора програми.
Все темы данного раздела:
Вхідний контроль знань
1. Перевести числа вашого дня, місяця та року народження у двійкову, вісімкову та шістнадцяткову системи числення.
2. Перевести число DD.MM у двійкову та шістнадцяткову системи числення дл
Порядок виконання роботи
Для виконання завдання №1 необхідно вибрати свій варіант із табл. 3.3 та записати тільки число X зі знаками.
Таблиця 3.3 – Варіанти завдань
Link.exe /subsystem:console Lab1.obj.
Скопіювати вигляд налагоджувача у звіт можна, натиснувши клавіші PrtScr або Alt + PrtScr.
Потім треба викликати налагоджувач OllyDbg (http://cracklab.ru/_dl/new/ollydbg110xp.rar або www.ol
Вхідний контроль знань
Написати та налагодити програму згідно з одержаним варіантом завдання. Результат записати у пам’ять.
1. Скласти день, місяць та рік свого народження.
2. Перемножити день, місяць т
Постановка задачі
Згідно з номером в групі вибрати варіант та написати на асемблері програму обчислення одного з виразів:
1. a – ab – e/c; 5. a – de – e/b; 9. (de – e)/(c – a);
Зміст звіту
1. Постановка задачі для конкретного варіанта.
2. Лістинг програми з детальним коментарем та описом роботи.
3. Рrint screen екрана 32-розрядного налагоджувача з виконаною програмо
Вхідний контроль знань
Написати та налагодити програму згідно з отриманим варіантом та оформити її у вигляді процедури з параметрами. Результат записати у пам’ять.
1. Виконати операцію логічного додавання дня та
Постановка задачі
Згідно з номером студента в групі вибрати варіант завдання та написати на асемблері програму обчислення одного з виразів:
1. 2d/с – сd; 8. 2ab – 8c/b; 15.
Зміст звіту
1. Постановка задачі для отриманого варіанта завдання.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем.
3. Лістинг програми з детальним коментарем до кожної кома
Постановка задачі
Згідно з номером студента в групі вибрати варіант завдання та написати на асемблері програму обчислення одного з виразів:
1. 2(a – bс) + e/d; 9. 8c – 6ad
Зміст звіту
1. Постановка задачі для отриманого варіанта завдаання.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.
3. Лістинг програм: головної та зовнішн
Завдання 1.
Згідно з останньою цифрою номера студента в групі вибрати варіант завдання та написати на асемблері програму обчислення одного з прикладів з введенням та виведенням даних. П
Завдання 2.
Згідно з останньою цифрою номера студента в групі вибрати варіант завдання та написати програму з виведенням даних у файл та на екран монітора з використанням функції MessageBox (Mes
Зміст звіту
1. Постановка задачі для конкретного варіанта завдання.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.
3. Лістинг програми та коментарі до всі
Постановка задачі
Згідно з останньою цифрою номера в групі вибрати варіант завдання та написати на асемблері програму обчислення одного з виразів з використанням дійсних чисел та виведенням їх на екран. При цьому об
Методичні рекомендації
Для налагодження остаточного варіанта програми спочатку необхідно налагодити частину програми з отриманням одного результату та його виведенням. На другому етапі – отримання масиву результатів. На
Зміст звіту
1. Постановка задачі для конкретного варіанта.
2. Блок-схема алгоритму виконання прикладу.
3. Лістинг програми з детальним коментарем та описом роботи.
4. Рrint screen ек
Постановка задачі
Згідно з цифрою номера студента в групі вибрати свій варіант та написати програму з використанням команд обробки рядків,з обов’язковим використанням операцій введення та виведення.
Зміст звіту
1. Постановка задачі для конкретного варіанта.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.
3. Лістинг програми з виведенням даних на екран
Постановка задачі
Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати програму з використанням директив умовного асемблювання та дійсних чиселз обов’язковим виведенням
Зміст звіту
1. Постановка задачі для конкретного варіанта.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.
3. Лістинг програми та коментарі до всіх команд.
Завдання 1
1. Задано матрицю 3 ´ 5. Виконати транспонування цієї матриці. Результат виконання програми вивести у вікно консолі.
2. Задано матрицю 6 ´ 6. Визначити суму елементів під голов
Завдання 2
1. Задано послідовність структур. Структура містить поля: назва автомобіля, порядковий номер, ім’я власника, кількість порушень. Обчислити кількість власників з більш ніж з трьома порушеннями.
Макроси. Постановка задачі
Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати на асемблері програму обчислення одного з виразів з використанням макросів та виведенням їх на екран. При цьому об
Завдання 1
1. (2a/b) + a/3,1b; 6. (1,1ab – 3)/ab;
2. 1,1(x – a) + 210/(x – a); 7. 2,3(a – b) + 2,3(a – b)/a;
Зміст звіту
1. Постановка задачі для конкретного варіанта.
2. Блок-схема алгоритму виконання прикладу з детальним коментарем та описом роботи.
3. Лістинг програми та коментарі до всіх команд.
Постановка задачі
Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати програму на асемблері обчислення одного з виразів:
1. Задано масив А з N = 5 елементів. Нав
Деталі реалізації
Для виконання завдання було розроблено дві динамічні бібліотеки: ArrHandler.dllта ConsoIeIO.dll.Перша містить функції обробки масивів, друга – функції введення/вив
Public WriteLine
GetNum proto
PrintNum proto Number :DWORD
WriteLine proto
BSIZE equ 12
.data
hInst dd 0
stdin dd 0
stdout dd 0
rdn dd 0
GetNum proc
; вивести запрошення
invoke WriteConsole, stdout, offset msg, MS, offset wrtn, 0
; прочитати число в символьному вигляді
invoke ReadConsole, stdin, offset buff, BSIZE, of
Новости и инфо для студентов