include irvine32.inc .data 	chess 	dd 64 dup(0) 	a 		dd 8  dup(0) 	b		dd 15 dup(0) 	d		dd 15 dup(0) 	sum		dd 0 	str1	db "八皇后摆法总数:",0 	str2 	db "第",0 	str3 	db "种可能摆法:",0 	str4    db "		",0 	str5	db "按回车键继续...",0 .code main proc 	mov  edi, offset a     mov  ecx, 8     mov  eax, 1     rep  stosd     mov  edi, offset b     mov  ecx, 15     rep  stosd     mov  edi, offset d     mov  ecx, 15     rep  stosd     push 0     call PutQueen     mov  edx,offset str1     call writestring     mov  eax,sum     call writedec     call crlf     exit main endp
  PutQueen proc 	push ebp 	mov  ebp,esp 	pushad	 	mov  esi,[ebp+8]	;n 	mov  edi,0			;col again1: 	cmp  edi,8 	jge  final0	 	mov  eax,[a+4*edi] 	cmp  eax,0 	jz   final1	 	mov  ebx,esi 	add  ebx,edi 	mov  eax,[b+4*ebx] 	cmp  eax,0 	jz   final1	 	mov  ecx,esi     sub  ecx,edi     add  ecx,7     mov  eax,[d+4*ecx]     cmp  eax,0 	jz   final1	 	mov  eax,esi     imul eax,8     add  eax,edi 	mov  dword ptr [chess+4*eax],1 	mov  dword ptr [a+4*edi],0     mov  dword ptr [b+4*ebx],0     mov  dword ptr [d+4*ecx],0     cmp  esi,7     jnz  final2      inc  sum     mov  edx,offset str2     call writestring     mov  eax,sum     call writedec     mov  edx,offset str3     call writestring     call crlf       mov  ebx,0			;i again2:     cmp  ebx,8     jge  final3     mov  edx,offset str4     call writestring       mov  ecx,0			;j again3:     cmp  ecx,8     jge  final4     mov  eax,ebx     imul eax,8     add  eax,ecx     mov  eax,[chess+4*eax]     call writedec     mov  al,' '     call writechar     inc  ecx     jmp  again3   final4: 	call crlf 	inc  ebx 	jmp  again2	 final3: 	call crlf 	mov  edx,0 	mov  eax,sum 	mov  ebx,10 	div  ebx 	cmp  edx,0 	jnz  final5 	mov  edx,offset str5 	call writestring 	call readchar 	call crlf 	jmp  final5 final2: 	mov  edx,esi 	inc  edx 	push edx 	call PutQueen final5: 	mov  eax,esi     imul eax,8     add  eax,edi 	mov  dword ptr [chess+4*eax],0 	mov  dword ptr [a+4*edi],1 	mov  ebx,esi 	add  ebx,edi     mov  dword ptr [b+4*ebx],1     mov  ecx,esi     sub  ecx,edi     add  ecx,7     mov  dword ptr [d+4*ecx],1 final1: 	inc edi 	jmp again1 final0: 	popad 	leave 	ret 4 PutQueen endp end main
   |