. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->第一个程序
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  86页第三个图有不明之处,恳请高手指点。  [待解决] 回复[ 7次 ]   点击[ 611次 ]  
leeyeye
[帖 主]   [ 发表时间:2008-05-19 15:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2008-02-23 16:11
按照第一张图所说,从SA:0000处开始往下256个字节内,即为PSP。而第三张图说从第256个字节出开始装入程序,那么程序的地址应该为SA:256H才对啊,为什么是SA:10H??
xiaoqiang
[第1楼]   [ 回复时间:2008-05-20 10:55 ]   [引用]   [回复]   [ top ] 
荣誉值:35
信誉值:0
注册日期:2007-12-05 09:08
书上写的是 :
从这段内存区的256字节处开始(在PSP的后面),将程序装入,程序的地址被设为SA+10H:0


你看的是不是电子版,估计是电子版的问题。
leeyeye
[第2楼]   [ 回复时间:2008-05-20 17:42 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2008-02-23 16:11
多谢xiaoqiang,我是看书的,而且还是第二版,可能是我理解的不好。
lmyycx
[第3楼]   [ 回复时间:2008-05-22 06:06 ]   [引用]   [回复]   [ top ] 
荣誉值:2
信誉值:0
注册日期:2008-05-08 23:42
我理解的是256字节的地址是0-255 而256 是个十进制数 你说的sa:256肯定是错的 按你说的应当是sa:ffh 记住ffh是0-255的255的十六进制数,而真正的程序是从ffh+1处开始的(换成十进制的说法就是255+1处开始的)。根据物理地址=段地址*16+偏移地址 那么这个问题中的程序的地址=sa*16+100h,因为ffh+1=100h是十六进制数,或者=(sa+10)*16+0,因为物理地址的表示可以有多种方式,比如sa=0000,那么sa+10=0010,再*16,就是后面再加个0,即(sa+10)*16+0000=00100, 而0000*16=00000,再加上100,也=00100,说白了,就是00100+0=00000+100.(其实书上有很多的讲解,你再认真的看看。)
以上的理解不知对不对
black
[第4楼]   [ 回复时间:2008-05-23 16:37 ]   [引用]   [回复]   [ top ] 
荣誉值:37
信誉值:0
注册日期:2008-01-29 18:06
看书要认真啊
shiweifu
[第5楼]   [ 回复时间:2008-06-08 18:04 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-06-08 18:02
他说的是物理地址相差256个字节

而那个+10是段地址

段地址+10再乘以16

=16*16

最后是256
goal00001111
[第6楼]   [ 回复时间:2008-06-22 13:33 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:9
注册日期:2007-10-19 10:16
3楼非常正确
goal00001111
[第7楼]   [ 回复时间:2008-06-22 13:37 ]   [引用]   [回复]   [ top ] 
荣誉值:3
信誉值:9
注册日期:2007-10-19 10:16
楼主描述错误
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved