. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->包含多个段的程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  做第6章实验5时>>所得>>所感>>所想  [待解决] 回复[ 1次 ]   点击[ 546次 ]  
wxl760506
[帖 主]   [ 发表时间:2008-07-04 15:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-27 18:09
哲学中说:实践理论再实践再理论.

实验时回想了第4章知识
    应知道cx中存放的是代码的16进制长度,也应发现dx的值等于ex的值,ss的值等于cs的值.其中cs的什比dx中大10H.
   第6章实验
  
   5.(1)中用debug加载程序后发现与4章的不同(我电脑中的数据):  -r
    cs=1D7D  SS=1D7B  DS=1D6B  ES=1D6B  cx=42
    CS不等于SS
    4章中代码,数据,堆栈在一个段中,6章中分开了.是造成CS不等于SS的真正原因吗?恳请专手回复.
    cpu执行程序返回前:
    cs=1d7d  ss=1d7c  ds=1d7b es=1d6b
    我是这样认为的:由start初始化cs段地址后上共32B,所以
ds与ss各16B.

    改造原程序:将所有的data字符与satck字符互换后,再次编译程序加载:
    cs=1D7D  SS=1D7B  DS=1D6B  ES=1D6B  cx=42
     
    cpu执行程序返回前:
    cs=1d7d  ss=1d7b  ds=1d7c es=1d6b
    结论:ss与ds段地址与在程序中的位置有关.回答了实验5.(3)
    

    5.(2)中用debug加载程序后
       -r
      cs=1D7D  SS=1D7B  DS=1D6B  ES=1D6B  cx=42
      cs的值与5.(1)中相同.
      结论:深刻理理了一个段最小16B.
    
    5.(3)中用debug加载程序后  
      -r
      cs=1d7b ss=1d7b ds=1d6b es=1d6b cx=44
      发现与第4章结论相同.
      cpu执行程序返回前:
      cs=1d7b ss=1d7f ds=1d7e es=1d6b

发现问题:观察5.(2)与5.(3),和程序一样,只是结构发生变化,cx中的值却不相同.
        为何就不同?
      怀疑5.(3)的程序录入有误,把5.(2)改为5.(3)再编译,还是如此.
      这是为什么为什么???
      恳请专家回答!

    通过本实验:5.(2)在实验中起到承上启下的作用,不上机实验,想当然的就会用第4章知识来掩盖事实的真假.
    对段地址到现在为址有了较为深的理解:一段连续的物理内存,可用,不同的段地址来表示,且为16的倍数.
    体验了发现问题后的快感!
lloveasm
[第1楼]   [ 回复时间:2008-09-01 22:30 ]   [引用]   [回复]   [ top ] 
荣誉值:18
信誉值:0
注册日期:2008-08-31 11:07
我的是这样的,
加载代码后,cpu未执行程序:
(ds) + 10H = (ss)
(ss) + 10H = (cs) - 10H

cpu执行程序,返回前
(ds) + 10H = (ss)
(ss) + 10H = (cs)

测试如下:
-------------------------------------------------------------------------
-r
AX=0000  BX=0000  CX=0042  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B5E  ES=0B5E  SS=0B6E  CS=0B70  IP=0000   NV UP EI PL NZ NA PO NC
0B70:0000 B86F0B        MOV     AX,0B6F
-g

Program terminated normally
-r
AX=0000  BX=0000  CX=0042  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
DS=0B5E  ES=0B5E  SS=0B6E  CS=0B70  IP=0000   NV UP EI PL NZ NA PO NC
0B70:0000 B86F0B        MOV     AX,0B6F
-
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved