标 题: 【原创】16位汇编写的五子棋
作 者: 再战江湖
时 间: 2016-07-30,09:30:31
链 接: http://bbs.pediy.com/showthread.php?t=211915
data segment
SG DB 'http://bbs.bccn.net/'SG3 DB 'Do you want to play again?(Yes/No)'
sg1 db 0dbh,0dbh
sg2 db 0dbh
row db 15
col db 40
circle DB 00H,00H,07H,0C0H,1FH,0F0H,3FH,0F8H,3FH,0F8H,7FH,0FCH,7FH,0FCH,7FH,0FCH
DB 7FH,0FCH,7FH,0FCH,3FH,0F8H,3FH,0F8H,1FH,0F8H,07H,0C0H,00H,00H,00H,00H
flag db 1
status db 1
victory db 0
num db 1
form db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
db 40 dup (0)
data ends
;
code segment
assume cs:code,ds:data,es:data
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov ax,data
mov es,ax
fflag:
mov num,1
mov row,15
mov col,40
mov status,1
mov victory,0
mov num,1
mov si,offset form
mov cx,488h
again:
mov byte ptr [si],0
inc si
loop again
MOV AH,00H
MOV AL,12H
INT 10H
MOV AH,0BH
MOV BH,01
MOV BL,00H
INT 10H
mov dh,0
mov dl,0
mov ah,2
mov bh,0
int 10h
mov cx,29
flag1:
push cx
mov cx,80
flag2:
push cx
mov ah,9
mov al,0dbh
mov bh,0h
mov bl,00111001B
mov cx,1
int 10h
inc dl
mov ah,2
mov bh,0
int 10h
pop cx
loop flag2
inc dh
mov dl,0
pop cx
loop flag1
mov bp,offset sg1
mov cx,1
mov dx,0f28h
mov bh,0h
mov al,0h
mov bl,00000000b
mov ah,13h
int 10h
mov bp,offset sg1
mov cx,1
mov dx,0f29h
mov bh,0h
mov al,0h
mov bl,00000000b
mov ah,13h
int 10h
MOV BP,OFFSET SG
MOV CX,20
MOV DX,1D3BH
MOV BH,0H
MOV AL,0H
MOV BL,00111010B
MOV AH,13H
INT 10H
keyboard:
MOV AH,0
INT 16H
PUSH AX
MOV AH,1
INT 16H
JZ keyboard2
POP AX
JMP keyboard
EXIT1:
JMP EXIT
keyboard2:
POP AX
CMP AL,1BH
jz exit1
CMP al,'a'
jz left
CMP al,'s'
jz down
CMP al,'d'
jz right
CMP al,'w'
jz up
cmp al,' '
jz blank
jmp keyboard
up:
call up1
jmp keyboard
down:
call down1
jmp keyboard
left:
call left1
jmp keyboard
right:
call right1
jmp keyboard
blank:
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz bno1
jmp keyboard
bno1:
cmp byte ptr [si],2
jnz bdrawcircle1
jmp keyboard
bdrawcircle1:
mov si,offset circle
cmp flag,1
jz bflag1
cmp flag,2
jz bflag2
bflag1:
call show2
call judgeperfect
cmp victory,1
jz flag3
mov flag,2
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
mov byte ptr [si],1
jmp keyboard
fflag1:
jmp fflag
bflag2:
call show2
call judgeperfect
cmp victory,1
jz flag3
mov flag,1
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
mov byte ptr [si],2
jmp keyboard
FLAG3:
MOV AH,0
INT 16H
CMP AL,1BH
JZ EXIT
JMP FLAG3
EXIT:
mov ax,0003h
int 10h
MOV BP,OFFSET SG3
MOV CX,34
MOV DX,0H
MOV BH,0H
MOV AL,0H
MOV BL,00001111B
MOV AH,13H
INT 10H
MOV AH,0
INT 16H
cmp al,'y'
jz fflag1
cmp al,'Y'
jz fflag1
MOV AX,4C00H
INT 21H
up1 proc near
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00111001b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz uno1
mov status,1
jmp ucircle1
uno1:
cmp byte ptr [si],2
jnz uflag1
mov status,2
ucircle1:
mov si,offset circle
call show
uflag1:
cmp row,0
jz up11
dec row
up11:
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00000000b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz uno12
mov status,1
jmp ucircle2
uno12:
cmp byte ptr [si],2
jnz uexit
mov status,2
ucircle2:
mov si,offset circle
call show1
uexit:
RET
up1 endp
down1 proc near
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00111001b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz dno1
mov status,1
jmp dcircle1
dno1:
cmp byte ptr[si],2
jnz dflag1
mov status,2
dcircle1:
mov si,offset circle
call show
dflag1:
cmp row,28
jz down11
inc row
down11:
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00000000b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz dno12
mov status,1
jmp dcircle2
dno12:
cmp byte ptr [si],2
jnz dexit
mov status,2
dcircle2:
mov si,offset circle
call show1
dexit:
ret
down1 endp
left1 proc near
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00111001b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz lno1
mov status,1
jmp lcircle1
lno1:
cmp byte ptr [si],2
jnz lflag1
mov status,2
lcircle1:
mov si,offset circle
call show
lflag1:
cmp col,0
jz left11
dec col
dec col
left11:
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00000000b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz lno12
mov status,1
jmp lcircle2
lno12:
cmp byte ptr [si],2
jnz lexit
mov status,2
lcircle2:
mov si,offset circle
call show1
lexit:
ret
left1 endp
right1 proc near
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00111001b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz rno1
mov status,1
jmp rcircle1
rno1:
cmp byte ptr [si],2
jnz rflag1
mov status,2
rcircle1:
mov si,offset circle
call show
rflag1:
cmp col ,78
jz right11
inc col
inc col
right11:
mov bp,offset sg1
mov cx,2
mov dh,row
mov dl,col
mov bh,0h
mov al,0h
mov bl,00000000b
mov ah,13h
int 10h
mov si,offset form
mov al,row
mov bl,40
mul bl
add si,ax
mov al,col
mov ah,0
mov bl,2
div bl
add si,ax
cmp byte ptr [si],1
jnz rno12
mov status,1
jmp rcircle2
rno12:
cmp byte ptr [si],2
jnz rexit
mov status,2
rcircle2:
mov si,offset circle
call show1
rexit:
ret
right1 endp
show proc near
push ax
push bx
push cx
push dx
push si
push bp
push ax
mov al,row
mov bl,16
mul bl
mov dx,ax
pop ax
mov bh,0 ;页
mov bp,16 ;外圈(行) ,垂直点数
sh0:
push bp
mov bp,16 ;内圈(列),水平点数
push ax
mov al,col
mov bl,8
mul bl
mov cx,ax
pop ax
mov ax,[si] ;取值
xchg al,ah ;交换
mov di,ax
mov ah,0ch
cmp status,1
jz person1
cmp status,2
jz person2
person1:
mov al,00001011b
jmp sh2
person2:
mov al,00001100b
sh2:
shl di,1 ;移出到 cf
jnc sh3 ;无点
int 10h ;有点印出
sh3:
inc cx ;下一点
dec bp ;完了一列?
jnz sh2 ;未
add si,2 ;下一行
pop bp ;
inc dx ;坐标移下一行
dec bp ;行回圈
jnz sh0
pop bp
pop si
pop dx
pop cx
pop bx
pop ax
ret
show endp
show1 proc near
push ax
push bx
push cx
push dx
push si
push bp
push ax
mov al,row
mov bl,16
mul bl
mov dx,ax
pop ax
mov bh,0 ;页
mov bp,16 ;外圈(行) ,垂直点数
sh01:
push bp
mov bp,16 ;内圈(列),水平点数
push ax
mov al,col
mov bl,8
mul bl
mov cx,ax
pop ax
mov ax,[si] ;取值
xchg al,ah ;交换
mov di,ax
mov ah,0ch
cmp status,1
jz person11
cmp status,2
jz person21
person11:
mov al,00001010b
jmp sh21
person21:
mov al,00001110b
sh21:
shl di,1 ;移出到 cf
jnc sh31 ;无点
int 10h ;有点印出
sh31:
inc cx ;下一点
dec bp ;完了一列?
jnz sh21 ;未
add si,2 ;下一行
pop bp ;
inc dx ;坐标移下一行
dec bp ;行回圈
jnz sh01
pop bp
pop si
pop dx
pop cx
pop bx
pop ax
ret
show1 endp
show2 proc near
push ax
push bx
push cx
push dx
push si
push bp
push ax
mov al,row
mov bl,16
mul bl
mov dx,ax
pop ax
mov bh,0 ;页
mov bp,16 ;外圈(行) ,垂直点数
sh02:
push bp
mov bp,16 ;内圈(列),水平点数
push ax
mov al,col
mov bl,8
mul bl
mov cx,ax
pop ax
mov ax,[si] ;取值
xchg al,ah ;交换
mov di,ax
mov ah,0ch
cmp flag,1
jz ssetcolor1
cmp flag,2
jz ssetcolor2
ssetcolor1:
mov al,00001010b
jmp sh22
ssetcolor2:
mov al,00001110b
sh22:
shl di,1 ;移出到 cf
jnc sh32 ;无点
int 10h ;有点印出
sh32:
inc cx ;下一点
dec bp ;完了一列?
jnz sh22 ;未
add si,2 ;下一行
pop bp ;
inc dx ;坐标移下一行
dec bp ;行回圈
jnz sh02
pop bp
pop si
pop dx
pop cx
pop bx
pop ax
ret
show2 endp
judgeperfect proc near
mov al,row
mov bl,col
mov cl,flag
inc al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz next1
mov num,1
jmp jup
next1:
inc num
inc al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz next2
mov num,1
jmp jup
next2:
inc num
inc al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz next3
mov num,1
jmp jup
next3:
inc num
inc al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz next4
mov num,1
jmp jup
next4:
inc num
cmp num,5
jz jvictory
jmp jexit
jvictory:
mov victory,1
mov num,1
jmp jexit
jup:
mov cl,flag
mov al,row
mov bl,col
dec al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz unext1
mov num,1
jmp jleft
unext1:
inc num
dec al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz unext2
mov num,1
jmp jleft
unext2:
inc num
dec al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz unext3
mov num,1
jmp jleft
unext3:
inc num
dec al
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz unext4
mov num,1
jmp jleft
unext4:
inc num
cmp num,5
jz ujvictory
jmp jexit
ujvictory:
mov victory,1
mov num,1
jmp jexit
jleft:
mov cl,flag
mov al,row
mov bl,col
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lnext1
mov num,1
jmp jright
lnext1:
inc num
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lnext2
mov num,1
jmp jright
lnext2:
inc num
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lnext3
mov num,1
jmp jright
lnext3:
inc num
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lnext4
mov num,1
jmp jright
lnext4:
inc num
cmp num,5
jz ljvictory
jmp jexit
ljvictory:
mov victory,1
mov num,1
jmp jexit
jright:
mov al,row
mov bl,col
mov cl,flag
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rnext1
mov num,1
jmp jleftoblique1
rnext1:
inc num
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rnext2
mov num,1
jmp jleftoblique1
rnext2:
inc num
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rnext3
mov num,1
jmp jleftoblique1
rnext3:
inc num
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rnext4
mov num,1
jmp jleftoblique1
rnext4:
inc num
cmp num,5
jz rvictory
jmp jexit
rvictory:
mov victory,1
mov num,1
jmp exit
jleftoblique1:
mov al,row
mov bl,col
mov cl,flag
dec al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lbnext1
mov num,1
jmp jleftoblique2
lbnext1:
inc num
dec al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lbnext2
mov num,1
jmp jleftoblique2
lbnext2:
inc num
dec al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lbnext3
mov num,1
jmp jleftoblique2
lbnext3:
inc num
dec al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lbnext4
mov num,1
jmp jleftoblique2
lbnext4:
inc num
cmp num,5
jz lbvictory
jmp jexit
lbvictory:
mov victory,1
mov num,1
jleftoblique2:
mov al,row
mov bl,col
mov cl,flag
inc al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lb1next1
mov num,1
jmp jrightoblique1
lb1next1:
inc num
inc al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lb1next2
mov num,1
jmp jrightoblique1
lb1next2:
inc num
inc al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lb1next3
mov num,1
jmp jrightoblique1
lb1next3:
inc num
inc al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz lb1next4
mov num,1
jmp jrightoblique1
lb1next4:
inc num
cmp num,5
jz lb1victory
jmp jexit
lb1victory:
mov victory,1
mov num,1
jmp jexit
jrightoblique1:
mov al,row
mov bl,col
mov cl,flag
inc al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rb1next1
mov num,1
jmp jrightoblique2
rb1next1:
inc num
inc al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rb1next2
mov num,1
jmp jrightoblique2
rb1next2:
inc num
inc al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rb1next3
mov num,1
jmp jrightoblique2
rb1next3:
inc num
inc al
dec bl
dec bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz rb1next4
mov num,1
jmp jrightoblique2
rb1next4:
inc num
cmp num,5
jz rb1victory
jmp jexit
rb1victory:
mov victory,1
mov num,1
jmp jexit
jrightoblique2:
mov al,row
mov bl,col
mov cl,flag
dec al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz jr2next1
mov num,1
jmp jexit
jr2next1:
inc num
dec al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz jr2next2
mov num,1
jmp jexit
jr2next2:
inc num
dec al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz jr2next3
mov num,1
jmp jexit
jr2next3:
inc num
dec al
inc bl
inc bl
mov si,offset form
push ax
push bx
mov bl,40
mul bl
add si,ax
pop bx
pop ax
push ax
mov al,bl
mov ah,0
push bx
mov bl,2
div bl
add si,ax
pop bx
pop ax
cmp byte ptr [si],cl
jz jr2next4
mov num,1
jmp jexit
jr2next4:
inc num
cmp num,5
jz jr2victory
jmp jexit
jr2victory:
mov victory,1
mov num,1
jmp jexit
jexit:
mov num,1
ret
judgeperfect endp
code ends
end start
*转载请注明来自看雪论坛@PEdiy.com
编译运行效果图:
W、S、A、D键上下左右移动,按空格键确认