. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->[bx]和loop指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  救救我吧!程序的物理地址咋算的!  [待解决] 回复[ 4次 ]   点击[ 449次 ]  
573085020
[帖 主]   [ 发表时间:2009-05-27 15:13 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-02 15:26
书中有弄不懂的?内容是这样的:所以,我们从DS中可以得到PSP的段地址SA,PSP的偏移地址为0.则物理地为SA*16+0。
因为PSP占256个字节,所以程序的物理地址是:
SA*16+0+256=SA*16+16*16+0=(SA+16)*16+0
可用段地址和偏移地址表示为:SA+10:0
sa+10:0是怎么算出来的?
(sa+16)x16+0就算x16让加法运算器去做,也不该得出sa+10:0啊也应该是sa+16:0啊
还有六个跑哪去了?
mouse
[第1楼]   [ 回复时间:2009-05-27 16:53 ]   [引用]   [回复]   [ top ] 
荣誉值:472
信誉值:12
注册日期:2007-10-16 15:34
可用段地址和偏移地址表示为:SA+10:0 
---------------
这里的10是十六进制的。

debug下xx:xx表示方法中,xx都是十六进制数。
573085020
[第2楼]   [ 回复时间:2009-05-27 18:03 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-04-02 15:26
我知道段地址:偏移地址在debug下是十六进制的,我不知道(SA+16)*16+0 是怎么变成sa+10:0的
aten
[第3楼]   [ 回复时间:2009-05-30 17:24 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:0
注册日期:2008-12-11 08:43
我知道段地址:偏移地址在debug下是十六进制的,我不知道(SA+16)*16+0 是怎么变成sa+10:0的
------------------
回复:(SA+16)*16+0 用十六进制表示为:(SA+10H)*10H 此为物理地址!
前面我们学习的时候学过: 物理地址= 段地址*10H+偏移地址
用(段地址:偏移地址)的方式表示SA+10H)*10H 这个物理地址怎么表示?(可以有很多种表示)
如果不会只说明你前面学得不够牢,可以回头复习一下!
455139
[第4楼]   [ 回复时间:2009-06-07 09:52 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-05-29 14:22
一开始说的SA*16+0这里的16说的是十进制,而后面说的SA+10:0这里说的10则是十六进制,刚开始我也迷了好一段时间,后来听一位大虾说了一下才明白,这就是一个进制的问题。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved