Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Октябрь 2004 → | ||||||
1
|
2
|
3
|
||||
---|---|---|---|---|---|---|
4
|
5
|
7
|
8
|
9
|
10
|
|
11
|
12
|
13
|
15
|
16
|
||
18
|
19
|
20
|
22
|
23
|
24
|
|
25
|
26
|
28
|
29
|
30
|
Автор
Статистика
7.862 подписчиков
-1 за неделю
-1 за неделю
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 776
от 27.10.2004, 23:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 5933 Отправлено ответов: 15850 Активность: 267.1 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Евгений Статус: Доверительный Общий рейтинг: 107.59 [Подробней >>] |
Evils_Interrupt Статус: Доверительный Общий рейтинг: 120.27 [Подробней >>] |
Евгений Иванов Статус: Профессиональный Общий рейтинг: 132.24 URL: Super Assembler Software Телефон: НСС +7 831 3107039 [Подробней >>] |
Стас Статус: Опытный Общий рейтинг: 122.47 [Подробней >>] |
bocha Статус: Профессиональный Общий рейтинг: 120.17 [Подробней >>] |
DSota Статус: Доверительный Общий рейтинг: 124.41 [Подробней >>] |
Tigran K. Kalaidjian Статус: Профессиональный Общий рейтинг: 179.9 URL: Персональная страничка [Подробней >>] |
Lynx Статус: Начальный Общий рейтинг: 125.92 [Подробней >>] |
Artemy Статус: Опытный Общий рейтинг: 108.28 Телефон: 8 905 549 38 66 [Подробней >>] |
Василевский Александр Статус: Опытный Общий рейтинг: 116.58 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 110.82 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 5903. Hi All Подскажите начинающему, please, чем отлаживать программы для виндус. И может какую-нить доку ... (ответов: 2)
Вопрос № 5904. Уважаемые эксперты! помоготе обьяснить как перехватить INT 09h и создать POPUP прогу если можно приш... (ответов: 2)
Вопрос № 5905. Здраствуйте! Тов. эксперты помогите или объясните как сделать под досом поиск файла на диске (полнос... (ответов: 4)
Вопрос № 5909. Уважаемые эксперты, как организовать вывод на экран содержимое регистра(число) средствами DOS или BI... (ответов: 3)
Вопрос № 5910. SOS!HELP! :@ Здраствуйте уважаемые эксперты! У меня огромная проблема и я на гране срыва!У меня така... (ответов: 4)
Вопрос № 5911. Уважаемые эксперты! Почему при передаче данных по POP3 у меня в блок передаваемых данных местами вст... (ответов: 1)
Вопрос № 5912. Стыдно спрашивать , но как можно записать значение в старшее слово 32 разрядного регистра (EAX)? В п... (ответов: 5)
Вопрос № 5913. У меня такая проблема. По дисциплине Организация ЭВМ и систем досталась курсовая на тему "Защит... (ответов: 1)
Вопрос № 5914. Привет. Помогите с Softice'om. Для запуска нажимаю ctrl+d - зависает, еще раз - переходит(винда) в ... (ответов: 2)
Вопрос № 5915. Как узнать размер файла (открытого или открываемого) в DOS'е?... (ответов: 5)
Вопросов: 10, ответов: 29
Вопрос № 5903 |
Hi All
Подскажите начинающему, please, чем отлаживать программы для виндус. И может какую-нить доку попроще и на русском.
Вопрос отправлен: 17.10.2004, 15:41
Отправитель: Maxim (maxyer@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений
Добрый день, Maxim!
Soft Ice
Ответ отправлен: 17.10.2004, 18:08
Отправитель: Евгений
Отвечает Evils_Interrupt
Доброе время суток, Maxim!
Купи себе SoftICE и книгу Роберта Айрапетяна.
Ответ отправлен: 17.10.2004, 23:25
Отправитель: Evils_Interrupt
Вопрос № 5904 |
Уважаемые эксперты! помоготе обьяснить как перехватить INT 09h и создать POPUP прогу если можно пришлите исходник от простой проги
Вопрос отправлен: 17.10.2004, 21:03
Отправитель: Black (hushcrash@land.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Евгений Иванов
Доброе время суток, Black!
push es ;Сохраним прежний обработчик клавиатуры
mov ax,3509h
int 33
mov wptr [old_int9],bx
mov wptr [old_int9+2],es
pop es
mov ax,2509h
mov dx,ofs int_9entry
int 33
int_9entry: ;============================================================
push ax
in al,96
mov bptr [cs:Port60],al
mov ax,wptr [cs:dPause]
mov wptr [cs:fPause],ax
pop ax
db 234
old_int9 dd -1
* EMan: -=- И легко перо, да на крышу не закинешь. =-=
Ответ отправлен: 18.10.2004, 13:08
Отправитель: Евгений Иванов
Отвечает Evils_Interrupt
Добрый день, Black!
дело в том, что каждое прерываение занимает 4 байта, и распологается таблица векторов в самом начаеле. То есть если адрес в 09h*4h заменить на свой вот те и перехват!
Ответ отправлен: 17.10.2004, 23:23
Отправитель: Evils_Interrupt
Вопрос № 5905 |
Здраствуйте!
Тов. эксперты помогите или объясните как сделать под досом поиск файла на диске (полностью, а не только в одной директории), а точнее как сделать запоминание директории в которых уже делался поиск.
И еще вопрос, доп. память выделяется только для exe-фалов, а для com-файла можно выжелить 100к памяти или нет?
Зараниен большое спосибо!
Вопрос отправлен: 18.10.2004, 08:15
Отправитель: Алексей
[Следующий вопрос >>] [Список вопросов]
Отвечает Стас
Добрый день, Алексей!
Просто когда перебираешь файлы (FindFirst,FindNext), если это директория, сохраняешь текущий DTA, заходишь в неё, и делаешь новый поиск *.*(FindFirst,FindNext). Когда директория кончится, возвращаешся к сохраненной DTA и продолжаешь(FindNext). Так может быть много раз...
EXE от COM отличаются только способом загрузки, и тем что у COM SS=DS=ES=CS.
Действительно, текущей проге выделяется вся доступная память. Перенеси стек, помни о сегментации (ограничение в 64K) и используй. Также можно выделять EMS и XMS.
Ответ отправлен: 18.10.2004, 12:44
Отправитель: Стас
Отвечает bocha
Здравствуйте, Алексей!
1.Да поможет Вам рекурсия,
в псевдокоде это будет выглядеть примерно следующим образом:
процедура_поиска_файла(на входе имя дирректории)
установить текущим полученый директорий
найти первый файл
если это директорий - вызвать себя
пока дескриптор действителен - находим следующий
если это директорий -вызываем себя
закрываем поиск
можно и без рекурсии, но это несколько сложнее
2.Сколько может скушать дос, столько и выделить можно
mov bx, sp
shr bx, 4
mov ax, ss
add bx, ax
inc bx; теперь в bx - первый доступный сегмент, если конечно память предварительно небыла освобождена
в случае предварительного освобождения памяти Вам помогут следующие строки
mov bx, 1000h;размер выделяемого блока в параграфах
mov ax, 4800h
int 21h
mov es, ax;теперь в es - выделеный семент
не забывайте, что размер выделяемого блока не может превышать 64к, но ни кто не мешает выделить несколько се гментов
Ответ отправлен: 18.10.2004, 15:34
Отправитель: bocha
Отвечает DSota
Добрый день, Алексей!
В MS-DOS для COM-файла автоматический выделяется вся доступная память. Поэтому дополнительного выделения обычно не требуется, наоборот приходиться ненужную память возвращать ОС.
Ответ отправлен: 18.10.2004, 09:07
Отправитель: DSota
Отвечает Евгений Иванов
Доброе время суток, Алексей!
mov ah,4ah
mov bx,(LEN_FILE+LEN_STEK+LEN_dat+277)/16
int 33 ;Оставим себе память,сколько нам необходимо
потом выделяй памяти хоть 600 Кб
* EMan: -=- И легко перо, да на крышу не закинешь. =-=
Ответ отправлен: 18.10.2004, 13:09
Отправитель: Евгений Иванов
Вопрос № 5909 |
Уважаемые эксперты, как организовать вывод на экран содержимое регистра(число) средствами DOS или BIOS. Спасибо
Вопрос отправлен: 19.10.2004, 09:07
Отправитель: oleg_s
[Следующий вопрос >>] [Список вопросов]
Отвечает Evils_Interrupt
Добрый день, oleg_s!
для начала число надо предствить в виде аски кода!
Далее закинь в массив и заверши символом '$' после выведи на экран с помощью досовской функции 09h
lea dx,string ; адресация к строке относительно ds:dx
mov ah,9h
int 21h
Удачи
Ответ отправлен: 19.10.2004, 09:45
Отправитель: Evils_Interrupt
Отвечает Tigran K. Kalaidjian
Добрый день, oleg_s!
Вывод производится с привлечением прерывания int10h
Подробное описание на русском можно прочитать у Зубкова
глава 4.3.2.
Если у Вас нет Зубкова, пишите на kalaidjian@pochtamt.ru - вышлю конкретную главу.
Техника перевода числа в строку описывалась в рассылке не раз, думаю, эксперты ответят еще раз =)
Варианты (с привлечением средств MS-DOS) изложены в FAQ:
http://kalaidjian.pochtamt.ru/rusfaq.rar
Суть та же, единственное, что блок вывода нужно будет заменить.
Ответ отправлен: 19.10.2004, 21:36
Отправитель: Tigran K. Kalaidjian
Отвечает Lynx
Добрый день, oleg_s!
Смотри архив рассылки. В последних 200 выпусках этот вопрос раз 100 задавался.
Ответ отправлен: 20.10.2004, 11:14
Отправитель: Lynx
Вопрос № 5910 |
SOS!HELP! :@
Здраствуйте уважаемые эксперты!
У меня огромная проблема и я на гране срыва!У меня такая проблема,я начал изучать ассемблер пересмотрел много лит-ры и остановился на книге г-на Калашникова О.А. «Ассемблер –это просто»,но все никак не могу написать первую программу в его книге ,да и остальные пробовал тоже не получается!:((((( вначале я установил MASM611 в windows2000?не получилось,затем мне «умные» люди посоветовали что под винду 2000 она работать не будет установи винду98,и попробуй там поработать,после чего мне пришлось установить винд98, попробовал там сделать первую программу,:(((((((,опять не получилось, при запуске программы ,вначале появляется сообщение что мол эта прога работает в режиме эмуляции ДОС,и задает вопрос создать для нее ярлык? яя отвечаю ДА,опять запускаю :(((((,ни фига!показывает что-то типа DOSXNT error или что-то вроде….,
…..Посаветуйте что-нить!а то скоро повешусь!:))))
Вопрос отправлен: 19.10.2004, 11:40
Отправитель: jax (jax_bad@list.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Artemy
Приветствую Вас, jax!
А что конкретно делает эта программа?
Если она работает с аппаратным таймером
через порты, то под вин98 она работать не будет и
будет работать только в DOS-моде
Ответ отправлен: 19.10.2004, 14:41
Отправитель: Artemy
Отвечает Lynx
Здравствуйте, jax!
Не переживат ты так. ИМХО у 70% новичков ничего первый месяц не получается. Вообще я бы посоветовал тебе под DOS использовать TASM. Если у тебя винда не запускает досовские проги, то перезагрузись в режиме MS-DOS и запусти прогу от туда. :))) А через твои проблеммы прошли почти все, главное набраться терпения. ;)
Ответ отправлен: 20.10.2004, 11:14
Отправитель: Lynx
Отвечает bocha
Добрый день, jax!
Где программа и командная строка? На сколько я знаю никто из экспертов телепатией не страдает.
Ответ отправлен: 20.10.2004, 04:12
Отправитель: bocha
Отвечает Стас
Доброе время суток, jax!
Для того, чтобы понять, что у тебя происходит, нужны текст проги и команды которыми ты её компилируешь.
Ответ отправлен: 20.10.2004, 15:09
Отправитель: Стас
Вопрос № 5911 |
Уважаемые эксперты! Почему при передаче данных по POP3 у меня в блок передаваемых данных местами вставляется 3 левых байта 21h,0Dh,0Ah ?
Вопрос отправлен: 20.10.2004, 14:11
Отправитель: Andrey
[Следующий вопрос >>] [Список вопросов]
Отвечает Evils_Interrupt
Приветствую Вас, Andrey!
так как символы 0dh,0ah управляющие коды
Ответ отправлен: 20.10.2004, 15:18
Отправитель: Evils_Interrupt
Вопрос № 5912 |
Стыдно спрашивать , но как можно записать значение в старшее слово 32 разрядного регистра (EAX)?
В прграмме следует указывать нечто вроде USES 32.
Приведите синтаксис написания.
Вопрос отправлен: 21.10.2004, 00:50
Отправитель: Khanc (Khanc@rambler.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Evils_Interrupt
Добрый день, Khanc!
на прямую ни как только закинув в ax, а дальше сдвинув влево циклически!
Ответ отправлен: 21.10.2004, 08:30
Отправитель: Evils_Interrupt
Отвечает Василевский Александр
Приветствую Вас, Khanc!
Записать значение только в старшее слово нельзя. Можно воспользоваться следующим трюком:
...
.386 ; разрешаем использовать регистры EAX ...
...
ROR EAX, 16d ; меняем местами старшее и младшее слово
MOV AX, ... ; здесь записываем нужные данные
ROR EAX, 16d ; возвращаем старшее слово на место
...
В результате этого кода данные запишутся в старшее слово регистра EAX, младшее слово останется неизменным.
Можно придумать множество подобных трюков, но принцип остаётся тем же: сохраняем младшее слово, меняем местами младшее и старшее слово, записываем в старшее (а реально, в младшее) слово, опять меняем местами, восстанавливаем младшее слово.
Ответ отправлен: 21.10.2004, 08:59
Отправитель: Василевский Александр
Отвечает Lynx
Доброе время суток, Khanc!
rol eax, 16
mov ax, <значение>
rol eax, 16
Ответ отправлен: 21.10.2004, 12:27
Отправитель: Lynx
Отвечает DSota
Добрый день, Khanc!
На ассемблере просто нужно указать 32-х разрядный тип процессора (386 и выше) и он сразу же "научиться понимать" 32-х разрядные команды. Нужно писать "P386" или ".386" перед инструкциями, которые используют расширенные регистры, например:
P386
mov eax,012345678h
mov ebx,091237890h
А если именно в старшую часть, не трогая младшую, то можно воспользоваться сдвигом:
ror eax,16
mov ax,01234h
rol eax,16
Ответ отправлен: 21.10.2004, 09:38
Отправитель: DSota
Отвечает Евгений Иванов
Добрый день, Khanc!
Пиши в AX, потом сдвигай:
shl eax, 16
mov ax, ***
rol eax, 16
* EMan: -=- И легко перо, да на крышу не закинешь. =-=
Ответ отправлен: 22.10.2004, 01:11
Отправитель: Евгений Иванов
Вопрос № 5913 |
У меня такая проблема. По дисциплине Организация ЭВМ и систем досталась курсовая на тему "Защитное низкоуровневое форматирование дискеты", с того дня ваша книга стала просто бесценной, но где можно подробней ознакомится с данной темой, примерами и такими же хорошими пояснениями к ним. Будут ли подобные вопросы освещены в ваших рассылках, если да, то как скоро (время поджимает)
Приложение:
Вопрос отправлен: 21.10.2004, 21:31
Отправитель: Саша
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Здравствуйте, Саша!
Посмотри здесь:
http://progs-maker.narod.ru/info/hack_vir/lcp.rar
Ответ отправлен: 22.10.2004, 09:12
Отправитель: ASMодей
Вопрос № 5914 |
Привет.
Помогите с Softice'om. Для запуска нажимаю ctrl+d - зависает, еще раз - переходит(винда) в нормальное состояние. Что делать?
Приложение:
Вопрос отправлен: 23.10.2004, 20:46
Отправитель: bcc
[Следующий вопрос >>] [Список вопросов]
Отвечает DSota
Доброе время суток, bcc!
То есть он не зависает, просто символы отладки не туда выводит :)))...
Неправильно установлен видеодрайвер SoftIce. Лучше скачать с их сайта нужный драйвер или пользоваться стандартным VGA драйвером.
Ответ отправлен: 25.10.2004, 10:02
Отправитель: DSota
Отвечает Стас
Приветствую Вас, bcc!
Не виснет он. Просто не отображает свое окно на экране.
Может неправильние настройки на GeForce Fx 5200.
Попробуй в оконном режиме.
Ответ отправлен: 23.10.2004, 21:44
Отправитель: Стас
Вопрос № 5915 |
Как узнать размер файла (открытого или открываемого) в DOS'е?
Вопрос отправлен: 23.10.2004, 23:39
Отправитель: Serega
[Следующий вопрос >>] [Список вопросов]
Отвечает DSota
Доброе время суток, Serega!
Размер файла можно узнать передвинув указатель файла в конец файла и получив его позицию...
Приложение:
Ответ отправлен: 25.10.2004, 09:59
Отправитель: DSota
Отвечает Стас
Здравствуйте, Serega!
В DOS есть такой способ открытия файла (больно сильно устаревший, но всеже) через FCB (ah=0fh,int21h). Так вот в этом самом FCB сразу после открытия файла, по смещению +10h лежит Dword размер файла.
Если говорить о handle ориентированных функциях:
в BX - номер файла, в DX,CX кладешь 0, в AX - 4202h и вызываешь int 21h. Результат в DX:AX размер файла. Правда и указатель чтения/записи указывает на конец файла...
Ответ отправлен: 24.10.2004, 21:30
Отправитель: Стас
Отвечает Евгений Иванов
Здравствуйте, Serega!
42h функция 21h-ого прерывания
* EMan: -=- И легко перо, да на крышу не закинешь. =-=
Ответ отправлен: 23.10.2004, 23:46
Отправитель: Евгений Иванов
Отвечает Василевский Александр
Добрый день, Serega!
Функции, которая возвращает размер открытого файла в DOS'е нет. Можно использовать следующий способ: переместить указатель в файле на конец файла при помощи функции 4202h (int 21h). Функция вернёт текущую позицию от начала файла:
MOV AH, 4202h ; функция перемещения указателя
MOV BX, Handle ; дескриптор открытого файла
XOR CX, CX ; новая позиция (от конца файла)
XOR DX, DX ; (самый конец файла)
INT 21h ; результат (если CF=0) -
; новая позиция в файле (от его
; начала - его размер)
Ответ отправлен: 25.10.2004, 12:25
Отправитель: Василевский Александр
Отвечает Evils_Interrupt
Доброе время суток, Serega!
Есть функция для работы с файловым указателем. Так вот поставь его в конец. Это действие в Роберте Джордейне написано, когда то я его в сети качал, хорошая штука!
Ответ отправлен: 24.10.2004, 10:08
Отправитель: Evils_Interrupt
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (25) C / C++ (16) Perl (8) Builder / Delphi (18) Pascal (20) Basic / VBA (8) Java / JavaScript (7) PHP (19) Криптография (8) WinAPI (17) Радиоэлектроника (13) |
Пользователю Windows 95/98/Me (40) Windows NT/2000/XP (60) "Железо" (37) Поиск информации (21) |
Администратору Windows NT/2000/XP (37) Linux / Unix (14) |
Юристу Гражданское право (7) Семейное право (4) Трудовое право (6) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
http://subscribe.ru/
http://subscribe.ru/feedback/ |
Подписан адрес: Код этой рассылки: comp.soft.prog.faq |
Отписаться |
В избранное | ||