.data
s: .asciz "%d x %02d = %02d\t%d x %02d = %02d\t%d x %02d = %02d\n"
sr: .asciz "\n"
.text
.global main
main:
 movl $0, %ebx
for_ebx:
 cmpl $10, %ebx
 jg endfor_ebx # %ebx > $10
 movl $0, %ecx
for_ecx:
 cmpl $10, %ecx
 jg endfor_ecx # %ecx > $10
 addl $2, %ebx
 movl %ecx, %eax
 imull %ebx, %eax
 pushl %eax
 pushl %ecx
 pushl %eax
 pushl %ecx
 pushl %ebx
 decl %ebx
 movl %ecx, %eax
 imull %ebx, %eax
 pushl %eax
 pushl %ecx
 pushl %ebx
 decl %ebx
 movl %ecx, %eax
 imull %ebx, %eax
 pushl %eax
 pushl %ecx
 pushl %ebx
 pushl $s
 call printf
 addl $40, %esp
 popl %ecx
 popl %eax
 incl %ecx
 jmp for_ecx
endfor_ecx:
 pushl $sr
 call printf
 addl $4, %esp
 addl $3, %ebx
 jmp for_ebx
endfor_ebx:
 movl $0, %ebx
 movl $1, %eax
 int $0x80

##include<stdio.h>
#main() {
#    int i, j;
#    for(i=1;i<=9;i=i+3) {
#        for(j=1;j<=10;j++) {
#            printf("%d x %02d = %02d\t%d x %02d = %02d\t%d x %02d = %02d\n",
#             i, j, i*j, i+1, j, (i+1)*j, i+2, j, (i+2)*j);
#        }
#        printf("\n");
#    }
#}

