社区
汇编语言
帖子详情
关于王爽汇编的一个小问题
lzlong211
2009-04-23 05:09:30
这个问题我想了一上午,还是想不通,PSP是占256(100H)个字节的,用段地址和偏移地址表示为:SA+10H:0,这里的偏移地址的最大值是多少?因为一般的偏移地址取值最大是64KB(FFFFH)吗?并且他原间是不是这样表示的:(SA+10H):0?
希望各位高手能够帮我解答,谢谢了!
...全文
151
10
打赏
收藏
关于王爽汇编的一个小问题
这个问题我想了一上午,还是想不通,PSP是占256(100H)个字节的,用段地址和偏移地址表示为:SA+10H:0,这里的偏移地址的最大值是多少?因为一般的偏移地址取值最大是64KB(FFFFH)吗?并且他原间是不是这样表示的:(SA+10H):0? 希望各位高手能够帮我解答,谢谢了!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Msp_dint
2011-09-16
打赏
举报
回复
原书正确:(假若SA=1000H) 书中PSP为256字节,SA+10H=1010H
那么程序装入的段地址为1010H,即从地址为10100的内存开始装入程序,10000H到10100H之间正好是256字节,为PSP
chujinsun
2009-10-04
打赏
举报
回复
原书是正确的 段地址*10+偏移地址 所以加10后乘以10就是256个字节。
lzlong211
2009-04-24
打赏
举报
回复
我明白了,谢谢啊!
nanlingcg
2009-04-23
打赏
举报
回复
这是王爽书上的。。。
楼主的意思我有点明白,是不是问:SA+10H(按你说的)段,还有没有64K大,也就是说可不可以再表示出SA+10H:0000-SA+10H:FFFF...
以小为我个人的肤浅理解,对与不对,望高手指正!
我提示下:
提示一:在王爽的书前面就说过了。内存里并不是真分成一段一段的。我个人理解:如果把段称着基。区,或者干脆称着前地址前也可以,“段”只不过是称呼而已。这都是“段”这个字在国人中形成的观念惹的祸!
提示二,为什么说一个段最大只能是64K。个人理解,不是最大只能64K,严谨来说,应该说在段地址固定的情况下,最多只能表示出64K,也就是偏移从0000-FFFF。当然32位的就不是64K了。。。
比如:以1000为段地址,可以表示出1000:0000-1000FFFF。现在我不用1000作段地址了,我向后移100H个字节,即10100开始做段首地址,那么表示为1010:0000,自然段地址就是1010了,那么通常我们说的这个段依然可以表示出1010:0000-1010:FFFF。我想只要内存够的话,对1010:FFFF是可操作范围的。
所以我个人以为:你不要被那个“段”字迷惑。。。你的疑惑也就不存在了。。。
本人也初学,不对之处望高人即使指点,以免我误人误己。。。
lzlong211
2009-04-23
打赏
举报
回复
在汇编第二版的第92页,王爽老师讲解的在DOS中,.EXE文件中的程序的加载过程。他只说“因为PSP占256(100H)字节,所以程序的物理地址是:SA*16+0+256=(SA+16)*16+0 可用段地址和偏移地址表示为:SA+10H:0”,对于这个推导我不是很明确,所以产生一连串的困惑!
cnzdgs
2009-04-23
打赏
举报
回复
偏移量的变化范围可以是0~FFFF,使用同一段地址可以访问64KB内存,同一内存地址也可以通过多种段地址+偏移量的形式来访问,或者说,段之间是相互重叠的。
BAYNPU
2009-04-23
打赏
举报
回复
程序段前缀psp信息区的偏移地址:
偏移:00H 内容及意义:程序终止退出命令INT 20H
偏移:02H 内容及意义:可用的内存空间高端段值
偏移:04H 内容及意义:保留
偏移:05H 内容及意义:DOS系统功能远调用指令
偏移:0AH 内容及意义:程序结束处理中断向量原内容
偏移:0EH 内容及意义:CTRL+C键处理中断向量原内容
偏移:12H 内容及意义:严重错误处理中断向量原内容
偏移:16H 内容及意义:保留
偏移:2CH 内容及意义:环境块段值
偏移:2EH 内容及意义:保留
偏移:5CH 内容及意义:格式化的未打开的文件控制块1
偏移:6CH 内容及意义:格式化的未打开的文件控制块2
偏移:80H 内容及意义:命令行参数长度(字节数)
偏移:81H 内容及意义:命令行参数
...
willflyz
2009-04-23
打赏
举报
回复
所以猜测你上面的应该是 SA*10H + EA 而不是SA+10H。
--
这样理解是对的,SA+10H这个明显是错的.
pla_007
2009-04-23
打赏
举报
回复
PSP = (英语太差,拼不出来),中文译为“段前缀”
SA = Segment address 段地址
EA = Excursion address 偏移地址
X86中:
物理地址 = 段地址*10H + 偏移地址 (10H即10进制的16)
所以猜测你上面的应该是 SA*10H + EA 而不是SA+10H。难道在看盗版书?
willflyz
2009-04-23
打赏
举报
回复
看不太明白,楼主PSP是什么?
王爽
《
汇编
语言》实验10
这篇博客主要介绍了
王爽
《
汇编
语言》实验10的内容,包括编写
一个
通用子程序实现显存无关的字符串显示功能,并探讨了如何解决除法操作中可能出现的溢出
问题
。实验结果显示了字符串正确显示的效果。
masm
汇编
语言堆栈段定义了却提示无堆栈段
在阅读
王爽
的《
汇编
语言》时遇到
一个
问题
,即加了堆栈段仍然无法正常显示。通过调整代码,如下所示,成功解决了这个
问题
。stacksegmentstack dw 0,0,0,0,0,0,0,0 stackends。参考相关文章,了解了堆栈段设置的关键点。
王爽
《
汇编
语言》第4版课程设计2
本文作者分享了在
王爽
《
汇编
语言》第4版中进行课程设计2的实践经验,强调了这本书在学习
汇编
语言过程中的指导作用。通过循序渐进的方式,作者成功自学并完成了具有一定难度的课程设计,期间克服了种种困难,如遇到编程
问题
和调试bug。经过
一个
月的努力,作者最终完成并调试通过了程序,从中收获颇丰。现在,作者将程序代码公开,供他人参考,程序在DOS7.1操作系统环境下运行。
《
汇编
语言》
王爽
第三版实验16
本文详细分析了在《
汇编
语言》
王爽
第三版实验16中遇到的
问题
,即安装7ch中断程序后,测试程序调用子程序时找不到正确入口。
问题
源于中断向量表和子程序入口地址的不匹配。文中提出了两种解决方法:一是使用`org 200h`调整程序起始位置;二是利用20h:0的内存地址形式保持偏移地址一致。此外,还提供了
一个
测试程序,实现了清屏、设置颜色和滚动屏幕等功能。
王爽
《
汇编
语言》第6章 实验5 第6题 疑问
在
王爽
《
汇编
语言》第6章实验5的程序中,遇到
一个
bug:当cx等于3时,执行add bx,2后程序出现意外跳转。已知循环用于将数组a的元素压入堆栈,但具体
问题
原因尚未查明。 111253097,10297334,IntelliJ IDEA 使用教程:目录篇,['IntelliJ IDEA', '版本控制', '数据库连接', '开发工具', '调试']
汇编语言
21,500
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章