懂汇编的都进来帮忙下

feng2222 2011-05-21 07:07:58
DATA SEGMENT
MSG1 DB 'Please input a number:',0AH
MSG2 DB 'My name is:XIAOYUGUO'
MSG3 DB 'My ID number is:090706124'
MSG4 DB 'Quit the program!!!'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA ,CS:CODE
START:MOV AX,DATA
MOV DS,AX
P:LEA DX,MSG1
MOV AH,09H
INT 21H
MOV AH,1
INT 21H
CMP AL,30H ;跟0比较
JB P2
CMP AL,39H
JA P2
XOR AH,AH
SBB AL,30H
MOV BL,2
DIV BL
CMP AH,0
JZ P1
LEA DX,MSG2 ;除2得偶数
MOV AH,09H
INT 21H
JMP P
P1: LEA DX,MSG3 ;除2得奇数
MOV AH,09H
INT 21H
JMP P
P2: LEA DX,MSG4
MOV AH,09H
INT 21H
JMP DONE
DONE:MOV AH,4CH
INT 21H
CODE ENDS
END START

得到可执行文件打开老是提示
NTVDM CPU 遇到无效的指令。
CS:0000 IP:0077 OP:f037 05 10 02 选择“关闭”终止应用程序。”

请问哪里出错了,要怎么解决啊。

用的是win7系统,MASM5.0版本
...全文
115 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyu54321 2011-05-23
  • 打赏
  • 举报
回复
DATA SEGMENT
MSG1 DB 'Please input a number:',0AH
MSG2 DB 'My name is:XIAOYUGUO'
MSG3 DB 'My ID number is:090706124'
MSG4 DB 'Quit the program!!!'
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
P:LEA DX,MSG1
MOV AH,09H
INT 21H
MOV AH,1
INT 21H
CMP AL,30H ;跟0比较
JB P2
CMP AL,39H
JA P2
XOR AH,AH
SBB AL,30H
MOV BL,2
DIV BL
CMP AH,0
JZ P1
LEA DX,MSG2 ;除2得偶数
MOV AH,09H
INT 21H
JMP P
P1:LEA DX,MSG3 ;除2得奇数
MOV AH,09H
INT 21H
JMP P
P2: LEA DX,MSG4
MOV AH,09H
INT 21H
JMP DONE
DONE:MOV AH,4CH
INT 21H
CODE ENDS
END START
WJN92 2011-05-22
  • 打赏
  • 举报
回复
在调用中断的时候 把AL也清空一下吧
jmflovezlf 2011-05-22
  • 打赏
  • 举报
回复
你用ollydbg提调速下……
橡皮擦 2011-05-21
  • 打赏
  • 举报
回复
代码没问题,可能是你输入的格式有问题,仔细查看一下吧
p_voice 2011-05-21
  • 打赏
  • 举报
回复
很简单,你的分号写成汉语的了
feng2222 2011-05-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 mydo 的回复:]
debug时,切入地址cs:ip看一下指令流实际跑到哪里
[/Quote]不会debug噢
大熊猫侯佩 2011-05-21
  • 打赏
  • 举报
回复
debug时,切入地址cs:ip看一下指令流实际跑到哪里

21,459

社区成员

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

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