这是 软盘 引导操作系统的安装和 引导程序的部分代码 , start 开始的代码 有几个问题 求解答
start:
push cs
pop es
mov bx,offset copy_start
mov al,1
mov ah,3
mov cl,1
mov ch,0
mov dl,0
mov dh,0
int 13h ; 把 copy_start标号代码 写入1扇区
mov bx,0
mov al,2
mov ah,3
mov cl,2
mov ch,0
mov dl,0
mov dh,0
int 13h ; <-- 这段 写入 作什么的 书上说 大于512k 要写其他扇区 怎么算 写入哪个扇区 , 怎么写
copy_start:
mov ax,07c00h
mov es,ax
mov bx,0 ; <--这里 好像错了吧 地址是 0:07c00h 这里写成了 7c00h:0
mov al,2
mov ah,2
mov cl,2
mov ch,0
mov dl,0
mov dh,0
int 13h
mov ax,07c00h
push ax
mov ax,0
push ax
retf ; <-- 上面5行 什么意思 干嘛要 retf[/color]
copy_end:nop
code ends
end start
------解决方案--------------------
呃 db 510-(offset copy_end-offset copy_start) dup(0)做的就是填充的事它用510减去整个程序所用的字节数得到的
就是要填充的字节数量 在masm里面db n dup (a,b,c```)就是将一组数据以字节的方式重复n次