v4567
24.05.2008, 15:02
Здравствуйте форумчане!
Помогите разобраться, необходимо загрузить программу в оперативную память при включении компьютера. Программа работает без операционной системы. Она должна загрузиться не в тот сегмент в который БИОС загрузит мой загрузчик, т.к. БИОС грузит загрузчик в нулевой сегмент по смещению 7C00h это где-то 32 кбайта, а моя программа 40кбайт поэтому в этот сегмент она не поместиться, загрузчик я написал. Вопрос как осуществить дальний прыжок в другой сегмент командой jmp что-бы передать управление моей программе, у меня что-то ничего не получается, и в какой сегмент загружать мою программу, повторяю программа работает без операционной системы, да забыл написать загружаюсь я с дискеты, загрузчик и п программа находятся на дискете.
Привожу код загрузчика, там где вопросы непонятно что писать.
; zagr.asm - Загрузчик.
cseg segment para 'code'
org 100h
begin proc near
assume cs:cseg, ds:cseg, ss:cseg
org 7c00h
jmp start
start:
cli
push ax
push dx
push cx
push bx
push es
mov ax,cs
mov ds,ax
;--------------Сброс дисковой системы.--------------------
mov cx,3d
pov:
mov ah,0h
mov dl,0h
int 13h
cmp ah,0h
jz povtor1
loop pov
pop es
pop bx
pop cx
pop dx
pop ax
sti
;--------------Чтение с дискеты.--------------------------
povtor1:
mov ax,??????h
mov es,ax
mov ch,0h
mov ah,2h
mov al,8d
mov cl,2h
mov dh,0h
mov dl,0h
mov bx,??????h
int 13h
pop es
pop bx
pop cx
pop dx
pop ax
jmp dword ptr [perex]
perex dd ???????h
begin endp
cseg ends
end begin
В регистр ax а потом и в es заносится адрес сегмента в bx смещение, и осуществляется дальний переход, собственно что писать вместо вопросов какие адреса?
Форумчане помогите пожалуйста, за помощь заранее благодарен.
Помогите разобраться, необходимо загрузить программу в оперативную память при включении компьютера. Программа работает без операционной системы. Она должна загрузиться не в тот сегмент в который БИОС загрузит мой загрузчик, т.к. БИОС грузит загрузчик в нулевой сегмент по смещению 7C00h это где-то 32 кбайта, а моя программа 40кбайт поэтому в этот сегмент она не поместиться, загрузчик я написал. Вопрос как осуществить дальний прыжок в другой сегмент командой jmp что-бы передать управление моей программе, у меня что-то ничего не получается, и в какой сегмент загружать мою программу, повторяю программа работает без операционной системы, да забыл написать загружаюсь я с дискеты, загрузчик и п программа находятся на дискете.
Привожу код загрузчика, там где вопросы непонятно что писать.
; zagr.asm - Загрузчик.
cseg segment para 'code'
org 100h
begin proc near
assume cs:cseg, ds:cseg, ss:cseg
org 7c00h
jmp start
start:
cli
push ax
push dx
push cx
push bx
push es
mov ax,cs
mov ds,ax
;--------------Сброс дисковой системы.--------------------
mov cx,3d
pov:
mov ah,0h
mov dl,0h
int 13h
cmp ah,0h
jz povtor1
loop pov
pop es
pop bx
pop cx
pop dx
pop ax
sti
;--------------Чтение с дискеты.--------------------------
povtor1:
mov ax,??????h
mov es,ax
mov ch,0h
mov ah,2h
mov al,8d
mov cl,2h
mov dh,0h
mov dl,0h
mov bx,??????h
int 13h
pop es
pop bx
pop cx
pop dx
pop ax
jmp dword ptr [perex]
perex dd ???????h
begin endp
cseg ends
end begin
В регистр ax а потом и в es заносится адрес сегмента в bx смещение, и осуществляется дальний переход, собственно что писать вместо вопросов какие адреса?
Форумчане помогите пожалуйста, за помощь заранее благодарен.