技术宅的结界

 找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 2745|回复: 3
收起左侧

【虚拟机专用】软盘版DOS 8.0

[复制链接]

1093

主题

2645

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
238
威望
506 点
宅币
21997 个
贡献
45977 次
宅之契约
0 份
在线时间
2110 小时
注册时间
2014-1-26
发表于 2014-1-26 20:38:17 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有帐号?立即注册→加入我们

x
就是给虚拟机用的软盘镜像,里面有一个用XP格式化产生的带DOS系统的软盘镜像。
笔者把以下一些东西放了进去:
  CWSDPMI.EXE(为了让DOS版NASM运行,必须有这个文件。硬盘的C盘必须可用,否则NASM还是无法运行)
  NASM.EXE(NASM汇编器的DOS版。注意必须有CWSDPMI.EXE否则无法运行)
  DEBUG.EXE(经典16位调试器,这个调试器只能在DOS 5.0下运行。)
  DEBUG32.EXE(经典16位调试器,支持32位指令集,只能在DOS 5.0下运行。)
  FORMAT.COM(格式化程序,负责给磁盘进行格式化,只能在DOS 7.10下运行。)
  GETVER.COM(笔者编写,取得DOS版本号并显示出来。源码见二楼。)
  DOSVER5.COM(笔者编写,改DOS版本号为0x0005,也就是5.0。注意是个内存驻留程序,运行一次要消耗掉一部分内存且无法释放源码见二楼。)
  DOSVER7A.COM(笔者编写,改DOS版本号为0x0A07,也就是7.10。注意是个内存驻留程序,运行一次要消耗掉一部分内存且无法释放源码见二楼。)

要想使用DEBUG.EXE或DEBUG32.EXE,请先运行一次DOSVER5.COM使DOS版本号被改成5.0。
要想使用FOTMAT.COM,请先运行一次DOSVER7A.COM使DOS版本号被改成7.10。

下载地址:
这是没压缩过的,下下来就能用。
http://pan.baidu.com/share/link? ... 4&uk=2432784531
这是压缩过的,下下来还得解压了才能用。
http://pan.baidu.com/share/link? ... 6&uk=2432784531
小提示:你可以把IMG后缀改成ISO,用WinRAR打开,把里面的文件都提取出来。不过呢,你可不能把文件再塞回去,塞不回去的!除非你们不是用WinRAR塞文件。
看看内容都有些什么。
DOS.PNG
回复

使用道具 举报

1093

主题

2645

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
238
威望
506 点
宅币
21997 个
贡献
45977 次
宅之契约
0 份
在线时间
2110 小时
注册时间
2014-1-26
 楼主| 发表于 2014-1-26 20:39:16 | 显示全部楼层
算了,还是把源码都贴出来吧。
GETVER的源码:


org 0x100
bits 16


Start:
mov ax,0x3000  ;取得版本号
int 0x21
push ax     ;暂存住版本号
mov ah,0     ;显示主版本号
call ShowNum
mov dl,'.'    ;显示点号
mov ah,2
int 0x21
pop ax      ;重新取得版本号
mov al,ah
mov ah,0     ;显示副版本号
call ShowNum
int 0x20     ;退出


;显示数字的程序:
;  ax=数字
;结果:
;  al,dx被破坏
;  ah=2


ShowNum:
  xor cx,cx
.ToDec:
  xor dx,dx
  div word[.10]
  push dx
  inc cx
  or ax,ax
  jnz .ToDec
  mov ah,2
.NumOut:
  pop dx
  add dx,'0'
  int 0x21
  loop .NumOut
  ret
.10 dw 10

1093

主题

2645

帖子

7万

积分

用户组: 管理员

一只技术宅

UID
1
精华
238
威望
506 点
宅币
21997 个
贡献
45977 次
宅之契约
0 份
在线时间
2110 小时
注册时间
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

1

主题

110

帖子

114

积分

用户组: 小·技术宅

UID
7535
精华
0
威望
0 点
宅币
4 个
贡献
0 次
宅之契约
0 份
在线时间
8 小时
注册时间
2021-10-16
发表于 2022-5-13 17:03:52 | 显示全部楼层

楼主大能,感谢感谢

本版积分规则

QQ|申请友链||Archiver|手机版|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2022-5-21 17:21 , Processed in 0.038923 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表