请教这个步进电机程序错误之处!

现在步进电机可以正转但是不能反转怀疑在进入反转查表部分是的数据入口不对,没查出来请高手指教哪里出错,按理反转的入口是99H啊,就是转不起来。谢谢各位赐教,本程序大家稍微修改便可移植到其他步进电机去!


  
;******************************************************************************************************    
   ;用ST51单片机控制298芯片驱动双步进电机转动,实现正反转功能。
   ; bg5sbj         2011.11.25      
   ;*******************************************************************************************************
      ORG 0000h
      ajmp  main
      org    0030h
main:
      cpl  p2.3            ;p0口指示灯总线使能,利于观察p0口状态
stop:
      orl p0,#0ffh       ;两个步进电机停止工作
loop:
      jnb p3.4,for2     ;如果s2按下正转
      jnb p3.5,rev2     ;如果s1按下反转
      jnb p3.6,stop1   ;如果s3按下停止
      jmp loop            ;反复监测键盘
;====================================================
for: 
       mov r0,#00h     ;正转到tab取码指针初值
for1:
       mov a,r0          ;取码
       mov dptr,#table   ;
      movc a,@a+dptr
      jz for                   ;是否到了结束码00h
      cpl a                   ;把a反向
      mov p0,a           ;输出到p0开始正转
      jnb p3.6,stop1   ;如果s3按下停止
      jnb p3.5,rev2     ;如果s1按下反转
      call delay           ;转速调整
      inc r0                 ;取下一个码
      jmp for1             ;继续正转
  rev:
       mov r0,#99h     ;反转到tab取码指针初值
rev1:
       mov a,r0
      mov dptr,#table  ;取码
      movc a,@a+dptr
      jz rev                   ;是否到了结束码00h
      cpl a                    ;把acc反向
      mov p0,a            ;输出到p1开始反转
      jnb p3.6,stop1    ;如果s3按下停止
      jnb p3.4,for         ;如果s2按下正转
      call delay            ;转动的速度
      inc r0                  ;取下一个码
      jmp rev1             ;继续反转
;```````````````````````````````````````````````````````````````````
stop1:
      mov   r1,#140
       call   d1             ;按s3的消除抖动
      jnb    p3.6,$           ;s3放开否?
      call    d1            ;放开消除抖动调用延时
      jmp    stop
for2:
      mov  r1,#140
     call d1                 ;按s2的消除抖动
      jnb p3.4,$            ;s2放开否?
      call d1                 ;放开消除抖动
      jmp for
rev2:
     mov  r1,#140
      call d1                 ;按s1的消除抖动
      jnb p3.5,$           ;s1放开否?
      call d1                ;放开消除抖动
      jmp rev
;`````````````````````````````````````````````````````````````````
delay:
      mov r1,#70        ;步进电机的转速20 ms 12M 晶体
   d1:
       mov r2,#40        ;;0.500ms X 40 = 20 ms
      djnz r2,$
      djnz r1,d1
      ret
;***************************************************************
table:
       db 88h,0cch,44h,66h,22h,33h,11h,99h  ;正转表
      db 00h    ;正转结束
      db 88h,99h,11h,33h,22h,66h,44h,0cch  ;反转
      db 00h    ;反转结束
      end