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