谁能帮我解读一下这个程序
这个程序是用在DOS下读取MBR信息的,其中某些模块我不是很明白,哪位高手可以帮我解说解说,最好就能够把每一个块和一些相对较难的解释一下。虽然我知道这个程序是以十六进制输出,结果如图:
程序:
;=====================================================================
;文件名: mbr.asm
;作者: Harry@Lee
;编译器: Nasm
;编译指令: nasmw fs.asm -o fs.exe
;创建日期: 2007.11.21
;简介: 用于读取硬盘MBR引导记录
;=====================================================================
%macro print 1
mov ah,02h
mov dl,%1
int 21h
%endmacro
;=====================================================================
[section .data]
buffer resb 512 ;512 Byte 缓冲区
;=====================================================================
[section .text]
global main
main:
mov ax,0x0201 ;ah=02(功能号02H) al=01(读取一个扇区内容)
mov bx,[buffer]
mov cx,0x0001
mov dx,0x0080 ;磁头号:0 驱动器号:0
pusha
int 0x13
popa
mov cx,512 ;设置外循环次数
mov di,1
display:
mov dh,[bx]
mov si,2 ;设置内循环次数
rotate:
ror dh,4h
mov dl,dh
and dl,0fh
cmp dl,09h
jbe jmp1 ;小于等于9
add dl,07h
jmp1:
add dl,30h
mov ah,02h
int 21h
dec si
jnz rotate
print 20h ;打印"空格"
cmp di,16
jnz unbr ;di!=15时跳
cmp cx,1
jz unbr
print 0ah
print 0dh
mov di,0 ;清零
unbr:
inc di
inc bx
loop display
exit:
mov ah,4ch
int 21h
end