0xAA55 发表于 2014-1-26 20:38:17

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

就是给虚拟机用的软盘镜像,里面有一个用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?shareid=872924464&uk=2432784531
这是压缩过的,下下来还得解压了才能用。
http://pan.baidu.com/share/link?shareid=870635096&uk=2432784531
小提示:你可以把IMG后缀改成ISO,用WinRAR打开,把里面的文件都提取出来。不过呢,你可不能把文件再塞回去,塞不回去的!除非你们不是用WinRAR塞文件。
看看内容都有些什么。

0xAA55 发表于 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

0xAA55 发表于 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,   ;取得旧的DOS中断入口
mov ,ax
mov ax,
mov ,ax
cli
mov word,DOSVerInt;改DOS中断入口
mov ,cs
sti

mov dx,Install     ;內存駐留
int 0x27

xiawan 发表于 2022-5-13 17:03:52


楼主大能,感谢感谢
页: [1]
查看完整版本: 【虚拟机专用】软盘版DOS 8.0