рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Зміст звіту

Зміст звіту - раздел Образование, Виконати дослідження переводу чисел з десяткової в двійкову систему числення 1. Постановка Задачі Для Конкретного Варіанта. 2. Лістинг Програми З...

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

2. Лістинг програми з детальним коментарем та описом роботи.

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

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

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

 

Приклад 5.2. Написати на асемблері програму обчислення виразу

(а + b)с – d/c,

де a – № в списку;

b – № навчальної групи;

cрр – дві останні цифри року народження;

ерррр – чотири цифри року народження;

dддмм:

дд – день народження;

мм – місяць народження.

Результат обчислення виразу зберегти в пам’яті. Навести значення та порядок розміщення даних у пам’яті.

Приклад обчислення виразу (5 + 16)81 – 2209/81 наведено в лістингу 5.13.

 

Лістинг 5.13.Програма обчислення прикладу 5.2 з використанням змінних розміром у байт:

title CopyRight by Rysovaniy A. N. rysov@rambler.ru

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

.model flat ; завдання лінійної моделі пам’яті

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

_a db 5 ; запис у 8-розрядну комірку пам’яті з ім’ям _а числа 5

_b db 16 ; _b = 10h

_c db 81 ; _c = 51h

_d dw 2209 ; запис у 16-розрядну комірку пам’яті числа _d = 8A1

rez1 dw 0 ; резервування пам’яті для збереження змінної rez1

rez2 dw 0 ; резервування пам’яті для збереження змінної rez2

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

_start: ; мітка початку програми з ім’ям _start

mov al,_a ; al = 05h

add al,_b ; al = 5h + 10h = 15h – (a + b)

mul _c ; ax = 15h ´ 51h = 06A5h – (a + b)c

push ax ; стек = ХХХХ06A5h

mov ax,_d ; ax = 08A1h

div _c ; ah,al = ax/_c = 16 1Bh – d/c

movzx bx,ah ; bx = 0016h – залишок

xor cx,cx ; cx = 0

sub cx,bx ; cx = cx – bx = FFEAh – залишок

mov rez1,cx ; збереження залишку

pop cx ; cx = 06A5h – відновлення (a + b)c

movzx ax,al ; al = 001Bh – вирівнювання формату

sbb cx,ax ; cx = 06A5h – 001Bh – 1 = 0689h – ціла частина

mov rez2,cx ; збереження цілої частини результату

ret ; повернення керування ОС

end _start ; закінчення програми з ім’ям _start

 

Порядок розміщення даних у пам’яті та стан налагоджувача OllyDbg програми наведено на рис. 5.18.

Результатом виконання програми буде число 0689.FFEA, де 689h – ціла частина, а FFEAh – залишок (дрібна частина) результату.

Для копіювання активного вікна програми, наприклад програми OllyDbg, треба натиснути Alt + PrtScr.

Збереження тимчасових результатів частини виразу (а + b)с виконується в стеку, хоча для цього можна використовувати як один із вільних регістрів, так й комірку пам’яті.

Програму обчислення прикладу 5.2 з використанням даних розміром у слово наведено у лістингу 5.14.

 

 

 
 

 

 


Лістинг 5.14. Програма обчислення прикладу 5.1 з використанням змінних розміром у слово:

title CopyRight by Rysovaniy A. N.

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

.model flat ; завдання лінійної моделі пам’яті

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

_a dw 5 ; запис у 8-розрядну комірку пам’яті з ім’ям _а числа 5

_b dw 16 ; _b = 10h

_c dw 81 ; _c = 51h

_d dw 2209 ; запис у 16-розрядну комірку пам’яті з ім’ям _ d числа 8A1

res dw 3 dup (0) ;

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

_start: ; мітка початку програми з ім’ям _start

mov ax,_a ; ax = 0005h

add ax,_b ; ax = 0015h

mul _c ; dx = 0000h, ax = 06A5h

push dx ; стек = xxxx0000h

push ax ; стек = 0000 06A5h

mov ax,_d ; ax = 08A1h

div _c ; dx = 0016h, ax = 001Bh

xor si,si ; si = 0 – заповнювання нулями регістра si

sub si,dx ; 0000 – 0016h = FFEAh – дріб

mov res,si ; запис дробової частини

pop si ; si = 06A5h – старша частина результату (а-b)c

sbb si,ax ; віднімання з урахуванням позики

mov res+2,si ; запис молодшої цілої частини

pop si

sbb si,0 ; віднімання з урахуванням позики

mov res+4,si ; запис цілої старшої частини

 

ret ; повернення керування ОС

end _start ; закінчення програми з ім’ям _start

Порядок розміщення даних у пам’яті та стан налагоджувача OllyDbg з програмою наведено на рис. 5.19.

 

 

 
 

 


Результат виконання прикладу не змінився та дорівнює 0000 0689,FFEAh.

Приклад використання формату даних, збільшеного учетверо, наведено у лістингу 5.15. В цій програмі операція віднімання виконана у додаткових кодах. Тому й результат обчислення виразу теж наведено у додаткових кодах.

Лістинг 5.15.Приклад використання формату даних, збільшеного учетверо:

title CopyRight by Rysovaniy A. N.

; (e + d – ed)/a

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

.model flat ; завдання лінійної моделі пам’яті

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

a dd 6 ; a = 00000006h

d dd 2112 ; d = 00000840h

e dd 1989 ; e = 000007C5h

rez1 dd 0 ; rez1 = 00000000h

rez2 dd 0 ; rez2 = 00000000h

.code ; (e + d – ed)/a – початок сегмента команд

_start: ; мітка початку програми з ім’ям _start

; e*d

mov eax,d ; eax = 00000840h

imul e ; edx = 00000000h, eax = 00401940h

 

; – e*d (перетворення у додатковий код)

not eax ; інверсія eax = FFBFE6BFh

not edx ; інверсія edx = FFFFFFFFh

inc eax ; eax = FFBFE6C0h

adc edx,0 ; edx = FFFFFFFFh (CF=0)

 

; + d – e*d

add eax,d ; eax = FFBFEF00h

adc edx,0 ; edx = FFFFFFFFh (CF=0)

 

;e + d – e*d

add eax,e ; eax = FFBFF6C5h

adc edx,0 ; edx = FFFFFFFFh (CF=0)

 

; (e+d-e*d)/a

idiv a ; edx = FFFFFFFDh, eax = FFF553CCh

mov rez1,eax ; rez1 = FFF553CCh – частка

mov rez2,edx ; rez2 = FFFFFFFDh – залишок

ret ; повернення керування ОС

end _start ; закінчення програми з ім’ям _start

 

У зв’язку з тим, що значення виразу (e+d-e*d) при таких початкових даних повністю розміщується у регістрі eax та не “переходить” у регістр edx, програма стає достатньо простою. У противному разі потрібно виконувати спочатку ділення регістра edx, потім залишок пристиковувати до регістра eax та знову виконувати ділення (ділення у стовпчик)

Для одержання результату в прямому коді необхідно провести зворотне перетворення вмісту комірок пам’яті з додаткового коду.

 

Порядок розміщення даних у пам’яті та стан налагоджувача OllyDbg з програмою лістингу 5.15 наведено на рис. 5.20.

 
 

 

 


– Конец работы –

Эта тема принадлежит разделу:

Виконати дослідження переводу чисел з десяткової в двійкову систему числення

Лабораторна робота Подання даних... Мета заняття... Виконати дослідження переводу чисел з десяткової в двійкову систему числення Дати їх внутрішнє машинне подання...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Зміст звіту

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Вхідний контроль знань
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. Виконати операцію логічного додавання дня та

Постановка задачі
Згідно з номером студента в групі вибрати варіант завдання та написати на асемблері програму обчислення одного з виразів: 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. Лістинг програми та коментарі до всіх команд.

DATE1 ENDS
.data ; директива визначення даних str1 DATE1 <1,-1,-2,3> ; структура з іменем str1 str2 DATE1 <0,-2,-1,-3> ; структура з іменем str2

Постановка задачі
Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати програму на асемблері обчислення одного з виразів: 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

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги