Jestem nowy w zespole i staram się zrozumieć Linux 0.01 kod bootloadera, ale utknąłem w tej części (przy bardzo początek :)):powtarzając instrukcja mov 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
Kod ten (jak wyjaśniono w kopie komentarzy źródłowych) bootloader do nowej lokalizacji i kontynuuje wykonywanie od go. rep, po którym następuje movs powinien to zrobić (kopiowanie), ale zamiast tego użyto instrukcji mov {w}.
rep
movw
W każdej książce odniesienia dla x86 Spojrzałem rep jest używany z instrukcją smyczkowych.
Czy rep może być używany z wszystkimi instrukcjami przesyłania danych lub tylko z ciągami znaków, a jeśli tak, dlaczego nie jest wymieniony w podręcznikach referencyjnych?
Tak więc podczas montażu _rep movw_ zostanie przetłumaczone na kod fabryczny _rep movws_? –
'rep movsw'. Jednak, znowu, jest to naprawdę dziwaczna notacja (ta w oryginalnym pytaniu). Czy wiesz, który asembler jest napisany? –