软盘(1.44M)引导区程序源码
来源:互联网 发布:mac 系统占用空间太大 编辑:程序博客网 时间:2024/05/17 05:11
软盘(1.44M)引导区程序源码
答:我有一个BIN文件(引导扇区用),求牛人反汇编成汇编代码
http://tieba.baidu.com/f?kz=789586015
;File Name : boot.com
;代码长度(Bytes): 200h
;
.386
.model tiny
code segment byte public 'CODE' use16
assume cs:code, ds:code
org 100h
;Physical Sector:Cyl 0,Side 0,Sector 1
public start
start proc near
jmp short @13E
nop
db 'MSWIN4.1';OEM ID 制造商
dw 512 ;Bytes per Sector 比特数/扇区
db 1 ;Sectors per cluster 扇区数/簇
dw 1 ;Reserved Sectors at beginning 头部保留扇区数
db 2 ;FAT Copies 文件分配表份数
dw 224 ;Root directory entries 根目录个数
dw 2880 ;Total Sectors on disk 磁盘总扇区数
db 0F0H ;Media descriptor byte 介质描述符
dw 9 ;Sectors per FAT 扇区数/每份分配表
dw 18 ;Sectors per track 扇区数/每簇
dw 2 ;Sides 面数
dd 0 ;Special hidden Sectors 特别隐含扇区数
dd 0 ;(Unused)Big total number of Sectors (未用)大总扇区数
dw 0 ;Physical drive number 物理驱动器数
db 29h ;Extended Boot Record Signature 扩展引导记录标记
dd 1B271AF7h ;Volume Serial Number 卷连续数
db 'PM',9 dup(20h) ;Volume Label 卷标
db 'FAT12' ;File System ID 文件系统标志符
db 3 dup(20h) ;(Unused) 未用
@13E:
xor cx, cx
mov ss, cx
mov sp, 7BFCh
push ss
pop es
mov bp, 78h
lds si, [bp+0]
push ds
push si
push ss
push bp
mov di, 522h
mov [bp+0], di
mov [bp+2], cx
mov cl, 0Bh
cld
rep movsb
push es
pop ds
mov bp, 7C00h
mov byte ptr [di-2], 0Fh
cmp [bp+24h], cl
jge short @18D
mov ax, cx
cwd
call sub_2F1
sub bx, 3Ah
mov eax, ds:7C1Ch
@17A:
cmp eax, [bx]
mov dl, [bx-4]
jnz short @188
or dl, 2
mov [bp+2], dl
@188:
add bl, 10h
jnb short @17A
@18D:
xor cx, cx
inc byte ptr ds:7DD8h
@193:
mov al, [bp+10h]
cbw
mul word ptr [bp+16h]
add ax, [bp+1Ch]
adc dx, [bp+1Eh]
add ax, [bp+0Eh]
adc dx, cx
mov si, [bp+11h]
pusha
mov [bp-4], ax
mov [bp-2], dx
mov ax, 20h
mul si
mov bx, [bp+0Bh]
add ax, bx
dec ax
div bx
add [bp-4], ax
adc [bp-2], cx
popa
@1C3:
mov di, 700h
call sub_2F1
jb short @209
@1CB:
cmp [di], ch
jz short @1E6
pusha
mov cl, 0Bh
mov si, 7DD8h
repe cmpsb
popa
jz short @217
dec si
jz short @1E6
add di, 20h
cmp di, bx
jb short @1CB
jmp short @1C3
@1E6:
dec byte ptr ds:7DD8h
jnp short @193
mov si, 7D7Fh
@1EF:
lodsb
cbw
add si, ax
@1F3:
lodsb
cbw
inc ax
jz short @204
dec ax
jz short @20E
mov ah, 0Eh
mov bx, 7
int 10h ; - VIDEO - 写字符并移动光标 (TTY WRITE)
; AL = 字符, BH = 显示页码 (alpha 模式)
; BL = 字符前景色 (图形模式)
jmp short @1F3
@204:
mov si, 7D82h
jmp short @1EF
@209:
mov si, 7D80h
jmp short @1EF
@20E: ; KEYBOARD -
int 16h
pop si
pop ds
db 66h, 8Fh, 04 ;pop large dword ptr [si]
int 19h ; 系统重启 DISK BOOT
;
@217:
mov si, 7D81h
mov di, [di+1Ah]
lea ax, [di-2]
mov cl, [bp+0Dh]
mul cx
add ax, [bp-4]
adc dx, [bp-2]
mov cl, 4
call sub_2F2
jb short @209
db 0EAh, 0, 2, 70h, 0 ;jmp far ptr 70h:200h
start endp ;
;
@237:
push dx
push ax
push es
push bx
push 1
push 10h
xchg ax, cx
mov ax, [bp+18h]
mov ds:526h, al
xchg ax, si
xchg ax, dx
xor dx, dx
div si
xchg ax, cx
div si
inc dx
xchg cx, dx
div word ptr [bp+1Ah]
mov dh, dl
mov ch, al
ror ah, 2
or cl, ah
mov ax, 201h
cmp byte ptr [bp+2], 0Eh
jnz short @26B
mov ah, 42h
mov si, sp
@26B:
mov dl, [bp+24h]
int 13h ; DISK -
popa
popa
jb short locret_27E
inc ax
jnz short @278
inc dx
@278:
add bx, [bp+0Bh]
dec cx
jnz short @2F5
locret_27E:
retn
;
db 3
;offset 280h
db 18h, 1, 27h
;offset 283h
db 0Dh, 0Ah, 'Invalid system disk',0FFh
db 0Dh, 0Ah, 'Disk I/O error',0FFh
db 0Dh, 0Ah, 'Replace the disk, and then press any key',0Dh,0Ah,0
db 0
;offset 2d8h
db 'IO', 6 dup(20h), 'SYS'
;offset 2e3h
db 'MSDOS', 3 dup(20h), 'SYS'
db 7Fh, 1, 0
sub_2F1 proc near
inc cx
sub_2F1 endp ;
sub_2F2 proc near
mov bx, 700h
@2F5:
pusha
db 66h, 6ah, 0 ;push large 0
jmp @237
sub_2F2 endp
db 2 dup(0), 55h, 0AAh
code ends
end start
- 软盘(1.44M)引导区程序源码
- 用汇编写软盘引导程序
- 3.5寸1.44M软盘结构
- 3.5寸1.44M软盘结构
- 3.5寸1.44M软盘结构
- 1.44M软盘物理扇区顺序
- BIOS是如何从软盘加载系统引导程序的
- 从软盘引导操作系统
- FAT12格式引导软盘
- [转]3.5寸1.44M软盘结构,容量和分配
- 3.5寸1.44M软盘结构,容量和分配
- FAT12软盘引导扇区格式
- 1.44 软盘
- 制作可引导的启动软盘
- 硬盘和软盘的引导扇区结构
- 硬盘和软盘的引导扇区结构
- 用 GRUB 来引导软盘映象——节约软盘介质了
- 小议计算机存储之四.软盘引导自已的操作系统
- 用Mouse_event和Keybd_event来模拟鼠标和键盘
- 生活不是拍电影,不会在关键时刻有个人来救你。
- 系统托盘编程完全指南(一)
- 上海世博会
- 图片一张
- 软盘(1.44M)引导区程序源码
- 异步操作(二)
- 如何在命令行设置IP
- C#仿QQ皮肤
- 第一篇 试水
- creny
- fedora sohu和163源
- 我很笨
- Shell FAQ