当前位置: 技术问答>linux和unix
times 510-($-$$) db “helllo, os world!”是什么意思?希望能解释一下times的用法
来源: 互联网 发布时间:2017-03-26
本文导语: org 07c00h mov ax,cx mov ds,ax mov es,ax call cdy jmp $ cdy: mov ax,bootmassage mov bp,ax mov cx,16 mov ax,01301h mov bx,000ch mov dl,0 int 10h ret bootmassage: db "hello,os world!" times 510-($-$$) db 0 dw 0xaa55 上面一段是《自己动手写操...
org 07c00h
mov ax,cx
mov ds,ax
mov es,ax
call cdy
jmp $
cdy:
mov ax,bootmassage
mov bp,ax
mov cx,16
mov ax,01301h
mov bx,000ch
mov dl,0
int 10h
ret
bootmassage: db "hello,os world!"
times 510-($-$$) db 0
dw 0xaa55
上面一段是《自己动手写操作系统》的例程,我初学,希望各位大侠帮帮忙。
mov ax,cx
mov ds,ax
mov es,ax
call cdy
jmp $
cdy:
mov ax,bootmassage
mov bp,ax
mov cx,16
mov ax,01301h
mov bx,000ch
mov dl,0
int 10h
ret
bootmassage: db "hello,os world!"
times 510-($-$$) db 0
dw 0xaa55
上面一段是《自己动手写操作系统》的例程,我初学,希望各位大侠帮帮忙。
|
times 123 db 0 ; 这个表示填充123个字节的0
所以,times 510-($-$$) db 0 表示填充 510-($-$$) 这么多个字节的0
这里面的$表示当前指令的地址,$$表示程序的起始地址(也就是最开始的7c00),所以$-$$就等于本条指令之前的所有字节数。510-($-$$)的效果就是,填充了这些0之后,从程序开始到最后一个0,一共是510个字节。再加上最后的dw两个字节(0xaa55是结束标志),整段程序的大小就是512个字节,刚好占满一个扇区。
所以,times 510-($-$$) db 0 表示填充 510-($-$$) 这么多个字节的0
这里面的$表示当前指令的地址,$$表示程序的起始地址(也就是最开始的7c00),所以$-$$就等于本条指令之前的所有字节数。510-($-$$)的效果就是,填充了这些0之后,从程序开始到最后一个0,一共是510个字节。再加上最后的dw两个字节(0xaa55是结束标志),整段程序的大小就是512个字节,刚好占满一个扇区。
|
bootmessage: db "hello,os world!"
这是说,紧跟着上一行ret指令的后面保存一个字符串,并且把它的地址标记为bootmessage,前面就可以使用这个字符串了(mov ax,bootmessage)
times 510-($-$$) db 0 在刚才的字符串后面填充0
这是说,紧跟着上一行ret指令的后面保存一个字符串,并且把它的地址标记为bootmessage,前面就可以使用这个字符串了(mov ax,bootmessage)
times 510-($-$$) db 0 在刚才的字符串后面填充0