phobos__ Во первых какого, бут.. пе.. или что ? Если нэйтивный пе, то забудьте про это, он огромный. Если вам модуль загрузить используйте мою надстройку. В любом ином случае решения с нуля не будет, даже за деньги.
Я пытаюсь самый простенький загрузчик, все лишь выводящий дату; что-то типа такого, только под TASM. ;FASM-версия org 7C00h use16 jmp Beginning nop ; так как предыдущая команда занимает 2 байт, команда nop даст третий db 'bootsect' SectSize dw 00200h ClustSize db 001h ResSecs dw 00001h FatCnt db 002h RootSiz dw 000E0h TotSecs dw 00B40h Media db 0F0h FatSize dw 00009h TrkSecs dw 00012h HeadCnt dw 00002h HidnSec dw 00000h Beginning: cli mov ax, cs mov ds, ax mov es, ax mov ss, ax mov sp, 7c00h sti xor ax,ax mov es,ax mov bx,7e00h mov ah,02h mov al,8 xor dx,dx mov ch,00000000b mov cl,2 int 13h jmp Main_Program ; Не забудем про сигнатуру бутсектора 55AAh, поэтому times (510-($-7C00h)) db 0 db 055H,0AAH Main_Program: ...
Надо, чтоб программа загружалась с дискеты или на эмуляторе типа VM Ware, скомпилированная TASM. Я много раз пробовал переделать загрузчик Fasm, но безуспешно. Каждый раз EXE файл создается размером 65кБ! из-за директивы org 7c00. И я думаю, что проблема только в этом, в остальном вроде все понятно.
phobos__ Сделай для начала что-нибудь попроще, например выведи символ на экран. Потом отладь в эмуляторе и уже потом.
Booster, я наверное что-то не так делаю, но программа не работает ни в Bochs ни в vmware.Вот твоя программа которую я компилирую: CODE SEGMENT PARA PUBLIC 'CODE' USE16 ASSUME CS:CODE, DS:CODE, SS:CODE ORG 7C00H START: cli ; подготовим регистры mov ax, cs mov ds, ax mov es, ax mov ss, ax mov sp, 7c00h sti MOV AX, 3 INT 10H MOV AX, 0B800H MOV ES, AX mov ax,1f33h ;чтобы проверить,что хоть что-то выводится stosw L1: XOR AX, AX INT 16H MOV BYTE PTR ES:[0], AL MOV BYTE PTR ES:[1], 0FH JMP L1 RET times db (510-($-offset start)) dup (0) db 055H,0AAH CODE ENDS END START ;компилирую так:tasm d:\a2.asm d:\a2.obj ;tlink /v d:\a2.obj d:\a2
И кстати ничего пихать в мой исходник необязательно, там по нажатию клавиш на экран выводятся символы .