| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 30.07.10 Prihlásený: 27.01.11 Príspevky: 9 Témy: 3 |
Zdravim vospolok
tak ze, mam taky bootloader:
Kód: ;********************************************* ; Boot1.asm ; - A Simple Bootloader ; ; Operating Systems Development Series ;*********************************************
bits 16 ; we are in 16 bit real mode
org 0 ; we will set regisers later
start: jmp main ; jump to start of bootloader
;********************************************* ; BIOS Parameter Block ;*********************************************
; BPB Begins 3 bytes from start. We do a far jump, which is 3 bytes in size. ; If you use a short jump, add a "nop" after it to offset the 3rd byte.
bpbOEM db "My OS " ; OEM identifier (Cannot exceed 8 bytes!) bpbBytesPerSector: DW 512 bpbSectorsPerCluster: DB 1 bpbReservedSectors: DW 1 bpbNumberOfFATs: DB 2 bpbRootEntries: DW 224 bpbTotalSectors: DW 2880 bpbMedia: DB 0xf8 ;; 0xF1 bpbSectorsPerFAT: DW 9 bpbSectorsPerTrack: DW 18 bpbHeadsPerCylinder: DW 2 bpbHiddenSectors: DD 0 bpbTotalSectorsBig: DD 0 bsDriveNumber: DB 0 bsUnused: DB 0 bsExtBootSignature: DB 0x29 bsSerialNumber: DD 0xa0a1a2a3 bsVolumeLabel: DB "MOS FLOPPY " bsFileSystem: DB "FAT12 "
;************************************************; ; Prints a string ; DS=>SI: 0 terminated string ;************************************************; Print: lodsb ; load next byte from string from SI to AL or al, al ; Does AL=0? jz PrintDone ; Yep, null terminator found-bail out mov ah, 0eh ; Nope-Print the character int 10h jmp Print ; Repeat until null terminator found PrintDone: ret ; we are done, so return
;************************************************; ; Reads a series of sectors ; CX=>Number of sectors to read ; AX=>Starting sector ; ES:BX=>Buffer to read to ;************************************************;
ReadSectors: .MAIN mov di, 0x0005 ; five retries for error .SECTORLOOP push ax push bx push cx call LBACHS ; convert starting sector to CHS mov ah, 0x02 ; BIOS read sector mov al, 0x01 ; read one sector mov ch, BYTE [absoluteTrack] ; track mov cl, BYTE [absoluteSector] ; sector mov dh, BYTE [absoluteHead] ; head mov dl, BYTE [bsDriveNumber] ; drive int 0x13 ; invoke BIOS jnc .SUCCESS ; test for read error xor ax, ax ; BIOS reset disk int 0x13 ; invoke BIOS dec di ; decrement error counter pop cx pop bx pop ax jnz .SECTORLOOP ; attempt to read again int 0x18 .SUCCESS mov si, msgProgress call Print pop cx pop bx pop ax add bx, WORD [bpbBytesPerSector] ; queue next buffer inc ax ; queue next sector loop .MAIN ; read next sector ret
;************************************************; ; Convert CHS to LBA ; LBA = (cluster - 2) * sectors per cluster ;************************************************;
ClusterLBA: sub ax, 0x0002 ; zero base cluster number xor cx, cx mov cl, BYTE [bpbSectorsPerCluster] ; convert byte to word mul cx add ax, WORD [datasector] ; base data sector ret ;************************************************; ; Convert LBA to CHS ; AX=>LBA Address to convert ; ; absolute sector = (logical sector / sectors per track) + 1 ; absolute head = (logical sector / sectors per track) MOD number of heads ; absolute track = logical sector / (sectors per track * number of heads) ; ;************************************************;
LBACHS: xor dx, dx ; prepare dx:ax for operation div WORD [bpbSectorsPerTrack] ; calculate inc dl ; adjust for sector 0 mov BYTE [absoluteSector], dl xor dx, dx ; prepare dx:ax for operation div WORD [bpbHeadsPerCylinder] ; calculate mov BYTE [absoluteHead], dl mov BYTE [absoluteTrack], al ret
;********************************************* ; Bootloader Entry Point ;*********************************************
main:
;---------------------------------------------------- ; code located at 0000:7C00, adjust segment registers ;---------------------------------------------------- cli ; disable interrupts mov ax, 0x07C0 ; setup registers to point to our segment mov ds, ax mov es, ax mov fs, ax mov gs, ax
;---------------------------------------------------- ; create stack ;---------------------------------------------------- mov ax, 0x0000 ; set the stack mov ss, ax mov sp, 0xFFFF sti ; restore interrupts
;---------------------------------------------------- ; Display loading message ;---------------------------------------------------- mov si, msgLoading call Print ;---------------------------------------------------- ; Load root directory table ;----------------------------------------------------
LOAD_ROOT: ; compute size of root directory and store in "cx" xor cx, cx xor dx, dx mov ax, 0x0020 ; 32 byte directory entry mul WORD [bpbRootEntries] ; total size of directory div WORD [bpbBytesPerSector] ; sectors used by directory xchg ax, cx ; compute location of root directory and store in "ax" mov al, BYTE [bpbNumberOfFATs] ; number of FATs mul WORD [bpbSectorsPerFAT] ; sectors used by FATs add ax, WORD [bpbReservedSectors] ; adjust for bootsector mov WORD [datasector], ax ; base of root directory add WORD [datasector], cx ; read root directory into memory (7C00:0200) mov bx, 0x0200 ; copy root dir above bootcode call ReadSectors
;---------------------------------------------------- ; Find stage 2 ;----------------------------------------------------
; browse root directory for binary image mov cx, WORD [bpbRootEntries] ; load loop counter mov di, 0x0200 ; locate first root entry .LOOP: push cx mov cx, 0x000B ; eleven character name mov si, ImageName ; image name to find push di rep cmpsb ; test for entry match pop di je LOAD_FAT pop cx add di, 0x0020 ; queue next directory entry loop .LOOP jmp FAILURE
;---------------------------------------------------- ; Load FAT ;----------------------------------------------------
LOAD_FAT: ; save starting cluster of boot image mov si, msgCRLF call Print mov dx, WORD [di + 0x001A] mov WORD [cluster], dx ; file's first cluster ; compute size of FAT and store in "cx" xor ax, ax mov al, BYTE [bpbNumberOfFATs] ; number of FATs mul WORD [bpbSectorsPerFAT] ; sectors used by FATs mov cx, ax
; compute location of FAT and store in "ax"
mov ax, WORD [bpbReservedSectors] ; adjust for bootsector ; read FAT into memory (7C00:0200)
mov bx, 0x0200 ; copy FAT above bootcode call ReadSectors
; read image file into memory (0050:0000) mov si, msgCRLF call Print mov ax, 0x0050 mov es, ax ; destination for image mov bx, 0x0000 ; destination for image push bx
;---------------------------------------------------- ; Load Stage 2 ;----------------------------------------------------
LOAD_IMAGE: mov ax, WORD [cluster] ; cluster to read pop bx ; buffer to read into call ClusterLBA ; convert cluster to LBA xor cx, cx mov cl, BYTE [bpbSectorsPerCluster] ; sectors to read call ReadSectors push bx ; compute next cluster mov ax, WORD [cluster] ; identify current cluster mov cx, ax ; copy current cluster mov dx, ax ; copy current cluster shr dx, 0x0001 ; divide by two add cx, dx ; sum for (3/2) mov bx, 0x0200 ; location of FAT in memory add bx, cx ; index into FAT mov dx, WORD [bx] ; read two bytes from FAT test ax, 0x0001 jnz .ODD_CLUSTER .EVEN_CLUSTER: and dx, 0000111111111111b ; take low twelve bits jmp .DONE .ODD_CLUSTER: shr dx, 0x0004 ; take high twelve bits .DONE: mov WORD [cluster], dx ; store new cluster cmp dx, 0x0FF0 ; test for end of file jb LOAD_IMAGE DONE: mov si, msgCRLF call Print push WORD 0x0050 push WORD 0x0000 retf FAILURE: mov si, msgFailure call Print mov ah, 0x00 int 0x16 ; await keypress int 0x19 ; warm boot computer absoluteSector db 0x00 absoluteHead db 0x00 absoluteTrack db 0x00 datasector dw 0x0000 cluster dw 0x0000 ImageName db "KRNLDR SYS" msgLoading db 0x0D, 0x0A, "Loading Boot Image ", 0x0D, 0x0A, 0x00 msgCRLF db 0x0D, 0x0A, 0x00 msgProgress db ".", 0x00 msgFailure db 0x0D, 0x0A, "ERROR : Press Any Key to Reboot", 0x0A, 0x00 TIMES 510-($-$$) DB 0 DW 0xAA55
a chcem aby mi tento loader nacital moj externy subror nech sa vola tiez KRNLDR ale nie SYS ale COM. Moj externy subor je pisany v Ccku a Assembleri, skompilovany a ulozeny s piponou .com. Vedel by mi niekto poradit ako to mam spravit? Dakujem ten subor, ktory by som chcel citat je pisany v Ccku spojeny s kratkym ASM suborom zkompilovanom v NASM-e a spojen to je cez JLOC na vystup ako .com ten ASM program je tu Kód: [BITS 16] [EXTERN _main] [GLOBAL start] start: call _main ; toto je main funkcia z Ccka jmp $ a tymto sa linkuje Kód: ALL: jadro_ASM.obj jadro_C.obj CBL: 0 0 0 * a s tymto loadrom to funguje, ked ale pouzijem druhy, tak to nejde (menim v nom len meno imagesuboru) Kód: [BITS 16]
? equ 0 ImageLoadSeg equ 1000h
[SECTION .text] [ORG 0]
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Boot sector starts here ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
jmp short start nop bsOemName DB "MyOS" ; 0x03
;;;;;;;;;;;;;;;;;;;;; ;; BPB starts here ;; ;;;;;;;;;;;;;;;;;;;;;
bpbBytesPerSector DW ? ; 0x0B bpbSectorsPerCluster DB ? ; 0x0D bpbReservedSectors DW ? ; 0x0E bpbNumberOfFATs DB ? ; 0x10 bpbRootEntries DW ? ; 0x11 bpbTotalSectors DW ? ; 0x13 bpbMedia DB ? ; 0x15 bpbSectorsPerFAT DW ? ; 0x16 bpbSectorsPerTrack DW ? ; 0x18 bpbHeadsPerCylinder DW ? ; 0x1A bpbHiddenSectors DD ? ; 0x1C bpbTotalSectorsBig DD ? ; 0x20
;;;;;;;;;;;;;;;;;;; ;; BPB ends here ;; ;;;;;;;;;;;;;;;;;;;
bsDriveNumber DB ? ; 0x24 bsUnused DB ? ; 0x25 bsExtBootSignature DB ? ; 0x26 bsSerialNumber DD ? ; 0x27 bsVolumeLabel DB "My OS " ; 0x2B bsFileSystem DB "FAT12 " ; 0x36
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Boot sector code starts here ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
start: cld
;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; How much RAM is there? ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
int 12h ; get conventional memory size (in KBs) shl ax, 6 ; and convert it to paragraphs
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Reserve some memory for the boot sector and the stack ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sub ax, 512 / 16 ; reserve 512 bytes for the boot sector code mov es, ax ; es:0 -> top - 512
sub ax, 2048 / 16 ; reserve 2048 bytes for the stack mov ss, ax ; ss:0 -> top - 512 - 2048 mov sp, 2048 ; 2048 bytes for the stack
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Copy ourself to top of memory ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov cx, 256 mov si, 7C00h xor di, di mov ds, di rep movsw
;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Jump to relocated code ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;
push es push word main retf
main: push cs pop ds
mov [bsDriveNumber], dl ; store boot drive number ;; mov dl, 0 call gotobak mov si, MsgLoadK call printstr call gotoxy ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Reserve some memory for a FAT12 image (6KB max) and load it whole ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov ax, [bpbBytesPerSector] shr ax, 4 ; ax = sector size in paragraphs mov cx, [bpbSectorsPerFAT] ; cx = FAT size in sectors mul cx ; ax = FAT size in paragraphs
mov di, ss sub di, ax mov es, di xor bx, bx ; es:bx -> buffer for the FAT
mov ax, [bpbHiddenSectors] mov dx, [bpbHiddenSectors+2] add ax, [bpbReservedSectors] adc dx, bx ; dx:ax = LBA
call ReadSector
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Reserve some memory for a root directory and load it whole ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov bx, ax mov di, dx ; save LBA to di:bx
mov ax, 32 mov si, [bpbRootEntries] mul si div word [bpbBytesPerSector] mov cx, ax ; cx = root directory size in sectors
mov al, [bpbNumberOfFATs] cbw mul word [bpbSectorsPerFAT] add ax, bx adc dx, di ; dx:ax = LBA
push es ; push FAT segment (2nd parameter)
push word ImageLoadSeg pop es xor bx, bx ; es:bx -> buffer for root directory
call ReadSector
add ax, cx adc dx, bx ; adjust LBA for cluster data
push dx push ax ; push LBA for data (1st parameter)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Look for a COM/EXE program to be load and run ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; mov di, bx ; es:di -> root entries array mov dx, si ; dx = number of root entries mov si, ProgramName ; ds:si -> program name
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Looks for a file with particular name ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Input: DS:SI -> file name (11 chars) ;; ;; ES:DI -> root directory array ;; ;; DX = number of root entries ;; ;; Output: SI = cluster number ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
FindName: mov cx, 11 FindNameCycle: call pcfk ; put char find kernel cmp byte [es:di], ch je FindNameFailed ; end of root directory pusha repe cmpsb popa je FindNameFound add di, 32 dec dx jnz FindNameCycle ; next root entry FindNameFailed: jmp ErrFind FindNameFound: mov si, [es:di+1Ah] ; si = cluster no.
;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Load entire a program ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;
ReadNextCluster: call pclk ; put char load kernel call ReadCluster cmp si, 0FF8h jc ReadNextCluster ; if not End Of File
;;;;;;;;;;;;;;;;;;; ;; Type checking ;; ;;;;;;;;;;;;;;;;;;;
cli ; for stack adjustments
mov ax, ImageLoadSeg mov es, ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Setup and Run program ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; pusha mov dl, 14 call gotobak popa mov ax, es mov es, ax mov ds, ax mov ss, ax xor sp, sp push es push word 0h ;mov dl, [cs:bsDriveNumber] ; let program know boot drive sti retf
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Reads a FAT12 cluster ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Inout: ES:BX -> buffer ;; ;; SI = cluster no ;; ;; Output: SI = next cluster ;; ;; ES:BX -> next addr ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ReadCluster: mov bp, sp
lea ax, [si-2] xor ch, ch mov cl, [bpbSectorsPerCluster] ; cx = sector count mul cx
add ax, [ss:bp+1*2] adc dx, [ss:bp+2*2] ; dx:ax = LBA
call ReadSector
mov ax, [bpbBytesPerSector] shr ax, 4 ; ax = paragraphs per sector mul cx ; ax = paragraphs read
mov cx, es add cx, ax mov es, cx ; es:bx updated
mov ax, 3 mul si shr ax, 1 xchg ax, si ; si = cluster * 3 / 2
push ds mov ds, [ss:bp+3*2] ; ds = FAT segment mov si, [ds:si] ; si = next cluster pop ds
jnc ReadClusterEven
shr si, 4
ReadClusterEven: and si, 0FFFh ; mask cluster value ReadClusterDone: ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Reads a sector using BIOS Int 13h fn 2 ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Input: DX:AX = LBA ;; ;; CX = sector count ;; ;; ES:BX -> buffer address ;; ;; Output: CF = 1 if error ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ReadSector: pusha
ReadSectorNext: mov di, 5 ; attempts to read
ReadSectorRetry: pusha
div word [bpbSectorsPerTrack] ; ax = LBA / SPT ; dx = LBA % SPT = sector - 1
mov cx, dx inc cx ; cx = sector no.
xor dx, dx div word [bpbHeadsPerCylinder] ; ax = (LBA / SPT) / HPC = cylinder ; dx = (LBA / SPT) % HPC = head
mov ch, al ; ch = LSB 0...7 of cylinder no. shl ah, 6 or cl, ah ; cl = MSB 8...9 of cylinder no. + sector no.
mov dh, dl ; dh = head no.
mov dl, [bsDriveNumber] ; dl = drive no.
mov ax, 201h ; al = sector count ; ah = 2 = read function no.
int 13h ; read sectors jnc ReadSectorDone ; CF = 0 if no error
xor ah, ah ; ah = 0 = reset function int 13h ; reset drive
popa dec di jnz ReadSectorRetry ; extra attempt jmp short ErrRead
ReadSectorDone: popa dec cx jz ReadSectorDone2 ; last sector
add bx, [bpbBytesPerSector] ; adjust offset for next sector add ax, 1 adc dx, 0 ; adjust LBA for next sector jmp short ReadSectorNext
ReadSectorDone2: popa ret
;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Error Messaging Code ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
ErrRead: ErrFind:
jmp short $ ; hang ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Put char '#' ;; ;; When finding kernel ;; ;;;;;;;;;;;;;;;;;;;;;;;;; pcfk: pusha mov al, '#' mov ah, 0eh mov bl, 7 int 10h popa ret ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Put char '>' ;; ;; When loading kernel ;; ;;;;;;;;;;;;;;;;;;;;;;;;; pclk: pusha mov al, '>' mov ah, 0eh mov bl, 7 int 10h popa ret ;;;;;;;;;;;;;;;;;;;;;;;;; ;; Put char in AL ;; ;; When loading kernel ;; ;;;;;;;;;;;;;;;;;;;;;;;;; printstr: pusha mov ah,0Eh ; Request display again1: lodsb ; load a byte into AL from DS:SI or al,al ; Or AL jz done1 ; Jump 0, to label done1 int 10h ; Call interrupt service jmp again1 ; Jump to label again1 done1: popa ret
;;;;;;;;;;;;;;;;;;;;;; ;; Goto XY ;; ;;;;;;;;;;;;;;;;;;;;;; gotoxy: pusha mov ah, 2 mov bh, 0 ;; mov dx, 1801h ;dh = x ;dl = y int 10h popa ret
;;;;;;;;;;;;;;;;;;;;;; ;; Goto BACK ;; ;;;;;;;;;;;;;;;;;;;;;; gotobak: pusha mov ah, 2 mov bh, 0 ;; mov dh, 6 ;dh = x ;dl = y int 10h popa ret ;;;;;;;;;;;;;;;;;;;;;; ;; String constants ;; ;;;;;;;;;;;;;;;;;;;;;; MsgLoadK db "Load kernel",0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Fill free space with zeroes ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
times (512-13-($-$$)) db 0
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Name of a program to be load and run ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ProgramName db "VYSTUPS COM" ; name and extension must be padded ; with spaces (11 bytes total)
;;;;;;;;;;;;;;;;;;;;;;;;;; ;; End of the sector ID ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;
dw 0AA55h
a ked uz, nemohol by mi prosim niekto vysvetlit ak uz, okrem toho ako na to, preco tak?...DAKUJEM
|
|
Registrovaný: 11.01.09 Prihlásený: 29.03.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 30.07.2010 21:08 | |
|
Nefunguje to pravdepodobne preto, lebo SYS a COM nie je to isté a nestačí iba prepísať príponu. Tieto dva typy modulov majú inú štruktúru a teda v prvom uvedenom bootloader-i načítavanie COM do pamäte nebude korektné, čiže sa nespustí - keby som to mal popísať pre lepšie pochopenie napr pre Windows, je to akoby som modifikoval v textovom editore exe modul a následne sa ho pokúsil spustiť upravený.
|
|
Registrovaný: 30.07.10 Prihlásený: 27.01.11 Príspevky: 9 Témy: 3 |
Mno...o tom daco viem, ze com zacina na offsete 100h a sys na 0h...ale ked to nastavim v JLOC-u, tak to aj tak nejde, cize treba zmenit nieco aj v loaderi...ale neviem co...a chcel by som na to prist
|
|
Registrovaný: 11.01.09 Prihlásený: 29.03.24 Príspevky: 1385 Témy: 9 Bydlisko: Hrinova | Napísal Fico: 30.07.2010 22:36 | |
|
Najlepšie by asi bolo, ak by si si daný súbor preložil aj ako COM aj ako SYS a potom v disassembleri vysledoval rozdiely. Lebo teraz sa len môžme dohadovať, čo, kde a prečo treba zmeniť.
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 31.07.2010 16:54 | |
|
V tomto konkrétnom prípade tá sys prípona neznamená vôbec nič (mohla by tam biť akákoľvek).
-> raven.force píšeš, že si niekde niečo zmenil a nefunguje to; keď ale nenapíšeš čo presne si zmenil, tak ti nikto neporadí (lebo ľudom sa nechce hádať, čo si mohol zmeniť).
|
|
Registrovaný: 30.07.10 Prihlásený: 27.01.11 Príspevky: 9 Témy: 3 |
menim meno imagesuboru...tam to je napisane
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | Napísal chrono: 07.08.2010 10:40 | |
|
A načíta sa ten súbor? Adresa, na ktorú sa to načítava je rovnaká ako tá, z ktorej sa to potom spúšťa? (ak naozaj chceš .com súbor, musíš to načítať na offset 100h a potom to z toho offsetu aj spúšťať; jednoduchšie je urobiť si nejaký "flat", ktorý bude začínať priamo na offsete 0h a v takom prípade nemusíš v tom kóde zavádzača nič meniť).
|
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|