mt9x9.o-o-omt9x9 mt9x9&& &&./mt9x9 ./mt9x9 GLOBAL GLOBAL _start _start SECTION SECTION .data .data i:i: DB DB 00 j:j: DB DB 00 k:k: DB DB 00 ten: ten: DB DB 10 10 item: item: DB DB '9x9=81', '9x9=81',99 nl: DB 10 nl: DB 10 SECTION SECTION.text .text _start: _start: MOV MOV BYTE[i], BYTE[i],11 loop_i: loop_i: MOV MOV BYTE[j], BYTE[j],11 loop_j: loop_j: MOV MOV BYTE[k], BYTE[k],00 loop_k: loop_k: MOV MOV AL, AL,[k] [k] ADD ADD AL, AL,[i][i] ADD ADD AL, AL,48 48 MOV MOV BYTE[item], BYTE[item],AL AL MOV MOV AL, AL,[j][j] ADD ADD AL, AL,48 48 MOV MOV BYTE[item+2], BYTE[item+2],AL AL MOV AL, [k] MOV AL, [k] ADD AL, [i] ADD AL, [i] MUL MUL BYTE[j] BYTE[j] CMP CMP AL, AL,[ten] [ten] JB JB if_then if_then DIV DIV BYTE[ten] BYTE[ten] ADD ADD AL, AL,48 48 MOV MOV BYTE[item+4], BYTE[item+4],AL AL ADD AH, 48 ADD AH, 48 MOV BYTE[item+5], AH MOV BYTE[item+5], AH JMP JMP if_end if_end if_then: if_then: ADD ADD AL, AL,48 48 MOV MOV BYTE[item+4], BYTE[item+4],' '' ' MOV BYTE[item+5], MOV BYTE[item+5],AL AL if_end: if_end: MOV MOV RAX, RAX,11 MOV MOV RDI, RDI,11 MOV MOV RSI, RSI,item item MOV MOV RDX, RDX,77 SYSCALL SYSCALL INC INC BYTE[k] BYTE[k] CMP CMP BYTE[k], BYTE[k],22 JBE loop_k JBE loop_k CALL CALL newline newline INC INC BYTE[j] BYTE[j] CMP CMP BYTE[j], BYTE[j],99 JBE JBE loop_j loop_j CALL CALL newline newline ADD ADD BYTE[i], BYTE[i],33 CMP BYTE[i], CMP BYTE[i],99 JBE JBE loop_i loop_i MOV MOV RAX, RAX,60 60 XOR XOR RDI, RDI,RDI RDI SYSCALL SYSCALL newline: newline: MOV MOV RAX, RAX,11 MOV MOV RDI, RDI,11 MOV MOV RSI, RSI,nlnl MOV MOV RDX, RDX,11 SYSCALL SYSCALL RET RET Assembly(AT&T) ##as asmt9x9.s mt9x9.s-o-omt9x9.o mt9x9.o&& && ##ldldmt9x9.o mt9x9.o-o-omt9x9 mt9x9&& &&./mt9x9 ./mt9x9 .global _start .global _start .data .data i:i: .byte .byte 00 j:j: .byte .byte 00 k:k: .byte .byte 00 ten: ten: .byte .byte 10 10 item: item: .ascii .ascii "9x9=81\t" "9x9=81\t" nl: .ascii "\n" nl: .ascii "\n" .text .text _start: _start: movb movb $1, $1,i i loop_i: loop_i: movb movb $1, $1,j j loop_j: loop_j: movb movb $0, $0,kk loop_k: loop_k: movb movb k,k,%al %al addb addb i,i,%al %al addb addb $48, $48,%al %al movb movb %al, %al,item item movb movb j,j,%al %al addb addb $48, $48,%al %al movb movb %al, %al,item+2 item+2 movb k, %al movb k, %al addb i, %al addb i, %al mulb mulb j j cmpb cmpb ten, ten,%al %al jbjb if_then if_then divb divb ten ten addb addb $48, $48,%al %al movb movb %al, %al,item+4 item+4 addb $48, %ah addb $48, %ah movb %ah, movb %ah,item+5 item+5 jmp jmp if_end if_end if_then: if_then: addb addb $48, $48,%al %al movb movb $32, $32,item+4 item+4 movb %al, item+5 movb %al, item+5 if_end: if_end: mov mov $1, $1,%rax %rax mov mov $1, $1,%rdi %rdi mov mov $item, $item,%rsi %rsi mov mov $7, $7,%rdx %rdx syscall syscall incb incb kk cmpb cmpb $2, $2,kk jbe jbe loop_k loop_k call call newline newline incb incb j j cmpb cmpb $9, $9,j j jbe jbe loop_j loop_j call call newline newline addb addb $3, $3,i i cmpb cmpb $9, $9,i i jbe jbe loop_i loop_i mov mov $60, $60,%rax %rax xor xor %rdi, %rdi,%rdi %rdi syscall syscall newline: newline: mov mov $1, $1,%rax %rax mov mov $1, $1,%rdi %rdi mov $nl, %rsi mov $nl, %rsi mov $1, %rdx mov $1, %rdx syscall syscall ret ret