注册 登录
编程论坛 汇编论坛

[求助]程序调试时出现错误

珊蝴虫 发布于 2007-06-28 00:50, 887 次点击

提示错误发生在跳转的时候:cmp ch,2
jz b1
看了又看也不懂错在哪里,请高人指点。
以下是程序:
data segment
a db ?,?,'$'
b db ?,?,'$'
c db 32 dup(?),'$'
r db 'please input dx(00-99):$'
p db 'please input ax(00-99):$'
q db 'please input the count(1-8):$'
data ends
code segment
assume ds:data,cs:code ;10

start:
mov ax,data
mov ds,ax
lea dx,r
mov ah,9
int 21h
mov ah,7
int 21h
mov a,al
mov ah,2
mov dl,a
int 21h
mov ah,7
int 21h
mov a+1,al
mov ah,2
mov dl,a+1
int 21h

CRLF macro
mov ah,2 ;30
mov dl,0dh
int 21h
mov dl,0ah
int 21h
endm
CRLF
lea dx,p
mov ah,9
int 21h
mov ah,7
int 21h
mov b,al
mov ah,2
mov dl,al
int 21h
mov ah,7
int 21h
mov b+1,al
mov ah,2
mov dl,al
int 21h
CRLF ;50
mov si,0
mov cl,4
mov ch,0
mov bl,a
mov dh,a
jmp a3
b1: inc si
mov bl,a+1
mov dh,a+1
jmp a3
a6: inc si
mov bl,b
mov dh,b
jmp a3
a8: inc si
mov bl,b+1
mov dh,b+1
jmp a3 ;69
a10: mov cl,32
lea bx,c
mov si,0
a11: mov dl,[bx][si]

mov ah,2
int 21h
inc si
loop a11

jmp js1


a3: sub bl,30h
shr bl,cl
jmp a5
a1: inc si
mov bl,dh
and bl,0fh
a5: inc ch

mov al,bl
mov ah,0
mov bl,8
div bl
lea bx,c
add al,30h
mov [bx][si],al
mov al,ah
mov ah,0
inc si
mov bl,4
div bl
lea bx,c
add al,30h
mov [bx][si],al
mov al,ah
mov ah,0
inc si
mov bl,2
div bl
lea bx,c
add al,30h
mov [bx][si],al
mov al,ah
inc si
lea bx,c
add al,30h
mov [bx][si],al

cmp ch,1
jz a1
cmp ch,2
jz b1
cmp ch,3
jz a1
cmp dl,4
jz a6
cmp dl,5
jz a1
cmp dl,6
jz a8
cmp dl,7
jz a1
cmp dl,8
jz a10
js1: mov ah,4ch
int 21h
code ends
end start
错误信息:126:Jump out of range by 16 bytes(s)
这个错误是什么意思,怎么改。


8 回复
#2
菜鸟上路2007-06-28 10:13
我这没报错呀
你可以改成JMP FAR ...试试
#3
冰_山2007-06-28 11:05
不行啊!2楼用的什么编译器?
#4
菜鸟上路2007-06-28 11:35
MASM32
#5
herbert_19872007-06-28 16:10
以下是引用菜鸟上路在2007-6-28 11:35:07的发言:
MASM32

masm32 不是不支持中断的吗?

#6
菜鸟上路2007-06-28 16:52

支持呀。。。

#7
zhulei19782007-06-29 14:37
我这里也出现同样地错误,请高手指点
#8
爱以走远2007-06-29 17:33
就是转移指令转不到那里来
太长拉
你可以在中间还加几个转移指令 这样就行拉
#9
hero20072007-06-30 18:07
在Masm For Windows 集成实验环境里,只需把c该成别的字母,没错误提示。
1