- UID
- 1
- 精华
- 245
- 积分
- 75954
- 威望
- 744 点
- 宅币
- 24254 个
- 贡献
- 46222 次
- 宅之契约
- 0 份
- 最后登录
- 2024-4-26
- 在线时间
- 2298 小时
- QQ
用户组: 管理员
一只技术宅
- UID
- 1
- 精华
- 245
- 威望
- 744 点
- 宅币
- 24254 个
- 贡献
- 46222 次
- 宅之契约
- 0 份
- 在线时间
- 2298 小时
- 注册时间
- 2014-1-26
|
楼主 |
发表于 2014-1-26 20:41:07
|
显示全部楼层
然后是DOSVER5.ASM和DOSVER7A.ASM的源码(只差一句,所以只给一个代码即可)
org 0x100
bits 16
Start:
jmp Install
DOSVerInt:
cmp ah,0x30 ;判斷功能是不是“取版本”
jnz .OldDOSInt ;如果不是,跳转到旧的DOS中断
mov ax,0x0005 ;版本5.0
;mov ax,0x0A07 ;注释掉上面那句,取消注释这一句后,则是版本7.10
iret
.OldDOSInt: ;回到旧的DOS中断0x21
db 0xEA
.OldIntOff dw 0x0000
.OldIntSeg dw 0xFFFF
Install:
xor ax,ax
mov es,ax
mov ax,[es:0x21*4] ;取得旧的DOS中断入口
mov [DOSVerInt.OldIntOff],ax
mov ax,[es:0x21*4+2]
mov [DOSVerInt.OldIntSeg],ax
cli
mov word[es:0x21*4],DOSVerInt;改DOS中断入口
mov [es:0x21*4+2],cs
sti
mov dx,Install ;內存駐留
int 0x27
|
|