关于int 31h

weeksun23 2010-06-23 08:01:55
MOV DX,OFFSET MAIN+230H
ADD DX,0FH
MOV CL,4
SHR DX,CL
MOV AX,3100H
INT 21H
MAIN是主函数
驻留区DX为什么要这样计算?先加0FH 再右移4位? 什么意思?
OFFSET MAIN+230H又是什么意思?
求解释。
...全文
230 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
weeksun23 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 masmaster 的回复:]
MOV DX,OFFSET MAIN+230H
将标号MAIN+230H处的偏移地址传至DX, offset是伪指令, 用于取得偏移地址
[/Quote]
谢谢!
masmaster 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zara 的回复:]
为什么这么计算,是因为该中断功能要求 DX 中是以“节 (paragraphs)”为单位的驻留部分的大小,包括 psp。
先加 0fh 是为了保留最后一个不足一节的那个内容;再右移 4 位,是将前面计算时的字节单位转换为节单位,1 节 = 16 字节 = 10h 字节。
那个 MAIN+230h,其中的 230h 是怎么来的,要看你具体程序的结构了。
[/Quote]
学习啦~~
masmaster 2010-06-24
  • 打赏
  • 举报
回复
MOV DX,OFFSET MAIN+230H
将标号MAIN+230H处的偏移地址传至DX, offset是伪指令, 用于取得偏移地址
weeksun23 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 peterl_z_y 的回复:]
我想说你标题都打错了,是INT21H的31H功能
[/Quote]
哈哈 ,不好意思打错了,应该是关于INT 21H的31号功能
weeksun23 2010-06-24
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zara 的回复:]
为什么这么计算,是因为该中断功能要求 DX 中是以“节 (paragraphs)”为单位的驻留部分的大小,包括 psp。
先加 0fh 是为了保留最后一个不足一节的那个内容;再右移 4 位,是将前面计算时的字节单位转换为节单位,1 节 = 16 字节 = 10h 字节。
那个 MAIN+230h,其中的 230h 是怎么来的,要看你具体程序的结构了。
[/Quote]
谢谢你,我明白了!另外,MAIN+230H中的230H怎么来不用解释,你只需解释MOV DX,OFFSET MAIN+230H这条语句的意思就行了
zara 2010-06-24
  • 打赏
  • 举报
回复
为什么这么计算,是因为该中断功能要求 DX 中是以“节 (paragraphs)”为单位的驻留部分的大小,包括 psp。
先加 0fh 是为了保留最后一个不足一节的那个内容;再右移 4 位,是将前面计算时的字节单位转换为节单位,1 节 = 16 字节 = 10h 字节。
那个 MAIN+230h,其中的 230h 是怎么来的,要看你具体程序的结构了。
jizhongqing 2010-06-23
  • 打赏
  • 举报
回复
这问题得查中断手册,没人记得住那么多中断的参数和输出结果
runcoder 2010-06-23
  • 打赏
  • 举报
回复
恩,我觉得也是。可以查AH的31H命令
peterl_z_y 2010-06-23
  • 打赏
  • 举报
回复
我想说你标题都打错了,是INT21H的31H功能

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧