首页
社区
课程
招聘
我从网上找的Hello,world!程序为什么编译通过但是运行错误?
发表于: 2011-6-23 12:32 4993

我从网上找的Hello,world!程序为什么编译通过但是运行错误?

2011-6-23 12:32
4993
如题,程序如下:
DATE SEGMENT
HELLO DB 'HELLO,WORLD!$'
DATE ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATE
STAST:
MOV AX,DATE
MOV DS,AX
SUB AX,AX
MOV AH,7
INT 21
CMP AL,41
JNE Q
MOV AH,9
MOV DX,OFFSET HELLO
INT 21
Q:
MOV AH,4C
INT 21
CODE ENDS
END STAST
程序如上,而且原本程序的代码段定义的HELLO前还有sz,即szHELLO,但是编译器会报错。运行错误如下:
NTVDM CPU 遇到无效指令。
CS:0555 IP:8760 OP:63 68 69 76 69选择"关闭"中止应用程序。
为什么呢,还请各位大侠救救我。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (11)
雪    币: 21
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
STAST:start?
2011-6-23 12:42
0
雪    币: 1981
活跃值: (771)
能力值: ( LV13,RANK:420 )
在线值:
发帖
回帖
粉丝
3
数字后面都加上 H
DATE SEGMENT
	HELLO DB 'HELLO,WORLD!$'
DATE ENDS
CODE SEGMENT
	ASSUME CS:CODE,DS:DATE
STAST:
	MOV AX,DATE
	MOV DS,AX
	SUB AX,AX
lp:
	MOV AH,7
	INT 21h
	CMP AL,41h
	JNE Q
	MOV AH,9
	MOV DX,OFFSET HELLO
	INT 21h
	jmp lp
Q:
	MOV AH,4Ch
	INT 21h
CODE ENDS
END STAST

输入 大写 A 就会显示 HELLO,WORLD!
输入其它退出程序
2011-6-23 12:42
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
我写的都是大写的呀,何况标号应该大小写都可以吧
2011-6-23 17:29
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
5
那中断号呢,退出的4ch加了,前面的7号9号都没加呀,还有就是那个无效指令的错误是什么意思呀
2011-6-23 17:37
0
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
今天终于转正了,庆祝一下加H表示十六进制,数字7和9的十六进制表示也还是7和9,加不加H都一样
2011-6-24 14:48
0
雪    币: 198
活跃值: (103)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
看看我自己的KX多少了
2011-6-24 15:23
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
8
那我把他们说的都改掉了,还是运行不了,再这样下去就要把我的信心和兴趣磨光了,到底是哪地方错了呢?总是提示遇到无效指令,可是MASM都编译通过了呀
2011-6-24 22:20
0
雪    币: 4
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
DATA SEGMENT
  szHELLO DB 'HELLO,WORLD!$'
DATA ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA
START:
  MOV AX,DATA
  MOV DS,AX
  SUB AX,AX
lp:
  MOV AH,7
  INT 21h
  CMP AL,'A'
  JNE Quit
  MOV AH,9
  MOV DX,OFFSET szHELLO
  INT 21h
  jmp lp
Quit:
  MOV AH,4Ch
  INT 21h
CODE ENDS
END START
2011-6-24 23:45
0
雪    币: 31
活跃值: (48)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
10
我不知道我用的MASM的版本是多少,但是我知道在定义字符串的时候在Hello前面加上sz就会报错。另外我想多问一句,如果我想显示中文字符串呢?应该怎么样定义和调用?
2011-6-25 01:14
0
雪    币: 97697
活跃值: (200734)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
TEST it:

http://www.pediy.com/tools/Compilers.htm

Программное обеспечение выпуска и Windows Crack Обучение
Нам-Dabei Guanyin Бодхисаттва Нам без митабха
2011-6-25 01:18
0
雪    币: 1240
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
玩MASM前,建议先直接用debug写点小程序玩玩。
要注意的是debug里数字都是16进制的,不用加H
2011-6-25 02:03
0
游客
登录 | 注册 方可回帖
返回
//