Untitled
unknown
plain_text
a year ago
3.4 kB
8
Indexable
s: .space 1600 sCopy: .space 1600 formatScanf: .asciz "%ld" formatPrintf: .asciz "%ld " newLine: .asciz "\n" rows: .space 4 rows2: .space 4 cols: .space 4 cols2: .space 4 pairs: .space 4 leftVal: .space 4 rightVal: .space 4 currentIndex: .space 4 currentRow: .space 4 currentCol: .space 4 iterations: .space 4 leftBound: .space 4 rightBound: .space 4 neighbours: .space 4 matrixDim: .space 4 .text .global main main: pushl $rows pushl $formatScanf call scanf popl %ebx popl %ebx pushl $cols pushl $formatScanf call scanf popl %ebx popl %ebx pushl $pairs pushl $formatScanf call scanf popl %ebx popl %ebx lea s, %edi lea sCopy, %esi movl rows, %eax movl %eax, rows2 movl cols, %eax movl %eax, cols2 addl $2, rows2 addl $2, cols2 xorl %edx, %edx movl rows2, %eax mull cols2 movl %eax, matrixDim xorl %ecx, %ecx initMatrixLoop: cmp %ecx, matrixDim je endInitMatrixLoop movl $0, (%edi, %ecx, 4) incl %ecx jmp initMatrixLoop endInitMatrixLoop: movl $0, currentIndex readPairsLoop: movl currentIndex, %ecx cmp pairs, %ecx je endReadPairsLoop pushl $leftVal pushl $formatScanf call scanf popl %ebx popl %ebx pushl $rightVal pushl $formatScanf call scanf popl %ebx popl %ebx movl leftVal, %eax incl %eax xor %edx, %edx mull cols2 addl rightVal, %eax incl %eax movl $1, (%edi, %eax, 4) incl currentIndex jmp readPairsLoop endReadPairsLoop: pushl $iterations pushl $formatScanf call scanf popl %ebx popl %ebx endReadK: movl $0, currentIndex iterateKLoop: movl currentIndex, %ecx cmp iterations, %ecx je endIterationsLoop xorl %ecx, %ecx resetCopyMatrix: cmp %ecx, matrixDim je endResetCopyMatrix movl $0, (%esi, %ecx, 4) incl %ecx jmp resetCopyMatrix endResetCopyMatrix: movl $1, currentRow forRow: movl currentRow, %ecx cmp rows, %ecx jg endForRow movl $1, currentCol forCol: movl currentCol, %ecx cmp cols, %ecx jg endForCol movl currentRow, %eax xor %edx, %edx mull cols2 addl currentCol, %eax pushl (%edi, %eax, 4) pushl $formatPrintf call printf popl %ebx popl %ebx pushl $0 call fflush popl %ebx incl currentCol jmp forCol endForCol: movl $4, %eax movl $1, %ebx movl $newLine, %ecx movl $2, %edx int $0x80 incl currentRow jmp forRow endForRow: xorl %ecx, %ecx copyBackLoop: cmp %ecx, matrixDim je endCopyBackLoop movl (%esi, %ecx, 4), %eax movl %eax, (%edi, %ecx, 4) incl %ecx jmp copyBackLoop endCopyBackLoop: incl currentIndex jmp iterateKLoop endIterationsLoop: end: movl $1, %eax xor %ebx, %ebx int $0x80
Editor is loading...
Leave a Comment