当前位置: 代码迷 >> 汇编语言 >> 自己写的代码,可是Debug调试到此中一句代码后不会往下执行
  详细解决方案

自己写的代码,可是Debug调试到此中一句代码后不会往下执行

热度:200   发布时间:2016-05-02 04:41:28.0
自己写的代码,可是Debug调试到其中一句代码后不会往下执行
DATAS SEGMENT
    ;此处输入数据段代码  
    SIGN DW 0 
    X1 DW ?
    X2 DW ?
    Y DW ?        
    RESULT DW ?  ;结果
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
;输入函数
MOV CX,20
INPUT_DIGIT: MOV AH,1
INT 21H
CMP AL,0DH  ;判断是否回车
JE NEXT1
CMP AL,'0'  
JB INPUT_DIGIT   ;小于0重新输入
CMP AL,'9'
JA A_F
JMP SAVE_DIGIT1
LOOP INPUT_DIGIT

A_F: CMP AL,'A'
JB INPUT_DIGIT
CMP AL,'F'
JA INPUT_DIGIT

SAVE_DIGIT1: POP BX ;BX出栈
CMP AL,'9'
JA SAVE_DIGIT2
SUB AL,30H  ;0-9时保存
OR BX,AX
MOV X1[DI],BX
MOV CL,4
SHL BX,CL  ;使BX左移4位  是为了OR BX,AX
PUSH BX
;在A-F时保存
SAVE_DIGIT2: SUB AL,37H
OR BX,AX
MOV X1[DI],BX
MOV CL,4
SHL BX,CL
PUSH BX

NEXT1: CMP SIGN,1  ;判断是否保存了X1
JE  NEXT2  ;之前已经保存了X2=X1,则退出
MOV AX,X1
MOV X2,AX
INC SIGN

NEXT2: MOV AH,4CH
    INT 21H
CODES ENDS
    END START



Debug调试到CMP AL,'9' 就不会往下执行 JA SAVE_DIGIT2  然后就无法调试了
求解释哪里错了 ,新手不懂啊
------解决方案--------------------
弄个堆栈就行了。
  相关解决方案