. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->第一个程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  关于试验3,DEBUG把程序加载入内存的疑问?  [已解决] 回复[ 4次 ]   点击[ 191次 ]  
mrlee
[帖 主]   [ 发表时间:2009-07-17 16:37 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-07-14 10:39
C:\MASM>debug test1.exe  
加载程序回车后用r命令查看寄存器内容:
-r
AX=0000  BX=0000  CX=0016  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=2D13  ES=2D13  SS=2D23  CS=2D23  IP=0000   NV UP EI PL NZ NA PO NC
2D23:0000 B80020        MOV     AX,2000
这时CS=2D23,IP=0000,则指令放在2D230H开始的内存单元中,我想知道在程序加载的时候怎么改变指令存放的位置??是否系统自己进行内存分配管理我们无法改变??
mrlee
[第1楼]   [ 回复时间:2009-07-24 10:16 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-07-14 10:39
我感觉应该是,程序加载时系统自动进行内存分配管理,我们无法指定位置。但是为什么IP的值每次都是'0000'呢?'0003'不行吗?是不是为了更好更方便的管理内存单元才这样分配的?
younggay
[第2楼]   [ 回复时间:2009-07-27 10:52 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
debug下加载,此时的内存是debug程序运行给分配的,自己改变不了。
younggay
[第3楼]   [ 回复时间:2009-07-27 10:55 ]   [引用]   [回复]   [ top ] 
荣誉值:273
信誉值:0
注册日期:2008-01-23 20:23
但是为什么IP的值每次都是'0000'呢?'0003'不行吗?是不是为了更好更方便的管理内存单元才这样分配的?
==================
我们知道,定位是 段地址:偏移地址 来进行的,要达到最大的段空间,自然是将段初始成 段地址:0 这样的情况。这是一种处理方式的的问题吧。

当然,只要能够定位正确的物理地址,从理论上说,我们不一定让ip为0的,但是,我们总要选择一个处理方式来处理,这个方式就要考虑其他一些因素了,我想,获得最大的段空间按也许就是其中一个重要的考虑吧。
mrlee
[第4楼]   [ 回复时间:2009-07-28 09:18 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2009-07-14 10:39
此贴由 贴主 于 [ 2009-07-28 09:18 ] 结贴。 结贴原因:问题已解决
得分情况: 3楼(younggay):6分  
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved