注册 登录
编程论坛 汇编论坛

谁能帮我解读一下这个程序

brantyou 发布于 2009-11-04 23:37, 585 次点击
这个程序是用在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
1 回复
#2
onepc2009-11-06 08:25
我也不清楚,帮你顶下。。现在看到dos汇编就头晕,那些中断什么的基本不清楚
1