use16
org 100h
jmp main
msg db 'Windows','$'
main:
mov ah,9
mov dx,msg
int 21h
file 'example.bin'
mov ax,4c00
int 21h
Проблема с FASM
Нужно осуществить выполнение Bin программы из программы на FASM.
Надоел уже!
Ну дак как?
вы уже составили алгоритм ?
а писать код за вас никто не будет .
Код:
Код:
org 0h
jmp main
msg db 'Bin is started!','$'
main:
mov ah,9
mov dx,msg
int 21h
mov ax,4c00
int 21h
jmp main
msg db 'Bin is started!','$'
main:
mov ah,9
mov dx,msg
int 21h
mov ax,4c00
int 21h
кажется вы вообще плохо понимаете как работает компьютер .
если человек умеет писать программы это ещё не значит , что он программист . )
в том коде первичного загрузчика , что я вам дал показано как загружается бинарник и как передаётся ему управление , только вы ничего не поняли .
Я не смогу весь код сюда вылить) У вас скайп или VK есть?
архивируете и присобачиваете к сообщению .
Код:
macro align value { db value-1 - ($ + value-1) mod (value) dup 0}
HEADS = 1
SPT = 32
Begin:
file "boot.bin",512
file "kernel.bin"
align 512
align HEADS*SPT*512
HEADS = 1
SPT = 32
Begin:
file "boot.bin",512
file "kernel.bin"
align 512
align HEADS*SPT*512
Код:
use16
org 7c00h
jmp start
include 'libs\if.inc'
include 'libs\dos.inc'
start:
xor eax, eax
xor esi, esi
xor edi, edi
mov ds, ax
mov es, ax
mov bp, 0x7c00
mov ax, 0x0003
cls
print help
input_var symbol
cmp [symbol],'y'
jz con
jnz en
con:
jmp far 0h:7e00h
help db 'ekDOS BootLoader',0Ah,0Dh
db 'Do you want to run ekOS?',0
symbol db 0,0
msg db 'Start from hardDrive...',0ah,0dh,0
en:
print msg
shutdown
times(512-2-($-07c00h)) db 0
db 055h,0AAh
org 7c00h
jmp start
include 'libs\if.inc'
include 'libs\dos.inc'
start:
xor eax, eax
xor esi, esi
xor edi, edi
mov ds, ax
mov es, ax
mov bp, 0x7c00
mov ax, 0x0003
cls
print help
input_var symbol
cmp [symbol],'y'
jz con
jnz en
con:
jmp far 0h:7e00h
help db 'ekDOS BootLoader',0Ah,0Dh
db 'Do you want to run ekOS?',0
symbol db 0,0
msg db 'Start from hardDrive...',0ah,0dh,0
en:
print msg
shutdown
times(512-2-($-07c00h)) db 0
db 055h,0AAh
Код:
org 7e00h
jmp start
include 'libs\if.inc'
include 'libs\dos.inc'
msg 'Kernel is Started!',0ah,0dh,0
start:
print msg
jmp start
include 'libs\if.inc'
include 'libs\dos.inc'
msg 'Kernel is Started!',0ah,0dh,0
start:
print msg
file 'example.bin'
align 512
и в kernel.bin добавляю
call far 0h:0700h
то нефига не происходит!
Код example.bin
Код:
org 700h
jmp start
include 'libs\if.inc'
include 'libs\dos.inc'
msg 'Hello World',0ah,0dh,0
start:
print msg
ret
jmp start
include 'libs\if.inc'
include 'libs\dos.inc'
msg 'Hello World',0ah,0dh,0
start:
print msg
ret
и что вы с этим кодом дальше делаете .
Первый код объединяет в один образ! Затем через UltraISO засовываю в бутсектор диска. Затем эмулирую в VBOX
так в бутсектор или таки в досе запускаете ? по инклюдам видно , что в досе . и "Я то из MS-DOS пробую то)" - ваши слова . откуда бутсектор взялся ?
В бутсектор! Я так запускаю без дополнений все пашет)
Код:
org 100h
jmp begin
msg2 db 'Wellcome',0ah,0dh
include 'libs\if.inc'
include 'libs\api.inc'
begin:
ek_print msg2
ret
jmp begin
msg2 db 'Wellcome',0ah,0dh
include 'libs\if.inc'
include 'libs\api.inc'
begin:
ek_print msg2
ret
Код:
org 100h
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
file 'hello.bin'
int 20h
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
file 'hello.bin'
int 20h
Я пробовал по другому но результат тот же!
Цитата: GCSoft
В бутсектор! Я так запускаю без дополнений все пашет)
тут телепатов нет разгадывать что , когда и как вы запускаете .
Цитата: GCSoft
а как компю со смещение 150 и втыкаю в программу
Код:
org 100h
какое-какое смещение ? 150 при org 100h ? в сом формате ? :)
программирование на асме явно не для вас . может лучше дельфи или билдер ? :)
Цитата: GCSoft
Ладно, задачка попроще: ...
занятно . у меня ангельское терпение , но оно только что кончилось .
Код:
-----hello.bin----------
org 150h
jmp begin
msg2 db 'Wellcome',0ah,0dh
include 'libs\if.inc'
include 'libs\api.inc'
begin:
ek_print msg2
ret
org 150h
jmp begin
msg2 db 'Wellcome',0ah,0dh
include 'libs\if.inc'
include 'libs\api.inc'
begin:
ek_print msg2
ret
Код:
------example.bin-------------
org 100h
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
file 'hello.bin'
int 20h
org 100h
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
file 'hello.bin'
int 20h
смещение может совпасть , а может и не совпасть . у вас не совпадает - потому и не работает .
а как сделать чтобы совпало? И можно на примере этого...
Код:
org 100h
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
к примеру размер получился 128 байт , тогда смещение в hello.asm должно быть больше или равно 128 + 100h=180h .
возьмём 200h , тогда код такой :
Код:
-----hello.bin----------
org 200h
jmp begin
msg2 db 'Wellcome',0ah,0dh
include 'libs\if.inc'
include 'libs\api.inc'
begin:
ek_print msg2
ret
org 200h
jmp begin
msg2 db 'Wellcome',0ah,0dh
include 'libs\if.inc'
include 'libs\api.inc'
begin:
ek_print msg2
ret
Код:
------example.bin-------------
org 100h
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
times (200h-1-$) db 90h
org 200h
file 'hello.bin'
int 20h
org 100h
jmp main
include 'libs\if.inc'
include 'libs\dos.inc'
msg db 'Wellcome',0
main:
print msg
times (200h-1-$) db 90h
org 200h
file 'hello.bin'
int 20h
В последнем коде ошибка! В 9-ой строке!
ошибка из-за того что размер , а значит и смещение у вас БОЛЬШЕ .