| .486 |
| .model flat |
| extrn __fltused:near |
| extrn __ftol:near |
| public _main |
| _TEXT segment |
| _main: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,4 |
| mov dword ptr (-4)[ebp],0 |
| L2: |
| mov edi,dword ptr (-4)[ebp] |
| lea edi,[edi*4] |
| mov dword ptr (_down)[edi],1 |
| mov dword ptr (_up)[edi],1 |
| L3: |
| inc dword ptr (-4)[ebp] |
| cmp dword ptr (-4)[ebp],15 |
| jl L2 |
| mov dword ptr (-4)[ebp],0 |
| L6: |
| mov edi,dword ptr (-4)[ebp] |
| mov dword ptr (_rows)[edi*4],1 |
| L7: |
| inc dword ptr (-4)[ebp] |
| cmp dword ptr (-4)[ebp],8 |
| jl L6 |
| push 0 |
| call _queens |
| add esp,4 |
| mov eax,0 |
| L1: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _queens |
| _queens: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,4 |
| mov dword ptr (-4)[ebp],0 |
| L11: |
| mov edi,dword ptr (-4)[ebp] |
| cmp dword ptr (_rows)[edi*4],0 |
| je L15 |
| mov esi,dword ptr (20)[ebp] |
| mov ebx,edi |
| sub ebx,esi |
| cmp dword ptr (_up+28)[ebx*4],0 |
| je L15 |
| lea edi,[esi][edi] |
| cmp dword ptr (_down)[edi*4],0 |
| je L15 |
| mov edi,dword ptr (-4)[ebp] |
| mov esi,dword ptr (20)[ebp] |
| lea ebx,[esi][edi] |
| mov dword ptr (_down)[ebx*4],0 |
| mov ebx,edi |
| sub ebx,esi |
| mov dword ptr (_up+28)[ebx*4],0 |
| mov dword ptr (_rows)[edi*4],0 |
| mov edi,dword ptr (20)[ebp] |
| mov esi,dword ptr (-4)[ebp] |
| mov dword ptr (_x)[edi*4],esi |
| cmp dword ptr (20)[ebp],7 |
| jne L19 |
| call _print |
| add esp,0 |
| jmp L20 |
| L19: |
| mov edi,dword ptr (20)[ebp] |
| lea edi,(1)[edi] |
| push edi |
| call _queens |
| add esp,4 |
| L20: |
| mov edi,dword ptr (-4)[ebp] |
| mov esi,dword ptr (20)[ebp] |
| lea ebx,[esi][edi] |
| mov dword ptr (_down)[ebx*4],1 |
| mov ebx,edi |
| sub ebx,esi |
| mov dword ptr (_up+28)[ebx*4],1 |
| mov dword ptr (_rows)[edi*4],1 |
| L15: |
| L12: |
| inc dword ptr (-4)[ebp] |
| cmp dword ptr (-4)[ebp],8 |
| jl L11 |
| mov eax,0 |
| L10: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| public _print |
| _print: |
| push ebx |
| push esi |
| push edi |
| push ebp |
| mov ebp,esp |
| sub esp,4 |
| mov dword ptr (-4)[ebp],0 |
| L23: |
| mov edi,dword ptr (-4)[ebp] |
| mov edi,dword ptr (_x)[edi*4] |
| lea edi,(49)[edi] |
| push edi |
| lea edi,(L27) |
| push edi |
| call _printf |
| add esp,8 |
| L24: |
| inc dword ptr (-4)[ebp] |
| cmp dword ptr (-4)[ebp],8 |
| jl L23 |
| lea edi,(L28) |
| push edi |
| call _printf |
| add esp,4 |
| mov eax,0 |
| L22: |
| mov esp,ebp |
| pop ebp |
| pop edi |
| pop esi |
| pop ebx |
| ret |
| _TEXT ends |
| extrn _printf:near |
| _TEXT segment |
| _TEXT ends |
| _DATA segment |
| public _x |
| align 4 |
| _x label byte |
| db 32 dup (0) |
| public _rows |
| align 4 |
| _rows label byte |
| db 32 dup (0) |
| public _down |
| align 4 |
| _down label byte |
| db 60 dup (0) |
| public _up |
| align 4 |
| _up label byte |
| db 60 dup (0) |
| _DATA ends |
| _TEXT segment |
| align 1 |
| L28 label byte |
| db 10 |
| db 0 |
| align 1 |
| L27 label byte |
| db 37 |
| db 99 |
| db 32 |
| db 0 |
| _TEXT ends |
| end |