Частина тексту файла (без зображень, графіків і формул):
Міністерство освіти та науки України
Національний університет «Львівська політехніка»
/
ЗВІТ
З лабораторних робіт
З дисципліни: «Cистемне програмування»
Львів 2014
Лабораторна робота №1
Тема: Особливості програмування з використанням 32х розрядного асемблера
Мета: освоїти використання команд порівняння, умовного та безумовного переходів. Набути вміння використовувати арифметичні команди над знаковими даними та команди логічних операцій.
Завдання:
Варіант:
21
Знайти суму перших К відємних елементів масиву A={a[i]}, що задовольняють умову a[i] >= с+d
Код програми:
.586
; використати плоску модель пам'яті і узгодження імен stdcall
.model flat, stdcall
option casemap: none
; оголошення службових процедур, макросів, змінних, констант
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
include \masm32\include\user32.inc
; підключення службових бібліотек
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
includelib \masm32\lib\user32.lib
; оголошення масиву даних
.data
Arr dd -1,-3,8,-10,-15,6,5,4,3
k dd 5
CC dd -4
d dd -10
x dd -14; x = c + d
.code
start:
mov ecx,0
mov ebx,0 ;сума
prnt:
mov eax,[Arr+ecx*4]
cmp eax,0
jg wer
cmp eax,x
jl wer
add ebx,eax
wer:
inc ecx
cmp ecx,k
loop prnt
PrintDec ebx,"сума перших К відємних елементів що задовольняють умову a(i) більше рівне за с + d"
invoke ExitProcess, NULL ; виклик процедури завершення процесу
end startВисновок і результат роботи програми:
/
Висновок: на даній лабораторній роботі я навчився працювати з 32х розрядним асемблером, дізнався про деякі нові особливості, що наприклад тепер звичні мені регістри із процесору 8086 розширились. Нагадав собі як працюють умовні переходи, а також як проходитись по масиву і використовувати дані з нього у циклах.