Search the Community
Showing results for tags 'bootloader'.
-
Ce va face? Va afisa 'rst' pe ecran. Ce programe sunt necesare? -nasm link: The Netwide Assembler: NASM -editor de texte -optional virtual pc sau virtualbox 1. Porneste notepad sau ce program folosesti si scrie: [BITS 16] [ORG 7C00h] mov ah,0eh mov al,'r' int 10h mov al,'s' int 10h mov al,'t' int 10h jmp $ times 510-($-$$) db 0 dw 0xAA55 Sa luam codul linie cu linie: [bITS 16] => aici zicem pe cati biti va fi programul, in general 16, 32 sau 64. [ORG 7C00h] => adresa la care se va incarca in memorie, bootloadere se incarca la 7c00, .com la 100h si .exe non PE la 200h... Ce inseamna "int 10h"? Interrupt-ul 10h sau 0x10 este unul din int-urile de BIOS. Le puteti vedea deocamdata ca niste functii predefinite. De exemplu daca in registrul "ah" este valoarea 0Eh si in "al" codul ascii, si scriem int 10h, va aparea simbolul din al pe ecran. Pentru o lista cu int-uri puteti sa va uitati aici: 8086 bios and dos interrupts (IBM PC) Ce inseamna "jmp $"? Un loop infinit. Asemanator codului C a while(1==1){} sau for({} Dar "times 510-($-$$) db 0"? Bootloadere-le TREBUIE sa aiba fix 512 bytes pt ca sa fie boot-abile. Comanda asta adauga 0-uri pana cand ajunge la 510. Si "dw 0xAA55"? Asta trebuie sa fie la sfarsit pentru ca BIOS-ul sa ruleze programul. 2. Considerand ca l-ai salvat ca si rst.asm, si este in acelasi director cu nasm.exe, intra in cmd si scrie "nasm rst.asm -o rst.bin" 3. Insereaza un floppy in calculator si fiind in cmd scrie: C:\>debug DEBUG rst.bin - w 100 0 0 1 - q 4. Da restart si booteazade pe floppy sau foloseste virtual pc/ virtualbox/ bochs/ qemu... In caz ca folosesti linux, ca sa scrii pe floppy scrie: "dd if=rst.bin bs=512 of=/dev/fd0" sau pt virtualizare poti si "dd if=rst.bin bs=512 of=rst.img". Sper ca v-a placut... Comentati!
- 28 replies
-
- 1
-
- bootloader
- limbajul de asamblare
-
(and 1 more)
Tagged with: