1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
| .586
.MODEL flat, stdcall
OPTION CASEMAP:NONE
Include kernel32.inc
Include masm32.inc
IncludeLib kernel32.lib
IncludeLib masm32.lib
.CONST
MsgExit DB "Press Enter to Exit",0AH,0DH,0
N DD 6
.DATA
; Матрица À(6,6)
A SBYTE 1,8,-13,3,5,-2,
2,9,26,0,12,10,
-3,4,-100,7,1,8,
15,-20,2,9,1,14,
12,16,-3,-8,1,10,
-10,7,5,9,11,-8
Space DB " ",0
SlashN DB 13,10,0
SEnd DB 0AH,0DH,0
.DATA?
inbuf DB 100 DUP (?)
SOut DB 16 DUP (?)
.STACK 4096
.CODE
Start:
call MatrixOut
XOR EAX,EAX
Invoke StdOut,ADDR MsgExit
Invoke StdIn,ADDR inbuf,LengthOf inbuf
Invoke ExitProcess,0
MatrixOut proc near
mov EBX,0 ; смещение в строке
mov ECX,N ; кол-во строк
icycle: ; цикл по строкам
push ECX ; ECX - в стек
mov ECX,N ; кол-во столбцов
jcycle: ; цикл по столбцам
push ECX ; ECX - в стек, т. к. Invoke портит его
; Преобразование и вывод на экран
Invoke dwtoa,A[EBX],ADDR SOut
Invoke StdOut,ADDR SOut
Invoke StdOut,ADDR Space
inc EBX ; к след. эл-ту строки
pop ECX ; вытащили из стека номер столбца
loop jcycle
Invoke StdOut,ADDR SlashN
pop ECX ; вытащили из стека номер строки
loop icycle
Invoke StdOut,ADDR SEnd
ret
MatrixOut endp
End Start |