获取硬盘信息

lds把存储器地址存到16位寄存器中。


;// 取第一个硬盘的信息(复制硬盘参数表)。
;// 第1 个硬盘参数表的首地址竟然是中断向量41 的向量值!而第2 个硬盘
;// 参数表紧接第1 个表的后面,中断向量46 的向量值也指向这第2 个硬盘
;// 的参数表首址。表的长度是16 个字节(10)。
;// 下面两段程序分别复制BIOS 有关两个硬盘的参数表,90080 处存放第1 个
;// 硬盘的表,90090 处存放第2 个硬盘的表。
    mov    ax,0000h
    mov    ds,ax
    lds    si,ds:[4*41h]        ;// 取中断向量41 的值,也即hd0 参数表的地址 ds:si
    mov    ax,INITSEG
    mov    es,ax
    mov    di,0080h        ;// 传输的目的地址: 9000:0080 -> es:di
    mov    cx,10h            ;// 共传输10 字节。
    rep movsb

;// Get hd1 data

    mov    ax,0000h
    mov    ds,ax
    lds    si,ds:[4*46h]        ;// 取中断向量46 的值,也即hd1 参数表的地址 -> ds:si
    mov    ax,INITSEG
    mov    es,ax
    mov    di,0090h        ;// 传输的目的地址: 9000:0090 -> es:di
    mov    cx,10h
    rep movsb


版权声明:本文为wyyy2088511原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。