Тестування бітів
Автор: Andrii Ivankov • Декабрь 20, 2022 • Лабораторная работа • 419 Слов (2 Страниц) • 141 Просмотры
Лабораторна робота 5
Тестування бітів
Мета заняття: набути практичних навичок складання, налагодження та виконання програм, написаних мовою Асемблер для тестування бітів.
Завдання для роботи
Згідно номеру студента в групі вибрати варіант завдання і написати на Асемблер програму для тестування бітів згідно поданої в завданні умови.
[pic 1]
Код програми:
include win64a.inc ;
count PROTO arg_a:QWORD
.data
_title db "Лабораторна робота №5.Тестування бітів",0
info db "Завдання: Задано масив А з N = 60 елементів. Створити програму для визначення кількості елементів масиву А, які задовольняють умові L <= Ai <= M, де L = 4 і M = 18.",0Ah,0Dh,10,"Результат: %d чисел задовільнять умову.",0Ah,0Ah,"Автор: студент",10,9, 0
x1 dq -5,-4,-3,-2,-1,0,1,2,3,4
dq 5,6,7,8,9,10,11,12,13,14
dq 15,16,17,18,18,19,20,21,22,23
dq 24,25,26,27,28,29,30,32,33,34
dq 35,36,37,38,39,40,41,42,43,44
dq 45,46,47,48,49,50,51,52,53,54
len1 equ ($-x1)/type x1 ; визначення довжини масиву x1
buf dq 0,0
res dq 0
L dq 4
M dq 18
.code
count proc arg_a:QWORD
lea rdi,x1
xor rcx,rcx
mov rcx,len1
xor r8,r8
xor r9,r9
mov r8,L
mov r9,M
@1:
mov rax,[rdi]
add rdi,8
cmp rax,r8
jl @2
cmp rax,r9
jg @2
inc res
@2:
loop @1
ret
count endp
WinMain proc
sub rsp,28h
mov rbp,rsp
invoke count,len1
invoke wsprintf,ADDR buf,ADDR info,res;
invoke MessageBox,0,addr buf,addr _title,MB_ICONINFORMATION
invoke ExitProcess, 0
WinMain endp
End
Результат компілювання:
[pic 2]
[pic 3]
Код програми:
;Підрахунок суми елементів масиву, для яких біти 1 і 3 співпадають
include win64a.inc
err1 PROTO arg_a:QWORD ; !!! визначення прототипу
.data
buf dq ?,0
ifmt db "Задано масив із 30 елементів:",0dh,0ah,"10, 12, 43, 54, 8",10,"dw 10 dup(4)",10,10,"dw 15 dup(2)",10,10,"Сума елементів масива, для яких біти 1 и 3 співпадають: =%d ",10,10," [10]=00001010, [12]=00001100, [43]=00101011, [54]=00110110 [8]=00001000 [4]=00000100 [2]=00000010 ",10,10,"Автор : ",0
...