当前位置: 代码迷 >> 汇编语言 >> 汇编关于ret如何没有返回到正确的地方?
  详细解决方案

汇编关于ret如何没有返回到正确的地方?

热度:1169   发布时间:2013-02-26 00:00:00.0
汇编关于ret怎么没有返回到正确的地方??
  这个程序整体是关于输入人名,输入电话号码,存进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
  相关解决方案