- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
设置dos中断新功能精选
[返回首页] - [索引页面] - [文章列表]
主题:怎样增加一个自定义的系统功能调用(内详)
7、请编写一DOS程序,为INT21H增加AH=0FFH子功能,作用是将BL中的非压缩BCE码转换为ASCII码,以方便其他程序的使用。
其中的BCD码转换我自已会.
关键是这个DOS程序的结构是怎样的,
写好后要放在什么位置.
使使我们在汇编中用语句
mov ah 0ffh
int 21h
可以调用到这个子函数.
回复人:cnvb(千里冰封) 一级(初级) 信誉:100 2004-12-23 16:58:42 得分:10
1.保存INT21中断的原程序调用地址
2.用自己所写的程序地址替换原INT21程序地址
3.当INT21被调用时检测AH是不是OFFH如果是的话就调用那个转换程序,不是的话转INT21原地址继续运行.
这只是偶个人意见,不是之处还请大虾们指教!!!
TOP
回复人:kokblack(人人为我,我为人人) 四级(中级) 信誉:99 2004-12-23 17:33:14 得分:0
这个方法和自己写中断向量表的方法差不多。就是不知具体用什么指令!
TOP
回复人:jk88811(文哥) 二级(初级) 信誉:98 2004-12-24 0:59:31 得分:10
用INT 21H 里的25H和35H 功能保存原中断向量和修改成你的中断处理程序入口地址,然后就可以调用中断啦!
具体找课本吧
TOP
回复人:awcx(高高在上) 一级(初级) 信誉:99 2004-12-25 11:09:07 得分:0
高手
TOP
回复人:kokblack(人人为我,我为人人) 四级(中级) 信誉:99 2004-12-25 12:05:50 得分:0
不太同意 jk88811(文哥)的说法,他好像是要自己定义一个21h的一个功能号吧。
TOP
回复人:jk88811(文哥) 二级(初级) 信誉:98 2004-12-25 12:17:54 得分:0
难道楼主的意思不是这样吗?
mov ah 0ffh
int 21h
可以调用到这个子函数.
这是楼主要的效果呀
TOP
回复人:hejunhard(开坦克去买菜) 一级(初级) 信誉:100 2004-12-26 11:31:14 得分:0
感谢各位帮忙,我按大家意思写了如下程序,错在哪?
DAT SEGMENT PARA DAT
ADDRESS DW ?
DAT ENDS
CODE SEGMENT PARA CODE
ASSUME DS:DAT,CS:CODE
MAIN PROC FAR
START: PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DAT
MOV DS,AX
MOV AL,21H
MOV AH,35H
INT 21H ;取原中断向量到BX中
MOV ADDRESS,BX;保存此中断向量
PUSH DS
MOV AX,0
MOV DS,AX
LEA DX,DOS
MOV AL,21H
MOV AH,25H
INT 21;设置新的中断向量
POP DS
MOV BL,8
MOV AH,0FFH;调用自定义中断处理子函数
INT 21H
RET
MAIN ENDP
DOS PROC FAR
CMP AH,0FFH
JE CHANGE
PUSH CS
JMP ADDRESS ;跳到原中断向量处执行
CHANGE:ADD BL,30H;转成ASCII码
RET
DOS ENDP
CODE ENDS
END START
TOP
回复人:clumsy(Kyrie eleison) 一星(中级) 信誉:270 2004-12-26 12:07:49 得分:20
中断向量是 4 字节的远程入口, 你获取时只保存了 offset, 转移到原来的中断向量, 以及自己例程的返回的方法也就相应地错了. 自己的代码, 既然重置了中断向量, 要么在自己的程序结束前恢复原来的中断入口, 要么自己的程序以驻留方式结束, 而不能和普通程序似的简单地终止, 否则, 后面运行的程序很可能崩溃, 在你这里, 则肯定是会有问题的!
TOP
回复人:hejunhard(开坦克去买菜) 一级(初级) 信誉:100 2004-12-26 12:32:02 得分:0
什么是驻留方式结束,为什么以这种方式就不会崩溃.
TOP
回复人:hejunhard(开坦克去买菜) 一级(初级) 信誉:100 2004-12-26 13:39:10 得分:
文档评论(0)