Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 627
от 28.08.2003, 23:00

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 4035
Отправлено ответов: 11975
Активность: 296.7 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

vitya
Статус: Профессиональный
Общий рейтинг: 108.09
[Подробней >>]
Евгений Иванов
Статус: Профессиональный
Общий рейтинг: 148.1
URL: Super Assembler Software
Телефон: НСС +7 831 3107039
[Подробней >>]
Fantomas
Статус: Доверительный
Общий рейтинг: 123.88
[Подробней >>]
 
_vt
Статус: Профессиональный
Общий рейтинг: 121.14
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 152.17
URL: Программирование
[Подробней >>]
[L2]Max
Статус: Опытный
Общий рейтинг: 127.75
Телефон: (0562) 323428
[Подробней >>]
 
dimka
Статус: Опытный
Общий рейтинг: 140.45
Телефон: (231)-4-43-85
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 120.85
URL: мой сайт
[Подробней >>]
Igoryk
Статус: Профессиональный
Общий рейтинг: 110.82
URL: CodeClimber.Com
[Подробней >>]
 
Greys
Статус: Доверительный
Общий рейтинг: 123.2
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 112.97
[Подробней >>]
St
Статус: Профессиональный
Общий рейтинг: 106.71
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 3990. Доброе время суток, уважаемые эксперты! Хочу вас спросить, как получить/установить статус checkbox'а... (ответов: 7)
Вопрос № 3991. Здравствуйте уважаемые эксперты. Мой вопрос состоит в следующим. Приложенная программка ( в цело... (ответов: 7)
Вопрос № 3992. Приветствую Вас, Эксперты. Моя программа жутко тормозит в Win9x (в 2K и XP все работает нормально, т... (ответов: 4)
Вопрос № 3993. Здравствуйте, эксперты. Расскажите насчёт функций BIOS в защищённом режиме. Как можно читать и писат... (ответов: 4)
Вопрос № 3994. Доброе время суток! Где можно достать документацию по портам ввода/вывода дисковода, винта, клавиату... (ответов: 5)
Вопрос № 3995. Здравствуйте Уважаемые Эксперты. Я только начинаю прогр-ть на Assembler... Пробовал запустить таймер... (ответов: 5)
Вопрос № 3996. приветствую вас, господа! у меня вопрос по резиденту, в рассылке который описывали. код тут есть! в... (ответов: 3)
Вопрос № 3997. На компе установлена WinME хочу перейти на Win2000, подскажите пожалуйста как настроить комп, для то... (ответов: 6)

Вопросов: 8, ответов: 41


 Вопрос № 3990

Доброе время суток, уважаемые эксперты!
Хочу вас спросить, как получить/установить статус checkbox'а?
Я знаю, что можно обрабатывать сообщение WM_COMMAND с BN_CLICKED, но, допустим,
мне нужно в зависимости от какого-либо условия установить этот checkbox. Как это
сделать?



Вопрос отправлен: 24.08.2003, 10:06
Отправитель: Dr.00py (stepipatov@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Здравствуйте, Dr.00py!
надо послать окну кнопки сообщение BM_SETCHECK.
wParam Specifies the check state. This parameter can be one of the following values.
BST_CHECKED Sets the button state to checked.
BST_INDETERMINATE Sets the button state to grayed, indicating an indeterminate state. Use this value only if the button has the BS_3STATE or BS_AUTO3STATE style.
BST_UNCHECKED Sets the button state to cleared.
(c) MSDN.


Ответ отправлен: 25.08.2003, 08:57
Отправитель: vitya


Отвечает Евгений Иванов

Доброе время суток, Dr.00py!
Используй функцию:

The CheckDlgButton function changes the check state of a button control.
BOOL CheckDlgButton(
HWND hDlg, // handle of dialog box
int nIDButton, // button-control identifier
UINT uCheck // check state
);

И другие подобные (радио).



Ответ отправлен: 24.08.2003, 17:10
Отправитель: Евгений Иванов


Отвечает Fantomas

Здравствуйте, Dr.00py!
Я надеюсь, ты знаешь, как получить Hwnd нужного тебе
CheckBox'a !
Все это делается функцией SendMessage:
SendMessage(Hwnd, BM_SETCHECK, 1, 0) ;установить
SendMessage(Hwnd, BM_SETCHECK, 0, 0) ;снять
SendMessage(Hwnd, BM_GETSTATE, 0, 0) ;получить статус
Замечу, что в последней, если на CheckBox находится
фокус, то функция возвращает 8 при снятой галочке и
9 при установленной. А если фокуса нет, тогда 1
и 0 соответственно.
Будут вопросы - пиши на f-a-n-t-o-m-a-s@ukr.net !
Всего доброго !




Ответ отправлен: 24.08.2003, 12:42
Отправитель: Fantomas


Отвечает _vt

Приветствую Вас, Dr.00py!
При выполнении условия послать сообщение чекбоксу, например так:
invoke SendMessage, hCbWnd, BS_SETCHECK, ST_CHECKED, 0
где hCbWnd - хэндл чекбокса

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 24.08.2003, 15:30
Отправитель: _vt


Отвечает Bob Johnson

Добрый день, Dr.00py!
Для изменения состояния чекбокса ему посылается сообщение BM_SETCHECK (состояние, 0). Где состояние - это 0 или 1, в зависимости от того, что ты хочешь.
Для получения состояния чекбокса ему посылается сообщение BM_GETCHECK (0, 0).

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 24.08.2003, 17:03
Отправитель: Bob Johnson


Отвечает [L2]Max

Здравствуйте, Dr.00py!
Посылай сообщение чекбоксу
Непомню, но пожно еще и SetCheck(HWND,1)

Ответ отправлен: 27.08.2003, 05:24
Отправитель: [L2]Max


Отвечает dimka

Приветствую Вас, Dr.00py!
BM_GETCHECK (0, 0)


Ответ отправлен: 26.08.2003, 10:49
Отправитель: dimka


 Вопрос № 3991

Здравствуйте уважаемые эксперты.
Мой вопрос состоит в следующим.
Приложенная программка ( в целом бесполезная ), копирует себя на нулевую видеостраницу. Копируется только код программы без PSP.
Так вот. Я знаю, что пиявившиеся символы- это моя программа. без PSP. Если убрать -100h, то экран заполниться уже с самого начала на длину PSP и программы.
1) Почему появившиеся символы постоянно мигают и изменяются. Код- то статичный.
2) Почему эти символы не совпадают с теми, которые появляются при просмотре файла в HIWE.
Вопрос конечно глупый, но помогите разобраться.


Приложение:


Вопрос отправлен: 24.08.2003, 11:44
Отправитель: int 21h (int_21h@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает [L2]Max

Здравствуйте, int 21h!
Да потому, что при записи в видеопамять в символьном режиме, каждый символ кодируется словом, и самый старший бит обозначает мерцание

Ответ отправлен: 27.08.2003, 05:26
Отправитель: [L2]Max


Отвечает Broken Sword

Приветствую Вас, int 21h!
все очень просто. ты просто не знаешь что один символ на экране - это ДВА БАЙТА в памяти: атрибут и код символа. Атрибут может быть таким, что символ мигает. Например, в HIEW 30h 0Dh - это нолик и рожица. А на экране - это фиолетовый нолик (0Dh - это атрибут). вот так вот

Ответ отправлен: 24.08.2003, 14:55
Отправитель: Broken Sword


Отвечает _vt

Добрый день, int 21h!
Разбираем как всегда по порядку:
.model tiny
.code
org 100h
start:
mov ax,0003h
int 10h
mov ax,0500h
int 10h
mov es,[Video_const]
mov di,100h ; здесь надо xor di, di - ты ведь хочешь отображать с самого верхнего угла экрана
mov cx, offset Finish-100h
mov si,100h
;rep movsb ; так не пойдет! Ты именно заносишь в видеопамять все коды программы, но
;отображаться они не будут: тебе надо читать символ (lodsb) и записывать его вместе с ;цветовым атрибутом (stosw) - ah должен быть кодом цвета. К примеру так
mov ah, 07h
_loop:
lodsb
stosw
dec cx
jcxz _end
jmp _loop
_end:
mov ah,10h
int 16h
int 20h
Video_const dw 0b800h
Finish equ $
end start
Так вроде должно работать...

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 24.08.2003, 15:30
Отправитель: _vt


Отвечает Евгений Иванов

Добрый день, int 21h!
Видепамять в текстовых режимах состоит из 2 байт.
Первый байт - символ.
Второй - атрибут (цвет, мигание)
Всех делов!


Ответ отправлен: 24.08.2003, 17:07
Отправитель: Евгений Иванов


Отвечает dimka

Доброе время суток, int 21h!
Oдин символ на экране - это ДВА БАЙТА в памяти: атрибут и код символа.


Ответ отправлен: 26.08.2003, 10:31
Отправитель: dimka


Отвечает Igoryk

Здравствуйте, int 21h!
В текстовой видеопамяти информация выводится так:
Атрибут Символ Атрибут Символ ... Атрибут Символ
1. Мигают символы потому, что видеоадаптер воспринимает какой-то байт твоей программы, как атрибут символа.
2. Потому что содержимое атрибутов на экран не выводится.
Нужно заменить фрагмент
rep movsb
на
с:
mobsb
inc si
loop c


Ответ отправлен: 26.08.2003, 18:37
Отправитель: Igoryk


Отвечает Greys

Приветствую Вас, int 21h!
>1) Почему появившиеся символы постоянно мигают и >изменяются. Код-то статичный
Я проверял ваш код - на моем компе ничего не мигало!!!
>2) Почему эти символы не совпадают с теми, которые >появляются при просмотре файла в HIWE.
>Вопрос конечно глупый, но помогите разобраться.
Все что вы пишите в данную область памяти немедленно пересылается в память видеоадаптера. В текстовых режимах для хранения каждого изображенного символа используются два байта: байт с ASCII-кодом символа и байт с его атрибутом, так что по адресу B800h:0000h лежит байт с кодом символа, находящимся в верхнем левом углу экрана; по адресу B800h:0001h лежит атрибут этого символа; по адресу B800h:0002h лежит код второго символа в верхней строке экрана и т.д.
То что вы видите на экране - это ничто иное, как байт с ASCII-кодом символа и байт с его атрибутом. Попробуйте выводить в данную область памяти не сам код программы, а ASCII-код каждой HEX цифры, не забывая, что по нечетным смещениям будут лежать атрибуты символа, так что выберите какой-нибудь один атрибут для всех выводимых символов!
С уважением, GREYS!

Ответ отправлен: 28.08.2003, 01:57
Отправитель: Greys


 Вопрос № 3992

Приветствую Вас, Эксперты.
Моя программа жутко тормозит в Win9x (в 2K и XP все работает нормально, только процессор нагружает на 99%).
Я думаю, что нужно снизить приоритет (правла совсем не знаю как это делается) или поместить какую-нибудь функцию разгружающую процессор (также ни одной не знаю, кроме NOP). Буду рад услышать и другие предложения.
Еще было бы интересно узнать как скрыть программу из "Диспетчера Задач" (того что Win9x)
PS: Тормозящая часть в приложении


Приложение:


Вопрос отправлен: 24.08.2003, 13:00
Отправитель: UsAr

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Здравствуйте, UsAr!
Используй функцию SetTimer, и обрабатывай сообщение WM_TIMER, тогда процессорное время будет распределяться правильно, а не уходить всё тебе...

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 10:34
Отправитель: _vt


Отвечает Bob Johnson

Добрый день, UsAr!
Естественно, что она будет тормозить - ты же вызываешь одну и ту же функцию постоянно.
> Я думаю, что нужно снизить приоритет (правла совсем не знаю как это делается) или поместить какую-нибудь функцию разгружающую процессор (также ни одной не знаю, кроме NOP)
Ну начнем с того, что nop процессор не разгружает ни капли. Разгружает команда hlt, но тебе нет смысла ее использовать. Под windows есть такая функци как Sleep (n), она позволяет потоку "заснуть" на n миллисекунд. Добавь ее в твой цикл с параметром, например, 1000 - тогда ты будешь проверять соединение с интернетом раз в секунду и твоя программа не будет тормозить нигде.
> как скрыть программу из "Диспетчера Задач" (того что Win9x)
См. MSDN в сторону RegisterServiceProcess (этой функции нет в списке, ее надо искать поиском).
P.S. Вирус пишешь?

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 24.08.2003, 16:58
Отправитель: Bob Johnson


Отвечает Евгений Иванов

Здравствуйте, UsAr!
Вызывай это всё хозяйство из таймера, ну, например, на 500 мс.
Можно и побольше!
И всё будет тип-топ.


Ответ отправлен: 24.08.2003, 17:06
Отправитель: Евгений Иванов


Отвечает dimka

Добрый день, UsAr!
Snijenie prioritrta:
(win XP)CTRL+ALT+DEL->process->pop up menu of explorer->prioritet->srednii


Ответ отправлен: 26.08.2003, 10:35
Отправитель: dimka


 Вопрос № 3993

Здравствуйте, эксперты. Расскажите насчёт функций BIOS в защищённом режиме. Как можно читать и писать на диск в защищённом режиме?
Заранее благодарен.



Вопрос отправлен: 24.08.2003, 16:51
Отправитель: LLIypik (lliypik@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает ASMодей

Приветствую Вас, LLIypik!
Этот вопрос уже несколько раз проходил в рассылке, но отвечу еще раз. В защищенном режиме использовать прерывания BIOS не получится, так как код этих прерываний 16-разрядный, а код защищенного режима - 32-разрядный.
В защищенном режиме на BIOS уже надеяться нельзя, а следует работать со всеми устройствами компьютера напрямую через порты ввода-вывода. В частности, для работы с дисками, необходимо будет программировать их контроллеры. Описание этого можно найти в интернете.

Ответ отправлен: 25.08.2003, 08:55
Отправитель: ASMодей


Отвечает _vt

Добрый день, LLIypik!
В защищенном режиме нельзя работать с устройствами с помощью функций BIOS: необходимо написать свои, которые будут работать с железом через порты ввода/вывода процессора. Необходимой документации по портам в интернете море...

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 10:34
Отправитель: _vt


Отвечает [L2]Max

Добрый день, LLIypik!
только через порты I/O

Ответ отправлен: 25.08.2003, 17:03
Отправитель: [L2]Max


Отвечает dimka

Приветствую Вас, LLIypik!
В защищенном режиме использовать прерывания BIOS не получится, так как код этих прерываний 16-разрядный, а код защищенного режима 32-разрядный.


Ответ отправлен: 26.08.2003, 10:39
Отправитель: dimka


 Вопрос № 3994

Доброе время суток!
Где можно достать документацию по портам ввода/вывода
дисковода, винта, клавиатуры. Ето нужно для написания
своих обработчиков прерываний.
Спасибо за внимание!



Вопрос отправлен: 24.08.2003, 18:18
Отправитель: Madman (yo-ho@km.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Добрый день, Madman!
Какой вопрос, такой ответ:
-------====В ИНТЕРНЕТЕ!!!!=====------

----====используй поисковики====---

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 10:35
Отправитель: _vt


Отвечает [L2]Max

Доброе время суток, Madman!
Дай свое мыло я тебе пришлю

Ответ отправлен: 25.08.2003, 17:04
Отправитель: [L2]Max


Отвечает Евгений Иванов

Приветствую Вас, Madman!
Тигра.а.а.а.н!!! А.а.а.а.... О.о.о.о...
Где твой FAQ по Ассемблеру!!!
Это что за такое, растакое!
Если будем каждому отвечать, где он забыл запятую поставить, то это
превратится во что-то тухлое...


Ответ отправлен: 24.08.2003, 18:46
Отправитель: Евгений Иванов


Отвечает dimka

Здравствуйте, Madman!
Na saite u Tigrana Kailadjana v razdele /PROEKT.doc


Ответ отправлен: 26.08.2003, 10:43
Отправитель: dimka


Отвечает Greys

Доброе время суток, Madman!
Кое-какие доки я вам уже выслал! Посмотрите в ящике!
С уважением,Greys!

Ответ отправлен: 28.08.2003, 02:16
Отправитель: Greys


 Вопрос № 3995

Здравствуйте Уважаемые Эксперты.
Я только начинаю прогр-ть на Assembler...
Пробовал запустить таймер через WinApi -ничего не вышло...
Почему не работает таймер?
Заранее большое спасибо. Если не трудно вышлите мне на мыло пример работы с SetTimer...


Приложение:


Вопрос отправлен: 24.08.2003, 18:30
Отправитель: FreeFighter (u_andriushi@pisem.net)

[Следующий вопрос >>] [Список вопросов]

Отвечает St

Привет, FreeFighter!
INVOKE SetTimer, hwnd, IT, 0, NULL - вы установили тайм-айт = ноль. Попробуйте другое число.
St

Ответ отправлен: 25.08.2003, 13:47
Отправитель: St


Отвечает _vt

Приветствую Вас, FreeFighter!
Как я понял, программа должна найти окно диспетчера задач и если есть - вывести соответствуюшую строку... А с чего ты взял, что таймер не работает? Не работает твой алгоритм поиска окна... Ты сохраняешь хэндл окна в локальной переменной b, которая толком не видна в обработчике WM_PAINT(т.е. всегда при обработке WM_PAINT равна чему угодно) ... Определи b как глобальную

---===*** Updated E-Man 1.5 - it's cool!***===---


Приложение:

Ответ отправлен: 25.08.2003, 10:35
Отправитель: _vt


Отвечает Евгений Иванов

Здравствуйте, FreeFighter!
Установи время в миллисекундах, а не ноль!:
Например, 300 мс.
call SetTimer, hwnd, IT, 300, NULL
Удачи!


Ответ отправлен: 24.08.2003, 18:54
Отправитель: Евгений Иванов


Отвечает Bob Johnson

Приветствую Вас, FreeFighter!
Установи интервал таймера отличным от нуля:
INVOKE SetTimer, hwnd, IT, 100, NULL
Да, к тому же - где ты инициализируешь переменную IT?

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 24.08.2003, 19:53
Отправитель: Bob Johnson


Отвечает dimka

Приветствую Вас, FreeFighter!
call SetTimer, hwnd, IT, 200, NULL
Ne ustonavlivai 0


Ответ отправлен: 26.08.2003, 10:47
Отправитель: dimka


 Вопрос № 3996

приветствую вас, господа!
у меня вопрос по резиденту, в рассылке который описывали.
код тут есть! вопрос относится к резидентной части программы, т.е к той, что в памяти сидит..
так вот,
push ds ;Сохраним регистры
push dx
push cs (???)
pop ds (???)
mov dx,offset My_string
pushf (???)
call dword ptr cs:[Int_21h_vect] ;Вывели нашу строку вместо той, которую надо было
pop dx (???)
pop ds (???)
popf (???)
мы сохраняем в стек ds,dx,cs, затем восстанавливаем ds,
но ведь в него восстановится то, что было последним в стек отправлено, т.е cs???? зачем так???
далее, каким образом в стек сохраняются флаги???
если мы сохранили в стек ,например, dx, а потом выполнили команду pushf, затем pop dx, то что произойдёт??
в dx восстановятся флаги, что ли??? или флаги независимо сохраняются и восстанавливаются??
В ОБЩЕМ, ГОСПОДА, ПОМОГИТЕ РАЗОБРАТЬСЯ С ТЕМИ ДЕЙСТВИЯМИ, КОТОРЫЕ ЭТОТ ФРАГМЕНТ ПРОИЗВОДИТ СО СТЕКОМ!!
**** БЛАГОДАРЮ, ЧТО ПОМОГЛИ РАЗОБРАТЬСЯ С CV!!*****
ЗАРАНИЕ БЛАГОДАРЕН!!!


Приложение:


Вопрос отправлен: 24.08.2003, 21:13
Отправитель: Женя (25-49-32@e-mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает _vt

Доброе время суток, Женя!
Тут всё очень просто:
> push ds ;сохраняются регистры ds:dx, которые в программе
> push dx ;вызывающей 21 прерывание указывают на строку
> push cs (???) ;а это совсем просто: нам ведь надо подменить строку
> pop ds (???) ; на свою: а наша строка находится в текущем сегменте, надо
> mov dx,offset My_string ; cs=ds, а реальный cs сам потом восстановится при выходе из прерывания
> pushf (???) ; а эта конструкция описана в следующем выпуске
> call dword ptr cs:[Int_21h_vect] ; просто так всегда вызываются старые обработчики прерываний
> pop dx (???) ;здесь вообще не должно быть вопросов: все сохраненные
> pop ds (???) ;регистры
> popf (???) ;восстанавливаются

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 10:35
Отправитель: _vt


Отвечает Евгений Иванов

Здравствуйте, Женя!
Здорово, друган!
> мы сохраняем в стек ds,dx,cs, затем восстанавливаем ds,
Это нужно для доступа к сегменту кода (данных).
Потому что в перывании DS будет чем угодно!
> в dx восстановятся флаги, что ли???
:-)
Ты меня насмешил. Я хохотал полчаса!
Это нужно для запуска прерывания с помощью CALL.
То есть связка {pushf;call} типа эмулируют INT.
Бывай!


Ответ отправлен: 24.08.2003, 21:40
Отправитель: Евгений Иванов


Отвечает Greys

Добрый день, Женя!
>push cs (???)
>pop ds (???)
Данный фрагмент проще пареной репы(сейчас бы репки с медом и бакал красного вина! :)опять на лирику потянуло!)и вы сейчас поймете почему! Данная операция помещает в стек значение cs и, извлекая из стека, загружает его в ds(ds=cs), т.е. теперь оба сегментных регистра указывают на один и тот же сегмент. Ведь как я понял резидент отлавливает 09 функцию 21h прерывания, а значит понадобится адрес выводимой строки ds:dx, а в данном резиденте выводимая строка хранится в том же сегменте, что и исполняемый код!
>pushf
необходимо поместить в стек регистр флагов поскольку возврат из обработчика прерывания будет осуществляться командой IRET, которая восстановит регистр флагов.
>Int_21h_proc proc
>pushf ;сохраним в стеке регистр флагов
>...
>push ds
>push dx
>...
>pop dx (???)
>pop ds (???)
>popf;восстановим регистр флагов
восстановим регистры
>далее, каким образом в стек сохраняются флаги???
сохраняются в стеки не флаги как сами по себе, а регистр флагов, т.е. сохраняется как обычный регистр(у них там равенство перед законом).
>если мы сохранили в стек ,например, dx, а потом выполнили >команду pushf, затем pop dx, то что произойдёт??
в dx загрузится регистр флагов, а в стеке останется прошлое значение dx!
С уважением,GREYS!

Ответ отправлен: 28.08.2003, 03:00
Отправитель: Greys


 Вопрос № 3997

На компе установлена WinME хочу перейти на Win2000, подскажите пожалуйста как настроить комп, для того чтобы можно было юзать асм под ДОС. Может быть винт хитро разбить, FAT 16 под ДОС раздел сделать или еще как нибудь. В настоящее время юзаю асм под ДОС загружаясь с дискеты, очень неудобно.



Вопрос отправлен: 24.08.2003, 22:17
Отправитель: Ефим

[Следующий вопрос >>] [Список вопросов]

Отвечает ASMодей

Доброе время суток, Ефим!
Если в твоих программах не используется защищенный режим, то можно писать на ассемблере прямо в Windows, должно работать.
Если же тебе нужен "чистый" DOS, то можно при разбивке диска выделить небольшой раздел, установить туда DOS и использовать какой-нибудь загрузчик для переключения между разделами.


Ответ отправлен: 25.08.2003, 09:03
Отправитель: ASMодей


Отвечает _vt

Добрый день, Ефим!
Раздел с DOS абсолютно бесполезен: вполне можно настроить DOS и под Win2000. Есть даже множество преимуществ. Вот подробная инструкция:
1) прописываешь все используемые компиляторы (не только ассемблеры, но и другие: С, Pascal...) в переменной PATH: в отличие от DOS и Win9x/ME пути можно менять без перезагрузки и прописываются они через панель управления, а не через autoexec и config ...
2) у тебя должны быть версии ассемблера, работоспособные в NT системах : например MASM 6.11 работать не будет, надо найти обновление...
3) если используешь TASM, и при этом используешь FAR, то в файле %Systemroot%config.nt должен быть параметр NTCMDONLY. При этом еще уменьшится совместимость с DOS, но зато не будет проблем с FAR и линкером TLINK.EXE
4) насчет совместимости с DOS: если ты пишешь уж очень мощные программы, использующие неподдерживаемые NTVDM функции, и если ты пишешь что-то наподобие собственной операционной системы, то если у тебя вполне мощная машина, советую использовать PC-эмулятор, например VMWare или VirtualPC, а наилучший вариант, но наиболее тяжелый в настройке - Bochs... Вот тут ты можешь в окне запускать полноценный DOS, и создать виртуальный FAT16 раздел, причем если у тебя очень новое и мощное железо, реальный DOS может толком не работать из-за несовместимости, а эмуляторы с этим полностью справляются...
5) Если есть еще вопросы по настройке - пиши

---===*** Updated E-Man 1.5 - it's cool!***===---


Ответ отправлен: 25.08.2003, 10:35
Отправитель: _vt


Отвечает Bob Johnson

Добрый день, Ефим!
А что, в win me в командной строке (из far, например) запустить асм не судьба?
У меня, например, win xp и я использую tasm 5 для dos и windows. В переменную path вписал пусть к каталогу tasm\bin, после чего компилрую батниками такого вида:
@echo off
tasm 1.asm /m2
tlink 1.obj /t
Это для дос
@echo off
cls
SET FI=1
SET FO=1
SET TASMPATH=F:\run\TASM
%TASMPATH%\bin\tasm32 /ml /t /m3 /z /q /i%TASMPATH%\Include %FI%.asm
%TASMPATH%\bin\tlink32 -x -Tpe -ap -c -V4.0 -L%TASMPATH%\Lib %FI%.obj, %FO%.exe , , import32.lib
del %FI%.obj
А это для windows.
Никакого специального раздела не нужно (тем более, fat16) - будет работать и на ntfs.

* EMan1.5: ---===*** The game we play ***===---


Ответ отправлен: 25.08.2003, 17:21
Отправитель: Bob Johnson


Отвечает Евгений Иванов

Здравствуйте, Ефим!
Используй загрузчик SyMon.
http://www.symon.ru/.


Ответ отправлен: 25.08.2003, 00:24
Отправитель: Евгений Иванов


Отвечает [L2]Max

Здравствуйте, Ефим!
В режиме эмуляции (в консоли), а тестить в досе, лучше вин 98 и 2000 поставь, удобно, проверенно опытом

Ответ отправлен: 26.08.2003, 04:54
Отправитель: [L2]Max


Отвечает dimka

Доброе время суток, Ефим!
Sozdai nescoliko razdelov vinta:
1)fat32 pod win 2000
2)fat16 pod dos
3)ext3,swap pod linux(ne obiazatelino)
Vot i vseo!!!


Ответ отправлен: 26.08.2003, 11:17
Отправитель: dimka



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (37)
C / C++ (30)
Perl (4)
Builder / Delphi (19)
Pascal (25)
Basic / VBA (8)
Java / JavaScript (8)
PHP (9)
Криптография (9)
WinAPI (17)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (62)
"Железо" (41)
Поиск информации (23)
Администратору
Windows NT/2000/XP (31)
Linux / Unix (13)
Юристу
Гражданское право (9)
Семейное право (5)
Трудовое право (6)
КоАП (5)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
Профессиональная WEB-Студия B.I.T.


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное