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

junlinfushi 2013-05-30 10:43:56
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 然后就无法调试了
求解释哪里错了 ,新手不懂啊
...全文
315 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
junlinfushi 2013-05-31
  • 打赏
  • 举报
回复
引用 2 楼 ad6673706 的回复:
弄个堆栈就行了。
怎么弄个堆栈啊?要哪里加入代码?新手不懂
babyacolyte 2013-05-31
  • 打赏
  • 举报
回复
同问 不过 我是调试win32程序 调试到一句 cmp指令就不往下动了 不知道为何
ad6673706 2013-05-31
  • 打赏
  • 举报
回复
MOV AX,DATAS MOV DS,AX MOV SP,6
ad6673706 2013-05-30
  • 打赏
  • 举报
回复
弄个堆栈就行了。
junlinfushi 2013-05-30
  • 打赏
  • 举报
回复
谁知道这代码是不是哪里错了,求解释,新手不懂啊,急啊

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧