主题:[原创]刚学完汇编,写的一个程序,呵呵!(下)
procpos proc near
push ax
push bx
push cx
push dx
mov cx,4
lea bx,circle0
mov al,contrl
circle:
shr al,1
jc deasil
mov ah,[bx+6]
cmp ah,0
je direc0
cmp ah,1
je direc1
cmp ah,2
je direc2
jmp direc3
direc0:
mov dl,[bx+5]
cmp dl,[bx+1]
ja dirc0sav
mov dh,[bx+4]
inc dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],31
jmp retrn
dirc0sav:
dec dl
mov [bx+5],dl
jmp retrn
direc1:
mov dl,[bx+4]
cmp dl,[bx+2]
jb dirc1sav
mov dh,[bx+5]
inc dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],16
jmp retrn
dirc1sav:
inc dl
mov [bx+4],dl
jmp retrn
direc2:
mov dl,[bx+5]
cmp dl,[bx+3]
jb dirc2sav
mov dh,[bx+4]
dec dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],30
jmp retrn
dirc2sav:
inc dl
mov [bx+5],dl
jmp retrn
direc3:
mov dl,[bx+4]
cmp dl,[bx+0]
ja dirc3sav
mov dh,[bx+5]
dec dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],17
jmp retrn
dirc3sav:
dec dl
mov [bx+4],dl
jmp retrn
deasil:
mov ah,[bx+6]
cmp ah,0
je dirc0
cmp ah,1
je dirc1
cmp ah,2
je dirc2
jmp dirc3
dirc0:
mov dl,[bx+5]
cmp dl,[bx+3]
jb drc0sav
mov dh,[bx+4]
inc dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],31
jmp retrn
drc0sav:
inc dl
mov [bx+5],dl
jmp retrn
dirc1:
mov dl,[bx+4]
cmp dl,[bx+2]
jb drc1sav
mov dh,[bx+5]
dec dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],17
jmp retrn
drc1sav:
inc dl
mov [bx+4],dl
jmp retrn
dirc2:
mov dl,[bx+5]
cmp dl,[bx+1]
ja drc2sav
mov dh,[bx+4]
dec dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],30
jmp retrn
drc2sav:
dec dl
mov [bx+5],dl
jmp retrn
dirc3:
mov dl,[bx+4]
cmp dl,[bx+0]
ja drc3sav
mov dh,[bx+5]
inc dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],16
jmp retrn
drc3sav:
dec dl
mov [bx+4],dl
retrn:
add bx,cirlen
dec cx
jnz circle
pop dx
pop cx
pop bx
pop ax
ret
procpos endp
;-------------------------------------------------------
end start
push ax
push bx
push cx
push dx
mov cx,4
lea bx,circle0
mov al,contrl
circle:
shr al,1
jc deasil
mov ah,[bx+6]
cmp ah,0
je direc0
cmp ah,1
je direc1
cmp ah,2
je direc2
jmp direc3
direc0:
mov dl,[bx+5]
cmp dl,[bx+1]
ja dirc0sav
mov dh,[bx+4]
inc dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],31
jmp retrn
dirc0sav:
dec dl
mov [bx+5],dl
jmp retrn
direc1:
mov dl,[bx+4]
cmp dl,[bx+2]
jb dirc1sav
mov dh,[bx+5]
inc dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],16
jmp retrn
dirc1sav:
inc dl
mov [bx+4],dl
jmp retrn
direc2:
mov dl,[bx+5]
cmp dl,[bx+3]
jb dirc2sav
mov dh,[bx+4]
dec dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],30
jmp retrn
dirc2sav:
inc dl
mov [bx+5],dl
jmp retrn
direc3:
mov dl,[bx+4]
cmp dl,[bx+0]
ja dirc3sav
mov dh,[bx+5]
dec dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],17
jmp retrn
dirc3sav:
dec dl
mov [bx+4],dl
jmp retrn
deasil:
mov ah,[bx+6]
cmp ah,0
je dirc0
cmp ah,1
je dirc1
cmp ah,2
je dirc2
jmp dirc3
dirc0:
mov dl,[bx+5]
cmp dl,[bx+3]
jb drc0sav
mov dh,[bx+4]
inc dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],31
jmp retrn
drc0sav:
inc dl
mov [bx+5],dl
jmp retrn
dirc1:
mov dl,[bx+4]
cmp dl,[bx+2]
jb drc1sav
mov dh,[bx+5]
dec dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],17
jmp retrn
drc1sav:
inc dl
mov [bx+4],dl
jmp retrn
dirc2:
mov dl,[bx+5]
cmp dl,[bx+1]
ja drc2sav
mov dh,[bx+4]
dec dh
mov [bx+4],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],30
jmp retrn
drc2sav:
dec dl
mov [bx+5],dl
jmp retrn
dirc3:
mov dl,[bx+4]
cmp dl,[bx+0]
ja drc3sav
mov dh,[bx+5]
inc dh
mov [bx+5],dh
mov dh,[bx+6]
inc dh
mov [bx+6],dh
and [bx+6],00000011B
mov [bx+7],16
jmp retrn
drc3sav:
dec dl
mov [bx+4],dl
retrn:
add bx,cirlen
dec cx
jnz circle
pop dx
pop cx
pop bx
pop ax
ret
procpos endp
;-------------------------------------------------------
end start