标题:debug报错,求高手帮忙解惑
只看楼主
bbsshuke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-5-18
结帖率:0
已结贴  问题点数:20 回复次数:7 
debug报错,求高手帮忙解惑
最近比葫芦画瓢写了一个程序,可是刚开始就遇到麻烦了。debug的时候movsb这一条汇编语句进行不下去了。
报错:内存分配错误,加载不到command,系统终止。
求高手帮忙解惑,谢谢!
搜索更多相关主题的帖子: command 
2016-11-04 01:57
bbsshuke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-5-18
得分:0 
程序代码:
assume cs:code,ds:data,ss:stack

data segment
    db 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
data ends

stack segment
    db 32 dup(0)
stack ends
    
code segment

start:    mov ax,stack
    mov ss,ax
    mov sp,32

    mov ax,data
    mov ds,ax
    mov si,0

    mov bx,0H
    mov es,bx
    mov di,7E00H
    
    mov cx,20
    cld
    rep movsb;报错,系统不允许用户往地址7E00H写数据!

    mov ax,4C00H
    int 21H

code ends
end start


[此贴子已经被作者于2016-11-4 16:17编辑过]

2016-11-04 02:00
bbsshuke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-5-18
得分:0 
我是在win7安装的VM VirtualBox虚拟了一个XP系统,然后在虚拟的XP系统里面调试汇编代码。环境应该没问题,因为我单独写了一个程序验证movsb,表示这条语句没有问题。
2016-11-04 02:06
bbsshuke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-5-18
得分:0 
回复 3楼 bbsshuke
2016-11-04 02:10
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:20 
mov bx,0  ;好象不是0吧
mov es,bx

2016-11-04 06:55
bbsshuke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-5-18
得分:0 
回复 5楼 Valenciax
没问题,例程就是这样的。就是要把数据写到这个地方。
2016-11-04 15:25
bbsshuke
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2013-5-18
得分:0 
我找到问题的原因了。不能往地址7E00H写数据!
我把地址改成17E00H就没问题了。
现在的问题是例程就是往7E00H里面写数据,为何我的系统就不行呢?
2016-11-04 16:13
Valenciax
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:11
帖 子:337
专家分:2462
注 册:2016-5-15
得分:0 
若es=0,整个目的地址是
es:di = 0:7E00h,也可以换算成7E0:0h
看看debug里,cs的地址B55:???
7E0比B55低得多,那里可能是DEBUG本身或COMMAND的常驻部份
怎可能不Memory allocation error ?

2016-11-04 20:14



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-470684-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.539869 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved