+ -
当前位置:首页 → 问答吧 → 【虎彡】高手来!棘手的问题 !3个子程序找错******************

【虎彡】高手来!棘手的问题 !3个子程序找错******************

时间:2011-01-22

来源:互联网

DATA SEGMENT 
SHUZ DB '123456789' 
  DB 'ABCDEFGHIGKLMNOPQRSTUVWXYZ' 

SJS DB 0,0 ;保存2个随机数  

ZZL DW 0

YZL DW 0  

ZLPC DB 0 
DATA ENDS  
 

首先 取1个随机数 放在SJS中 随机数只能是SHUZ缓冲区的其中一个~并从0行逐渐下降
然后按1则CALL S_ZZL 按2则CALL S_YZL  
;----------------------------------
S_ZZL PROC NEAR ;随机数是否大于9?(大于9则是字母)是则把AL置8
  PUSH AX ;否则-30H 变换成数字,并存放到ZZL缓冲区
  MOV AL,SJS
  MOV AH,0
  CMP AX,39H  
  JA B_9
  JMP J_S
  B_9:MOV AX,8h
  JMP S_ZJ
  J_S:SUB AX,30H
   
  
S_ZJ: ADD ZZL,AX  
  POP AX
  RET
S_ZZL ENDP  
;-----------------------
S_YZL PROC NEAR  
  PUSH AX
  MOV AL,SJS
  MOV AH,0
  CMP AX,39H  
  JA B_92  
  JMP J_S2  
 B_92:MOV AX,8h
  JMP S_ZJ2
 J_S2:SUB AX,30H
  
S_ZJ2: ADD YZL,AX  
  POP AX
  RET
S_YZL ENDP  
;-----------------------------
再然后比较ZZL YZL两个缓冲区数值大小,并算出偏差值 比如ZZL是8 YZL是2 则8-2=6 并送入ZLL和ZLPC 2个缓冲区
B_PC proc near
  PUSH AX
  push bx  
  mov ax,zzl
  mov bx,yzl
  cmp ax,bx
  jb H_WZ
  sub ax,bx
  mov zzl,ax
  mov zlpc,al
  mov yzl,0
H_wz: sub bx,ax
  mov yzl,bx
  mov zlpc,bl
  mov zzl,0
  pop bx
  pop ax
  RET 
B_PC ENDP
;----------------------------
问题1:子程序返回后 把ZLPC的数值显示,我直接+30H显示,但是显示出的居然超过9,是各种符号!
问题2:如果两数偏差值大于9 则结束
  cmp zzl,9
  ja over
  cmp yzl,9
  ja over
  但是结果是没超过9也结束 超过9却不结束! 这些片段中某一环节出错!困扰我两天了
  如果谁能帮我找出错误 追加100分!谢谢

作者: znxllyuan   发布时间: 2011-01-22

再求!!!!

作者: znxllyuan   发布时间: 2011-01-23