Первая прога для ДОС

Тема в разделе "WASM.BEGINNERS", создана пользователем test555, 24 дек 2007.

  1. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    В программировании не новичок, но все это было на С++, делфях и тд..

    На АСМ никогда не программил.
    Встал вопрос (причем срочно) в нем разобраться.
    Скачал учебник. но материала много, много непонятного и лишнего.

    А в данный момент мне интересно, как выглядит исходник программки Hello World для ДОСа
    Скачал MASM и TASM
    В первом есть пример консольного приложения, но оно только под Винду запускается. Пример из ТАСМа тоже только под видной.
    Поставил виртуальную машину, Вин98, создал загрузочную дискету, с ней и сижу.
    Закидываю на виртуальный флов проги и запускаю (

    Для начала мне бы простой исходник проги: введите _ваше имя_, "добрый день _ваше имя_"

    С этого и плясать буду. Материала много, не знаю где копать, не успеваю.

    Спасибо. Тем временем пользуюсь поиском.

    В конечном итоге мне надо будет написать "загрузочник", который будет проверять параметры SMART контроллера и выводить сообщения на экран, дальше передавать управление стандартному загрузчику.

    Спасибо..
     
  2. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    http://www.pronau.org.ua/storage/index.php?dir=books/Computer/Programming/Assembler/
    Там Абель и Зубков. По мнению большинства - лучшие книги для начинающих.
     
  3. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Спасбио. В одной книжке нашел:

    TITLE Hello World Program (hello.asm)
    ; ›U‡ OO„‡II‡ OUO·‡E‡AU OIO‚‡ "Hello, world!"
    .MODEL small
    .STACK 100h
    .DATA
    message DB "Hello, world!",0dh,0ah,'$'
    .CODE
    main PROC
    MOV AX,@data
    MOV DS,AX
    MOV AH,9
    MOV DX,offset message
    INT 21h
    MOV AX,4C00h
    INT 21h
    main ENDP
    END main

    Запускаю все это дело так
    ml /c file_name.asm
    link file_name.obj
    на masm

    Последний дает
    fatal error LNK1123: failure during convertion to COFF: file invalid or corrupt
     
  4. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    test555
    link.exe не тот, для генерации dos-приложений ищи версии 5.60.339.
     
  5. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Спасибо. Ищу.

    А если мне надо чтобы еще до доса стартовала?
    Например если хочу свой загрузочник написать, то что посоветовал q_q подойдет?
     
  6. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    имхо лучший ассемблер для ДОС - TASM. Он самый мощный по языковым средствам и уступил другим только из-за остановки развития. Документация по нему на русском имеется. Минус - неудобности с писанием под винду и незнание процессоров выше 586 со всеми вытекающими инструкциями.
     
  7. Elusory Jo

    Elusory Jo New Member

    Публикаций:
    0
    Регистрация:
    26 янв 2006
    Сообщения:
    30
    Адрес:
    Moscow
    Надо чтобы до загрузки ОС стартовала? Если чисто влезть в MBR - то для ДОСа такое прокатит, но для Винды ИМХО нет, она кажись каждый раз восстанавливает его (ХР вроде, поправьте если я неправ).. А так - действительно, рекомендация - это TASM!
     
  8. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Скажу по секрету, загрузочные вирусы прекрасно работают как под виндой (включая хр), так и под пингвином.
    ЗЫ это пример :derisive:
     
  9. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Уточню вопрос: каким ассемблером воспользоваться чтобы моя программа смогла запускаться до старта ОС

    ПОд дос научился ассемблировать, но для вывода текста там используются функции ДОСа, которого у меня и не будет..
     
  10. creeper

    creeper New Member

    Публикаций:
    0
    Регистрация:
    31 окт 2007
    Сообщения:
    132
    Elusory Jo
    Поправляю :) Не восстанавливает. Ни линуксовый граб, ни фрибсдшный загрузчик не трогает(эт по собственному опыту), как и другие, в принципе.

    test555
    Посмотри fasm -- flatassembler.net
    Вот краткое описание на русском http://ru.wikipedia.org/wiki/Fasm
     
  11. shoo

    shoo New Member

    Публикаций:
    0
    Регистрация:
    17 июл 2003
    Сообщения:
    1.537
    Адрес:
    Ukraine
    здесь есть примеры загрузочных секторов и образов для фасма
     
  12. redcat

    redcat New Member

    Публикаций:
    0
    Регистрация:
    20 ноя 2007
    Сообщения:
    62
    До DOS можно использовать функции BIOS и для чтения/записи диска и для ввода/вывода на консоль (клава и экран).
    И если нужно все это далать до загрузки DOS, то именно функции BIOS и нужно использовать. Дисассемблируй MBR и посмотри как там это делается. Можно изменить сам MBR (правда не знаю как посмотрят на все это антивирусы XP и Висты) и загружать свой код с диска, выполнять его, а потом продолжить нормальную загрузку ОС.

    Я прикрепил файл с Лабораторной работой по теме MBR (там два файла исходник оригинальной MBR и модификация)
     
  13. test555

    test555 New Member

    Публикаций:
    0
    Регистрация:
    7 дек 2007
    Сообщения:
    241
    Спасибо всем.
    Видимо до конца рабочей недели я не успею разобраться со всем, включая то как считать параметры SMART ( в книжке написано как и в какие регистры поместить, но это для меня китайская грамота щас), как записать и считать несколько данных с диска и др..

    Пока ограничусь написанием утилиты под win xp/2000
    Видимо еще прийдется мне возвращяться к изучению асма.