|
![]() | 作者: 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号