倒数第六行( get_char lx,ly,rx,ry,dwx,dwy )调用宏的时候出现错误,显示jump out of byte....这是什么原因呢
scroll macro ulrow,ulcol,lrrow,lrcol,att,function
MOV bh,0
MOV ah,6
MOV al,function
MOV ch,ulrow
MOV cl,ulcol
MOV dh,lrrow
MOV dl,lrcol
MOV bh,att
int 10h
endm
pos_curse macro x,y
MOV bh,0
MOV ah,2
MOV dh,x
MOV dl,y
int 10h
endm
display macro
MOV ah,0eH
int 10H
endm
get_char macro a,b,c,d,e,f
local zuo,you,gol,complete
again: MOV ah,0
int 16h
cmp ah,01H
je exit
cmp ah,4BH
je zuo
cmp ah,4DH
je you
MOV ah,3
int 10H
cmp dl,40
jl gol
pos_curse c,d
display
INC d
pos_curse e,f
display
INC f
pos_curse c,d
jmp complete
gol: pos_curse a,b
display
INC b
pos_curse e,f
display
INC f
pos_curse a,b
jmp complete
zuo: pos_curse a,b
jmp complete
you: pos_curse c,d
complete:
endm
judge macro a,b,c,d,e,f
local cl,cld
MOV ah,3
int 10H
push dx
cmp f,66
jne cl
MOV f,15
scroll 18,15,22,65,1fh,1
pop dx
MOV ah,2
int 10H
cl: cmp b,31
jne cld
MOV b,10
scroll 5,10,15,30,1fh,1
pos_curse a,b
jmp again
cld: cmp d,71
jne again
MOV d,50
scroll 5,50,15,70,1fh,1
pos_curse c,d
jmp again
endm
DATAS SEGMENT
lx db 15
ly db 10
rx db 15
ry db 50
dwx db 22
dwy db 15
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
scroll 0,0,24,79,70h,0
scroll 5,10,15,30,1fh,0
scroll 5,50,15,70,1fh,0
scroll 18,15,22,65,1fh,0
judge lx,ly,rx,ry,dwx,dwy
pos_curse rx,ry
get_char lx,ly,rx,ry,dwx,dwy
exit:
MOV ah,4CH
INT 21H
CODES ENDS
END START
scroll macro ulrow,ulcol,lrrow,lrcol,att,function
MOV bh,0
MOV ah,6
MOV al,function
MOV ch,ulrow
MOV cl,ulcol
MOV dh,lrrow
MOV dl,lrcol
MOV bh,att
int 10h
endm
pos_curse macro x,y
MOV bh,0
MOV ah,2
MOV dh,x
MOV dl,y
int 10h
endm
display macro
MOV ah,0eH
int 10H
endm
get_char macro a,b,c,d,e,f
local zuo,you,gol,complete
again: MOV ah,0
int 16h
cmp ah,01H
je exit
cmp ah,4BH
je zuo
cmp ah,4DH
je you
MOV ah,3
int 10H
cmp dl,40
jl gol
pos_curse c,d
display
INC d
pos_curse e,f
display
INC f
pos_curse c,d
jmp complete
gol: pos_curse a,b
display
INC b
pos_curse e,f
display
INC f
pos_curse a,b
jmp complete
zuo: pos_curse a,b
jmp complete
you: pos_curse c,d
complete:
endm
judge macro a,b,c,d,e,f
local cl,cld
MOV ah,3
int 10H
push dx
cmp f,66
jne cl
MOV f,15
scroll 18,15,22,65,1fh,1
pop dx
MOV ah,2
int 10H
cl: cmp b,31
jne cld
MOV b,10
scroll 5,10,15,30,1fh,1
pos_curse a,b
jmp again
cld: cmp d,71
jne again
MOV d,50
scroll 5,50,15,70,1fh,1
pos_curse c,d
jmp again
endm
DATAS SEGMENT
lx db 15
ly db 10
rx db 15
ry db 50
dwx db 22
dwy db 15
DATAS ENDS
STACKS SEGMENT
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
scroll 0,0,24,79,70h,0
scroll 5,10,15,30,1fh,0
scroll 5,50,15,70,1fh,0
scroll 18,15,22,65,1fh,0
judge lx,ly,rx,ry,dwx,dwy
pos_curse rx,ry
get_char lx,ly,rx,ry,dwx,dwy
exit:
MOV ah,4CH
INT 21H
CODES ENDS
END START