mov si, p mov di, 07C00h mov cx,512 rep movsb код копирует 512 байт с адреса переменной p по адресу 07C0h:0000h (0000h:07C00h) а как скопировать по адресу 2000h:0000h ?
а тут es куда показывает? вообще rep movsb производит пересылку cx байтов из буфера на который указывает ds:si в буфер, на который указывает es:di тоесть если надо переслать 10 байт из памяти по адресу 1000:1000 в память по адресу 500:500, то достаточно сделать Код (Text): mov cx,10 push 1000h push 500h pop es pop ds mov di,500h mov si,1000h rep movsb
в общем задача такая, ну что из буфера скопировать код в произвольный участок памяти и передать на него управление вот что вышло Код (Text): org 100h use16 jmp start BootSector file '1.bin' start: cli mov si, BootSector mov di, 7c00h mov cx, 512 rep movsb sti jmp 7C00h этот код работает, но тут надо указываются физические адреса, а мне нужно указывать в формате сегмент:смещение, так как например адрес 2000h:0000h = 20000h а это уже за пределами размера регистра
Или этот код вообще копируется и выполняется в пределах текущего сегмента программы? ))))))) Блин чувствую чушь написал какую-то )))))
друг, ну тебе уже показали, что надо изменить сегментные регистры. Даже показали как. Что тебе еще мешает вставить показанный код себе? Религия не позволяет?
вроде разобрался, только вот скажите, почему jmp 0:07C00h и jmp 07C0h:0 прыгают не в одно и тоже место? правка. опс, извиняюсь, все работает, просто org 7c00h стояло