Задание:
Написать программу с выводом данных на экран монитора. Ввести двумерный массив А (N, N). Составить алгоритм и программу подсчета среднего арифметического значений двумерного массива. Найти отклонения от среднего в элементов первой строки.
Текст программы:
.686; Директива определения типа микропроцессора
. Model flat, stdcall; задачи линейной модели памяти
; И соглашения ОС Windows
option casemap: none; отличие малых и больших букв
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\fpu.inc
include \masm32\include\user32.inc
include \masm32\include\msvcrt.inc
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\msvcrt.lib
includelib \masm32\lib\fpu.lib
. Data; директива определения данных
buf db 30 dup (?)
stdout DWORD?
stdin DWORD?
cRead dd?
temp dd?
st1 db "Vvesty masiv:
st2 db "Вывод результата отклонения от среднего арифметического", 0
st3 db 10 dup (0)
sum dd 0
sum1 dd 0
mas1 dd 1,2,3,4,5,6,7,8,9
const1 dd 100
_c dd 9
_cc dd 3
. Code; директива начала кода
_start:
lea esi, mas1; загрузки адреса начала массива
mov ecx, _c
m1:
mov ebx, ecx
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov stdout, eax
invoke GetStdHandle, STD_INPUT_HANDLE
mov stdin, eax
invoke WriteConsoleA, stdout, ADDR st1, 14, NULL, NULL; VIVOD ST1
invoke ReadConsole, stdin, ADDR buf, 20, ADDR cRead, NULL; чтения числа как символ
invoke crt_atoi, ADDR buf;преобразовать символ в число
mov [esi],eax
add esi,4
mov ecx,ebx
loop m1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
lea esi,mas1; загрузки адреса начала массива
mov ecx,_c
finit
fld sum
m2:
fild dword ptr [esi]
faddp st (1),st
add esi,
loop m2
fild _c
fdiv
lea esi, mas1
mov ecx, _cc
fld sum1
m3: fild dword ptr [esi]
faddp st (1), st
add esi, 4
loop m3
fild _cc
fdiv
fdiv
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
invoke FpuFLtoA, 0, 10, ADDR st3, SRC1_FPU or SRC2_DIMM
invoke MessageBox, NULL, addr st3, addr st2, MB_OK
invoke ExitProcess, NULL;возврат управления Windows
; И освобождения ресурсов
end _start; директива окончания программы с именем start
Результат работы программы: