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

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

Постановка задачі

Читайте также:
  1. I этап. Постановка задачи
  2. III. Постановка темы урока.
  3. IV. Задачі
  4. IV. Задачі
  5. Алгоритм вирішення задачі
  6. Аналіз задачі.
  7. Визначення початкового рішення транспортної задачі.
  8. Вирішити задачі
  9. Вирішити задачі
  10. Вирішити задачі

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

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

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

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

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

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

 

Приклад 13.3. Задано матрицю 2 ´ 4. Визначити суму всіх негативних елементів матриці. Результат виконання програми вивести у вікно консолі.

 

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

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

.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

DATE1 STRUCT; тип даних СТРУКТУРА з іменем DATE1

elem1 dd?; ім’я першого поля структури

elem2 dd?; ім’я другого поля структури

elem3 dd?; ім’я третього поля структури

elem4 dd?; ім’я четвертого поля структури

DATE1 ENDS

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

str1 DATE1 <1,-1,-2,3>; структура з іменем str1

str2 DATE1 <0,-2,-1,-3>; структура з іменем str2

titl1 db " Работа с элементами структуры",0

buf db 10 dup(?),0

ifmt db "Задана матрица:",0dh,0ah,\

"1 -1 -2 3",0dh,0ah,\

"0 -2 -1 -3",0dh,0ah,0ah,\

"Результат сложения отрицательных элементов",0dh,0ah,\

" = %d ",0dh,0ah,0ah,\

"Автор программы: НТУ ХПИ",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 buf, \; адреса буферу, куди буде записана послідовність символів

ADDR ifmt, edx; адреса рядка перетворення формату та регістр перетворення

invoke MessageBox, 0, addr buf, \; адреса рядка, яка містить текст повідомлення

addr titl1, MB_ICONINFORMATION+180000h; заголовок та вигляд вікна

invoke ExitProcess, 0; повернення керування ОС Windows та вивільнення ресурсів

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

Результат виконання програми з лістингу 13.7 наведено на рис. 13.8.

 
 

 

 


У результаті виконання програми отримується число -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; відмінність малих та великих літер

include \masm32\include\windows.inc; файли структур, констант …

include \masm32\macros\macros.asm

uselib kernel32, fpu

mSubB macro _a,_b;; макрос з ім’ям mSubB для (a – b)

mov al,_a;; занесення змінної а

sub al,_b;; віднімання a – b

mov res1,al;; збереження результату у пам’яті

endm;; закінчення макросу

@ macro c0,c1,c2,c3;;макрос для запису команд в рядок

c0

c1

c2

c3

endm;; закінчення макросу @

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

_a db 6; збереження в комірці пам’яті розміром в байт операнда 6

_b db 5; збереження в комірці пам’яті розміром в байт операнда 5

res1 db 0; резервування пам’яті для результату res1

buf dd?,0; буфер виведення повідомлення

ifmt db " Уравнение: ", 0dh,0ah,"Y = a(a – b) - (a – b)", 0dh,0ah,0ah,;

"При а = 6, b = 5, Y = %d",0dh,0ah,0ah, "Автор программы:",0;

titl db "Результат решения уравнения",0; назва спрощеного вікна

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

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

; виконання [a х mSubB]

@<mSubB [_a],[_b]>,<mov al,_a>,<mul res1>,<mov bx,ax>

; виконання [- mSubB]

@<mSubB [_a],[_b]>,<movzx ax,res1>,<sub bx,ax>,<movzx ebx,bx>

invoke wsprintf, ADDR buf,\; функція перетворення числа та адр. буф. з символами

ADDR ifmt, ebx; адреса рядка перетворення формату та регістр з результатом

invoke MessageBox, 0,addr buf,\; hwnd та адр. буфера текст повідомлення

addr titl, MB_ICONINFORMATION; адреса заголовку вікна та вигляд вікна

invoke ExitProcess, 0; повернення керування ОС Windows та визволення ресурсів

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

 

 

Для виведення чисел на екран за допомогою АРІ-функцій необхідно, щоб результат був розташований у 32-розрядному регістрі. Тому в програмі використано команду movzx, яка розширює результат до 32-розрядного формату. Результат виконання програми наведено на рис. 14.7.

 
 

 

 


Висновки: …

 

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

 

Постановка задачі

Згідно з останньою цифрою номера студента в групі вибрати свій варіант та написати програму на асемблері обчислення одного з виразів:

1. Задано масив А з N = 100 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L < A i ≤ M, де L = 2 та M = 10.

2. Задано масив А з N = 20 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову LAi < M, де L = 5 та M = 15.

3. Задано масив А з N = 30 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L < Ai < M, де L = 4 та M = 18.

4. Задано масив А з N = 40 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L ≤ Ai ≤ M, де L = 5 та M = 20.

5. Задано масив А з N = 50 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову LAi > M, де L = 6 та M = 22.

6. Задано масив А з N = 60 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L > AiM, де L = 7 та M = 24.

7. Задано масив А з N = 70 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L > Ai > M, де L = 8 та M = 28.

8. Задано масив А з N = 80 елементів. Навести алгоритм та програму визначення кількості елементів масиву А, які задовольняють умову L ≥ AiM, де L = 9 та M = 30.

9. Задано масиви А і В по N = 90 елементів. Навести алгоритм та програму формування масиву С за таким правилом: якщо Аi ≤ Вi, то Сi = Аi × Вi; інакше – Сi = Аi + Вi.

10. Задано масиви А і В по N = 100 елементів. Навести алгоритм та програму формування масиву С за таким правилом: якщо Аi ≤ Вi, то Сi = Вi – Аi; інакше – Сi = Аi × Вi.




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




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