论坛: 编程破解 标题: 请教 复制本贴地址    
作者: blankcat [blankcat]    论坛用户   登录
1、物理地址的计算方法:16d x 段地址+偏移地址=物理地址
那么段地址和偏移地址为3017:000A的存储单元的物理地址是:3017000AH 对不对? 如果不对请计算出:3015:002A  、3010:007A
同时解释上个 公式 中的"16d x"是什么意思?
2、存储器中每一段最多可有10000H个字节。如果用调试程序DEBUG的r命令在终端上显示出当前各记存器的内容如下,请画出此时存储器分段的示意图,以及条件标志OF、SF、ZF、CF的值。
c>debug
-r
AX=0000 BX=0000 CX=0079 DX=0000 SP=FFEE BP=0000 SI=0000 DI=0000
DS=10E4 ES=10F4 SS=21F0 CS=31FF IP=0100 NV UP DI PL NZ NA PO NC

[此贴被 戒色(blankcat) 在 11月08日21时06分 编辑过]

地主 发表时间: 11/08 21:00

回复: lwei889 [lwei889]   论坛用户   登录
物理地址的计算方法好象
  (cs)*16+偏移地址=物理地址(CS 是段寄存器,也可以是DS SS ES)
你说的 16d x (我想x应该是数学中 乘 的意思也就 *)
如果你说的段地址和偏移量分别是3015H 和002AH  话
  那么物理地址就=3105H*16+002AH
              =3107AH
汇编我也刚学,如果说的不对的话,还请高手指正

====================================
    我是新手上路
      有说错的地方
          请高手指正
====================================


B1层 发表时间: 11/08 21:48

回复: xdy [xdy]   论坛用户   登录
这三个的结果都是3017A
"16 d x"我觉得应该是"16 *"吧
据我个人理解,因为本人也是刚学汇编。8086系统段地址都是放在段寄存器中的,段寄存器是16位的。由于地址偏移也是16位而8086是20位寻址所以分段。
20位寻址最大为2的20次方====2的16次方乘以16。
上面题目的计算,16H相当于一进制中10。16*段地址=30170(以上面的题目为例),接着只要把结果跟偏移地址相加就可以了。
严重申明,本人也是初学,有错的地方大家多多指出,免得误导别人。



B2层 发表时间: 11/08 21:49

回复: blankcat [blankcat]   论坛用户   登录
多谢你的回答!

B3层 发表时间: 11/09 10:39

回复: ncutwang [ncutwang]   论坛用户   登录
建议参阅清华大学出版社<<IBM-PC汇编语言程序设计第二版>>沈美明温冬蝉著


B4层 发表时间: 11/09 12:14

回复: blankcat [blankcat]   论坛用户   登录
我现在用的是第一版的
看起来很费劲
后面的习题做起来不知道对还是错


B5层 发表时间: 11/09 16:22

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号