|
From: zak100 <zul...@ya...> - 2009-07-12 13:19:15
|
I have also created a stack but its not detected by the linker.
D:\nasm prog>alink -o kernel.exe test_kernel2.obj main1.o
ALINK v1.6 (C) Copyright 1998-9 Anthony A.J. Williams.
All Rights Reserved
Loading file test_kernel2.obj
Loading file main1.o
matched Externs
matched ComDefs
Warning - no stack
D:\nasm prog>
CLI ;Clear Interupt Flag so while setting
;up the stack any interrupt would not be fired.
mov AX,7B0h ;lets have the stack start at 7c00h-256 = 7B00h
mov SS,ax ;SS:SP = 7B0h:256 = 7B00h:256
mov SP,256 ;Lets make the stack 256 bytes.
; Mov ax,CS ;Set the data segment = CS = 0
; suggest you use 0 here!
XOR AX,AX ;Makes AX=0.
MOV ES,AX ;Make ES=0
mov DS,ax
STI ;Set Back the Interupt Flag after
;we finished setting a stack frame.
zak100 wrote:
>
> Hi,
>
> The changes for jump code lies here:
>
> GiveControlToOS: ; PROC
>
> LEA AX,[szDone]
> Call PrintMessage
> CALL GetKey
>
> ; db 0e9h ;Far JMP op code.
> ; dw 512 ;JMP 512 bytes ahead
> ;jmp 0:7E00h;-----------------------------------At this point we are
> going to Kernel code; for including C prog:test_kernel2.asm
>
> ;jmp 7D0h:100h
> jmp 0:7D00h
> ; POP AX ;//Another why to make
> ;the CPU jump to a new place.
> ; POP AX
> ; Push 7E0h ;Push New CS address.
> ; Push 0 ;Push New IP address.
> ;The address that comes out is 7E00:0000.
> ; comment does not match code!
>
>
> ;(512 bytes Higher from were BIOS Put us.)
> retf
> ; you'd want "retf" here.
>
> ;GiveControlToOS EndP
>
> The changes for ..start lie here
>
> ..start:
> extern _K_main
> ;--- test kernel.bin---
>
> ; push cs
> ; push cs
> ; pop ds
> ; pop es
> mov ax, 7E0H
> mov ds,ax
> mov es,ax
> mov si, msg
>
> mov ah, 0Eh
> mov bx, 7
> top:
> lodsb
> cmp al, 0
> jz blackhole
> int 10h
> jmp short top
>
> blackhole:
>
> mov cx,1000
> Delay: Loop Delay
> call _K_main; this is in main.c
> hlt
> jmp blackhole
>
> msg db 'Welcome to the Kernel!', 0
>
> times 0x200-($-$$) db 0
>
> Kindly help me with this.
>
>
> Zulfi.
>
> Frank Kotler-3 wrote:
>>
>> zak100 wrote:
>>> Hi,
>>> I am able to make the binary using alink. partcopy was giving prob but
>>> it
>>> was handled as done previously.
>>>
>>> The steps are provided below:
>>> D:\nasm prog>nasm -f bin -o boot.bin BLKernelT.asm
>>>
>>> D:\NASMPR~1>nasm -f bin -o writeit.com writeit.asm
>>>
>>> D:\NASMPR~1>writeit
>>>
>>> D:\NASMPR~1>del test_kernel2.onj
>>> Could Not Find D:\NASMPR~1\test_kernel2.onj
>>>
>>> D:\NASMPR~1>del test_kernel2.obj
>>>
>>> D:\NASMPR~1>nasm -f obj test_kernel2.asm
>>>
>>> D:\NASMPR~1>dir t*.obj
>>> Volume in drive D is New Volume
>>> Volume Serial Number is 70FD-1D2C
>>>
>>> Directory of D:\NASMPR~1
>>>
>>> 07/10/2009 10:55 AM 642 test_kernel2.obj
>>> 1 File(s) 642 bytes
>>> 0 Dir(s) 22,656,360,448 bytes free
>>>
>>> D:\NASMPR~1>alink -o kernel.bin test_kernel2.obj main1.o
>>> ALINK v1.6 (C) Copyright 1998-9 Anthony A.J. Williams.
>>> All Rights Reserved
>>>
>>> Loading file test_kernel2.obj
>>> Loading file main1.o
>>> matched Externs
>>> matched ComDefs
>>> Warning, no entry point specified
>>
>> You can fix this by adding a "..start:" label where you want your
>> entrypoint.
>>
>>> Warning - no stack
>>
>> segment stack stack
>> resb ???? ; how big do you want? C uses a lot of stack, I understand.
>>
>> The first "stack" is just a name - could be anything. The second "stack"
>> is necessary to let Nasm know what we want. I've been ignoring the
>> warning, and "let the OS take care of the stack". We set up a stack in
>> the bootsector which should be "okay for now". When you get to task
>> switching/multitasking, you'll want to swap stacks for each process (I
>> imagine).
>>
>>> D:\NASMPR~1>alink -o kernel.exe test_kernel2.obj main1.o
>>> ALINK v1.6 (C) Copyright 1998-9 Anthony A.J. Williams.
>>> All Rights Reserved
>>>
>>> Loading file test_kernel2.obj
>>> Loading file main1.o
>>> matched Externs
>>> matched ComDefs
>>> Warning, no entry point specified
>>> Warning - no stack
>>>
>>> D:\NASMPR~1>del kernel.bin
>>>
>>> D:\NASMPR~1>exe2bin kernel.exe kernel.bin
>>
>> Good. This produces a .com file (no matter what we call it) which
>> expects to be loaded at 100h into... whatever segment.
>>
>>> D:\NASMPR~1>partcopy kernel.bin 0 200 -f0 200
>>> Failed to read source at offset 144
>>> D:\NASMPR~1>partcopy kernel.bin 0 144 -f0 200
>>>
>>> D:\NASMPR~1>
>>> -----------------------------------
>>>
>>> But when I rebooted , I got boot sector statment but I am not seeing the
>>> "welcome....." kernel message.
>>> Can somebody plz guide me??
>>
>> Try jumping to 7D0h:100h (assuming that you're writing this to 7E00h).
>>
>> I haven't done anything further with this. I've downloaded source (in
>> assembly) for an exe2bin clone, thinking we might be able to modify it
>> to produce a binary at "org 0", or perhaps create a loader for MZ to be
>> included in our code. Only just begun to look at it.
>>
>> Tyler mentioned using bochs for testing. That would speed up development
>> a *lot* (especially for me, since I don't like rebooting). I've
>> downloaded bochs a couple of times, but never tried it. I've seen too
>> many posts about "my bootsector works in bochs, but not in a real
>> machine" (or vise versa), and "bochs is giving me this error message,
>> what the heck does it mean?"... suggesting that bochs doesn't accurately
>> reflect "real hardware" (can't match *all* of 'em, of course), and has a
>> "learning curve" to it...
>>
>> Any tips, Tyler? Is bochs going to insist on seeing a full 1.44M image
>> before it'll boot from a "fake floppy"? Well, I'll figure it out (or
>> not), if and when I get around to trying it...
>>
>> Best,
>> Frank
>>
>>
>> ------------------------------------------------------------------------------
>> Enter the BlackBerry Developer Challenge
>> This is your chance to win up to $100,000 in prizes! For a limited time,
>> vendors submitting new applications to BlackBerry App World(TM) will have
>> the opportunity to enter the BlackBerry Developer Challenge. See full
>> prize
>> details at: http://p.sf.net/sfu/Challenge
>> _______________________________________________
>> Nasm-users mailing list
>> Nas...@li...
>> https://lists.sourceforge.net/lists/listinfo/nasm-users
>>
>>
>
>
--
View this message in context: http://www.nabble.com/calling-%27C%27-functions-tp24404865p24448606.html
Sent from the nasm-users mailing list archive at Nabble.com.
|