这个程序整体是关于输入人名,输入电话号码,存进tel_tab中,制成一个电话本。再做查找,输出想要查找的人名的号码。
整个程序debug了貌似没什么问题,只是主要有个问题就是在search那个子程序里,那个子程序最后的ret返回的位置不对,用debug时发现的,不知道它为什么会乱跳,是因为堆栈的问题吗,不大明白哪出问题了,后来我就把那个search子程序删掉,并把里面的内容整个复制,贴到主程序里了,这样没了ret就运行正常了。
但是!!我还是想知道为什么???!!哪里的问题!!!!
高手帮忙解答一下呗!!
data segment
; namepar label byte
maxnlen db 21
namelen db ?
namefld db 21 dup(?)
numberpar label byte
maxmlen db 9
numlen db ?
numfld db 9 dup(?)
judge label byte
maxjlen db 2
judgelen db ?
judgefld db 2 dup(?)
crlf db 13,10, '$ '
tel_tab db 50 dup(28 dup(?))
table db 28 dup(?),13,10, '$ '
messg1 db 'name tel. ',13,10, '$ '
messg2 db 'Input name: ', '$ '
messg3 db 'Input a telephone number: ', '$ '
messg4 db 'Do you want a telephone number? ',13,10, '$ '
messg5 db 'name? ',13,10, '$ '
messg6 db 'No match! ', '$ '
endaddr dw ?
have_xchd db 0
printit db 0
data ends
;--------------------------------------
code segment
main proc far
assume cs:code,ds:data
mov ax,data