首页
社区
课程
招聘
很简单的程序,却找不出问题来,求帮助
发表于: 2011-6-29 23:10 4679

很简单的程序,却找不出问题来,求帮助

2011-6-29 23:10
4679
data segment
    msg db 0dh,0ah,'hello world!$'
data ends

code segment
   assume ds:data,cs:code

start:
     mov ax,data
     mov ds,ax
     lea  dx,msg
     mov ah,9
     int 21h
    mov ah,4ch
    int 21h
code ends
        end start

源码如上所示,在Virtual PC下的DOS7下面,用masm5.0编译,没有出现错误和警告,运行生成程序,提示:
CPU error:incorrect  opcode.Killing process.
求分析为什么不能运行。

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
2
我对不不是很了解噢。不过楼主可以试试
mov ax ,cs ;
mov ds ,ax ;
2011-6-29 23:40
0
雪    币: 154
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
看了一下程序 没什么大问题
XP SP3下编译运行通过
以下是帮你搜的答案
“这是某个DOS下防死机的小程序在起作用。可以修改DOS下的Autoexec.bat 文件,将含有 escape 或者 killer 的行删除,或者在行首加::注释掉。然后重启后试试看,如遇到有其他的问题,比如死机,那可能是内存管理程序的兼容性问题,再修改 config.sys 文件,删除或者行首加 rem 注释掉 emm386 所在行,然后重启再试。”
手头没跟你一样的环境,测试不了,如果还不行,建议楼主加上一个堆栈段
试试下面的代码

.386
STACK SEGMENT USE16 STACK
        DB 200 DUP(0)
STACK ENDS

DATA SEGMENT USE16
    MSG DB 0DH,0AH,'HELLO WORLD!$'
DATA ENDS

CODE SEGMENT USE16
   ASSUME DS:DATA,CS:CODE,SS:STACK

START:
        MOV AX,DATA
        MOV DS,AX
        MOV DX,OFFSET MSG
        MOV AH,9
        INT 21H
        MOV AH,4CH
        INT 21H
CODE ENDS
        END START

另外说一句,其实汇编除了某些中断,完全可以在WINDOWS环境下学,我一直就用的windows
一些操作还支持鼠标,很方便
2011-6-30 00:03
0
雪    币: 754
活跃值: (180)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LZ,这个程序在XP下用masm5.0就能够运行,只需要把
     lea dx,msg
改为 mov dx,offset msg
即可,这涉及到lea和offset在使用时的区别,LZ可goole一下,我暂时还没总结出来。
2011-6-30 10:07
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
有意思,offset
2011-6-30 10:31
0
雪    币: 959
活跃值: (66)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
Invalid keyboard code specified
Microsoft (R) Macro Assembler Version 5.00
Copyright (C) Microsoft Corp 1981-1985, 1987.  All rights reserved.

Object filename [pediy.OBJ]:
Source listing  [NUL.LST]:
Cross-reference [NUL.CRF]:

  49430 + 449098 Bytes symbol space free

      0 Warning Errors
      0 Severe  Errors

C:\masm5>link pediy.obj

Microsoft (R) Overlay Linker  Version 3.60
Copyright (C) Microsoft Corp 1983-1987.  All rights reserved.

Run File [PEDIY.EXE]:
List File [NUL.MAP]:
Libraries [.LIB]:
LINK : warning L4021: no stack segment

C:\masm5>pediy

hello world!
C:\masm5>
windows server 2003 下没有问题
2011-6-30 13:03
0
雪    币: 278
活跃值: (709)
能力值: ( LV15,RANK:520 )
在线值:
发帖
回帖
粉丝
7
楼主学习方式有问题,请更新
2011-6-30 13:22
0
雪    币: 183
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
看来可能是环境的问题,谢谢大家的热情。
2011-7-2 18:13
0
游客
登录 | 注册 方可回帖
返回
//