Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.09.2010, 17:13   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию Пример программы для создания загрузочной дискеты.

Всем доброго времени суток. Сейчас занимаюсь созданием загрузочной дискеты, через dos, кому интересно могу описать весь процесс на форуме, но загвоска в том, что сама программа должна быть написана в debug'е доса, т.е. на асме, поэтому прощу мне помочь и выложить сюда простой пример программы на асме, рисующий к примеру какую нибудь фигуру на экране, причём в программе не должно быть переменных, т.к. программа будет написана не в компиляторе, а в дебаге доса. Заранее спасибо.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 20.09.2010, 19:41   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

так что надо?
пример кода загрузочного сектора?
или же просто пример проги на асме?(кстати загрузчик дискеты находится со смещением 0 внутри кодового сегмента)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 20.09.2010, 21:30   #3
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

В командной строке пишу Debug, перехожу в отладчик, дальше вставляю дискету загружают самый первый сектор:

Код:
L 7c00 0 0 1
Просматриваю дамп памяти:

Код:
D 7c00
Дизассемблирую:

Код:
U 7c00
Далее:

Код:
A 7c3e
7c3e - может меняться, т.е. у вас может быть другой адресс

Далее пишу такой код для вывода прямой:

Код:
        mov ax, 13
        int 10
        mov ax, a000
        mov es, ax
        xor di, di
        mov cx, c8
7C4D es:
        mov [di], cl
        add di, 141
        loop 7C4D
        xor ah, ah
        int 16
        mov ah, 3
        int 10
      //int 19
Это всё сохраняю:

Код:
W 7c00 0 0 1
Так вот, вместо кода который рисует просто прямую нужно что-то посложнее, при том что как сам понимаеш переменных тут нет
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 21.09.2010, 09:41   #4
alexcoder
Форумчанин
 
Регистрация: 31.05.2009
Сообщений: 786
По умолчанию

Попробуй такую глюкалку:
Код:
.model tiny
.code
.startup
.286
mov ax,13h
int 10h
std
push 0a000h
pop es
mov bp,4
m3:
mov di,320*200-1
mov bx,200
m2:
mov cx,320
m1:
mov ax,bx
mul ax
mov si,ax
mov ax,cx
mul ax
sub ax,si
sbb dx,0
idiv bp
and al,1
stosb
loop m1
dec bx
jnz m2
inc bp
jnz m3
ret
end
Помощь с программами:
vk.com/alexcoder1
e-mail: informatik101@mail.ru
alexcoder вне форума Ответить с цитированием
Старый 21.09.2010, 16:21   #5
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

alexcoder, спасибо огромное, очень помогли. Только пришлось немного подправить код и добавить ожидание нажатия клавиши и исправить десятичные цифры на шестнадцатеричные.

Если не трудно можно ещё какой-нибудь пример в этом роде, нужно друзьям помочь. Подойдёт всё что угодно, к примеру рисование фигуры с градиентной заливкой или что-то в этом роде, только не треугольник и не прямоугольник.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 21.09.2010, 16:30   #6
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Огонек не пойдет? Можно в легкую переделать для работы без ОС. 412 байт, можно соптимизить до 350 где-то примерно. Как раз в бут залезет.
Изображения
Тип файла: jpg flame.jpg (21.2 Кб, 139 просмотров)
Вложения
Тип файла: rar EX.rar (1.8 Кб, 40 просмотров)
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 21.09.2010, 16:44   #7
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

в бут и 412 залезет, но я так и не понял, причем тут вообще загрузочная дискета?
на ней есть пометка что она загрузочная?(последние два байта первого сектора)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 21.09.2010, 17:01   #8
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Я тоже не совсем понял при чем тут бут.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Старый 21.09.2010, 17:05   #9
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Пепел Феникса, чего ж тут не понятного, в загрузочный сектор флопи диска я записываю свою программу. Затем в биосе ставлю на первое место флопи дисковод, теперь при запуске компа будет загружаться моя программа, а не виндовс, вот поэтому и загрузочная дискета, к примеру если я просто скину экзешник на дискету, то ничего не произойдёт.

Tronix, спс передам друзьям.

Цитата:
на ней есть пометка что она загрузочная?(последние два байта первого сектора)
Это что вообще значит? Первый сектор у дискеты и есть загрузочный, а дискета почему загрузочная я уже описал выше, как делать - ещё выше

Tronix, что такое бут?


Поправочка, не загрузочный диск, а загрузочный сектор

Вот задание:

Цитата:
Создать собственный загрузочный сектор на дискете 3,5" и записать в него свою небольшую программу, демонстрирующую особенность вашей дискеты
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли

Последний раз редактировалось Marsel737; 21.09.2010 в 17:19.
Marsel737 вне форума Ответить с цитированием
Старый 21.09.2010, 17:24   #10
Tronix
Форумчанин
 
Аватар для Tronix
 
Регистрация: 15.06.2010
Сообщений: 740
По умолчанию

Цитата:
Сообщение от Marsel737 Посмотреть сообщение
Tronix, что такое бут?
бут = бут сектор, загрузочный сектор.
Чтобы понять рекурсию, сперва нужно понять рекурсию.
Tronix вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Cоздание загрузочной дискеты Foken Помощь студентам 0 30.05.2010 20:59
пример создания окна для ActiveX(OLE) компонента(по типу WebBrowser или Flash) Пепел Феникса Win Api 4 25.12.2009 09:08
Программа для создания загрузочной винды из простого офф образа. kakawkin Операционные системы общие вопросы 1 09.11.2009 19:26
Создания алгоритма для программы на паскале Brunik Помощь студентам 0 09.04.2009 12:17
Программы для создания сайтов VaDuXa Софт 17 16.11.2007 21:37