看看代码有没有问题!

sevenfish 2006-03-14 08:57:14
下面代码编译没问题,在xp下执行出现“ntvdm cpu遇到无效指令”,高手能告诉我是什么问题引起的吗?

DATA SEGMENT
DA1 DB 'THIS IS A SAMPLE PROGRAM.'
DB 0DH,0AH,'$'
DATA ENDS
STACK SEGMENT
ST1 DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
START: MOV AX,STACK
MOV SS,AX
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,9
MOV DX,OFFSET DA1
INT 21H
RET
MAIN ENDP
CODE ENDS
END
...全文
151 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
peimichael 2006-03-16
  • 打赏
  • 举报
回复
都是高人阿,学习学习
jixingzhong 2006-03-16
  • 打赏
  • 举报
回复
学习 ~ ^_^
zara 2006-03-16
  • 打赏
  • 举报
回复
start 未定义的问题, 是由于高版本的 Masm 引入了标号的适用范围的概念. 原来的定义模式, start: 这样的, 只能在其定义的模块中使用; 而 start:: 这样的就是全局性质的, 可以任意使用. 所以, 解决这个问题可以将 start: 修改为 start:: 定义方式. 或者是在编译时加上 /Zm 选项, 即采用 Masm5 的兼容模式进行编译, 这个包括缺省的标号都是全局性质的
sevenfish 2006-03-16
  • 打赏
  • 举报
回复
忘了说,原来end后有start的,但编译说它未定义,郁闷下只能删去,编译没问题,就是执行时出错,我找的编译器是masm6.15,压缩包只有几百k,是不是不全的问题,另外是在xp下编译运行的。
zara 2006-03-15
  • 打赏
  • 举报
回复
唉, 既然用 int21h(mov ah, 4ch) 来结束程序并返回到 DOS, 好保留着 push ds\mov ax, 0\push ax 这三条指令做什么呢? 也一并删除了吧
jingbinqweasd 2006-03-15
  • 打赏
  • 举报
回复
DATA SEGMENT
DA1 DB 'THIS IS A SAMPLE PROGRAM.'
DB 0DH,0AH,'$'
DATA ENDS
STACK1 SEGMENT STACK
ST1 DB 100 DUP(?)
STACK1 ENDS
CODE SEGMENT

ASSUME CS:CODE,DS:DATA,SS:STACK1
START: MOV AX,STACK1
MOV SS,AX
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,9
MOV DX,OFFSET DA1
INT 21H
MOV AH,4CH
int 21h
CODE ENDS
END START
zara 2006-03-14
  • 打赏
  • 举报
回复
将最后一行的 END 改为 END START 试试
Areslee 2006-03-14
  • 打赏
  • 举报
回复
哈哈
好久不见这个错误,回忆以前偶遇到这个问题的时候还以为是连接器出了问题,每次编译完后手动修改EXE文件入口。:)
后来想清楚之后一个寒啊。
对于代码段不在最前面的程序,在END后加上入口标号是很重要的
大熊猫侯佩 2006-03-14
  • 打赏
  • 举报
回复
1 no only END ,is END some label

2 write exit code ,eg :

mov ah,4ch
int 21h
fhb13 2006-03-14
  • 打赏
  • 举报
回复
楼主把代码改下
DATA SEGMENT
DA1 DB 'THIS IS A SAMPLE PROGRAM.'
DB 0DH,0AH,'$'
DATA ENDS
STACK SEGMENT
ST1 DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
MAIN PROC FAR
ASSUME CS:CODE,DS:DATA,SS:STACK
MOV AX,STACK
MOV SS,AX
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
MOV AH,9
MOV DX,OFFSET DA1
INT 21H
RET
MAIN ENDP
START:
call main
mov ax,4c00h
int 21h
CODE ENDS
END START
不需要开发,0行代码写接口服务,sql编程,只要会sql就会写接口服务,让后端变得更简单,简单4步短短5分钟,立马上手,java小白也可以写接口。订阅课程后可以免费获取发布版进行使用和测试。 0行代码写服务的需要来源案例一,当时有个项目,有400张表,都是管理系统,单表维护的内容较多,当时的项目团队是13人,前后端都写,那时候还没有springboot,用的是ssm,mybatis刚出来,有了替代hibernate的趋势,ifelse写了一堆又一堆,实体类也是,当时的后端分了7层☒,天天加班干这活,复制粘贴,很容易犯错,实体类多人引用修改,真的是废了很大的劲……案例二,也是一个比较大的项目,两千万多万那种,当时为了拿项目,需要快速实现原型给客户看,要求比较高,虽说是原型但是数据全部需要实时,这时候就需要大量编写数据接口,同样编写接口这件事难度倒是不大,但是量大,编写过程手写很容易出错……案例三,以前管理的团队主要做移动端开发,里面的项目会涉及到推送,管理系统,数据采集与同步,总之很多内容,需要前后端通吃,我不仅需要出方案,设计原型,设计数据库,出报价,沟通需求,还要写后端框架,数据接口与数据采集,开发前端(web端),移动端,管理所有项目,但是那时候招的人只会写移动端,实在是忙不过来,我就想能不能有个框架让不会写java的人能写接口,因为写移动端sqlite总是会用的,也就是说写sql不是难点……基于以上三点需求的积累,我利用业余时间写了一个后端框架,完成了这样的需求,刚开始是需要写三行代码完成一个接口,经过后面优化,现在不写代码也可以实现……  本框架涉及的知识点比较多,目前提供最基础版供大家学习和使用,后期逐步推出框架具体的教程和功能内容,下期我们讲如何在实际项目中通过部署版如何完成所需要的接口编写,欢迎大家订阅。

21,453

社区成员

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

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