Sono nuovo di assemblaggio e sto cercando di capire Linux 0.01 codice del bootloader, ma mi sono bloccato in questa parte (a velocità molto beggining :)):istruzione MOV ripetendo x86
.globl begtext, begdata, begbss, endtext, enddata, endbss
.text
begtext:
.data
begdata:
.bss
begbss:
.text
BOOTSEG = 0x07c0
INITSEG = 0x9000
SYSSEG = 0x1000 | system loaded at 0x10000 (65536).
ENDSEG = SYSSEG + SYSSIZE
entry start
start:
mov ax,#BOOTSEG
mov ds,ax
mov ax,#INITSEG
mov es,ax
mov cx,#256
sub si,si
sub di,di
rep
movw
jmpi go,INITSEG
Questo codice (come spiegato in fonte commenti copie) bootloader in una nuova posizione e continua l'esecuzione da go. rep seguito da mov dovrebbe fare questo (copia parte), ma invece l'istruzione mov {w} viene utilizzato.
rep
movw
In ogni libro di riferimento per x86 ho guardato rep viene utilizzato con le istruzioni di stringa.
Can rep può essere utilizzato con tutte le istruzioni di trasferimento dati o solo con stringhe e, in caso affermativo, perché non è menzionato nei manuali di riferimento?
Quindi, durante il montaggio _rep movw_ verrà tradotto in _rep movws_opcode? –
'rep movsw'. Anche se, ancora una volta, questa è una notazione davvero bizzarra (quella nella tua domanda originale). Sai a quale assemblatore è stato scritto? –