Untitled
unknown
plain_text
2 years ago
4.1 kB
4
Indexable
.data
formatScanf: .asciz "%ld "
formatPrintf: .asciz "%ld "
m: .space 4
n: .space 4
p: .space 4
k: .space 4
x: .space 4
y: .space 4
i: .space 4
j: .space 4
c: .space 4
S: .space 2000
S2: .space 2000
m2: .space 4
n2: .space 4
nrv: .space 4
cell: .space 4
slash: .asciz "\n"
.text
.global main
main:
pushl $m
pushl $formatScanf
call scanf
popl %ebx
popl %ebx
addl $2, m
movl m, %ecx
decl %ecx
movl %ecx, m2
pushl $n
pushl $formatScanf
call scanf
popl %ebx
popl %ebx
addl $2, n
movl n, %ecx
decl %ecx
movl %ecx, n2
pushl $p
pushl $formatScanf
call scanf
popl %ebx
popl %ebx
movl $0, c
for_vii:
movl c, %ecx
cmp %ecx, p
je for_k
pushl $x
pushl $formatScanf
call scanf
popl %ebx
popl %ebx
pushl $y
pushl $formatScanf
call scanf
popl %ebx
popl %ebx
movl x, %eax
xorl %edx, %edx
mull n
addl y, %eax
incl %eax
lea S, %edi
movl $1, (%edi, %eax, 4)
incl c
jmp for_vii
for_k:
pushl $k
pushl $formatScanf
call scanf
popl %ebx
popl %ebx
movl $0, c
evolutii:
movl c, %ecx
cmp %ecx, k
je out
incl c
movl $1, i
for_line:
movl i, %ecx
cmp %ecx, m2
je transpunere
movl $1, j
for_column:
movl j, %ecx
cmp %ecx, n2
je cont_line
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
lea S, %edi
movl (%edi, %eax, 4), %ebx
movl %ebx, cell
movl $0, nrv
//i-1,j-1
movl i, %eax
xor %edx, %edx
decl %eax
mull n
addl j, %eax
decl %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
//i-1, j
movl i, %eax
xor %edx, %edx
decl %eax
mull n
addl j, %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
//i-1,j+1
movl i, %eax
xor %edx, %edx
decl %eax
mull n
addl j, %eax
incl %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
//i,j+1
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
incl %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
//i, j-1
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
decl %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
//i+1,j+1
movl i, %eax
xor %edx, %edx
incl %eax
mull n
addl j, %eax
incl %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
//i+1,j
movl i, %eax
xor %edx, %edx
incl %eax
mull n
addl j, %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
//i+1,j-1
movl i, %eax
xor %edx, %edx
incl %eax
mull n
addl j, %eax
decl %eax
movl (%edi, %eax, 4), %edx
addl %edx, nrv
cmp $0, %ebx
je cell_moarta
jmp cell_vie
cont_column:
incl j
jmp for_column
cont_line:
incl i
jmp for_line
cell_moarta:
movl nrv, %eax
cmp $3, %eax
je cell_invie
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
lea S2, %edi
movl $0,(%edi, %eax, 4)
jmp cont_column
cell_vie:
movl nrv, %eax
cmp $2, %eax
je cell_invie
movl nrv, %eax
cmp $3, %eax
je cell_invie
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
lea S2, %edi
movl $0,(%edi, %eax, 4)
jmp cont_column
cell_invie:
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
lea S2, %edi
movl $1, (%edi, %eax, 4)
jmp cont_column
transpunere:
movl $1, i
for_line_transp:
movl i, %ecx
cmp %ecx, m2
je evolutii
movl $1, j
for_column_transp:
movl j, %ecx
cmp %ecx, n2
je cont_line_transp
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
lea S2, %edi
movl (%edi, %eax, 4), %ebx
lea S, %edi
movl %ebx, (%edi, %eax, 4)
incl j
jmp for_column_transp
cont_line_transp:
incl i
jmp for_line_transp
jmp evolutii
out:
movl $1, i
for_i:
movl i, %ecx
cmp %ecx, m2
je exit
movl $1, j
for_j:
movl j, %ecx
cmp %ecx, n2
je out_cont
movl i, %eax
xor %edx, %edx
mull n
addl j, %eax
lea S , %edi
movl (%edi, %eax, 4), %ebx
pushl %ebx
pushl $formatPrintf
call printf
popl %ebx
popl %ebx
pushl $0
call fflush
popl %edx
incl j
jmp for_j
out_cont:
movl $4, %eax
movl $1, %ebx
movl $slash, %ecx
movl $2, %edx
int $0x80
incl i
jmp for_i
exit:
mov $1, %eax
xor %ebx, %ebx
int $0x80Editor is loading...
Leave a Comment