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

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


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

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

Выпуск № 524
от 16.04.2003, 09:00

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


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

VicSimon
Статус: Доверительный
Общий рейтинг: 102.88
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.4
URL: Программирование
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 108.01
[Подробней >>]
 
K0dMaster
Статус: Доверительный
Общий рейтинг: 121.05
[Подробней >>]
Hangatyr
Статус: Начальный
Общий рейтинг: 125.71
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 123.86
URL: моя рассылка по Protected Mode
[Подробней >>]
 
Ayl
Статус: Профессиональный
Общий рейтинг: 118.89
[Подробней >>]
Tigran K. Kalaidjian
Статус: Доверительный
Общий рейтинг: 110.75
[Подробней >>]
Joy
Статус: Опытный
Общий рейтинг: 124.93
[Подробней >>]
 
Portnov
Статус: Профессиональный
Общий рейтинг: 111.79
URL: Мой сайтик...
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 135.99
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
keleb-glin
Статус: Опытный
Общий рейтинг: 109.35
[Подробней >>]


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

Вопрос № 2956. Есть аппарат(MR Vectra), пишет дискеты 3.5'' в своем формате, который обычным PC'шным флопиком не чи... (ответов: 2)
Вопрос № 2958. Привет, эксперты! Я тут задавал вопрос про уд. соединения. и у меня возник еще один - как сервер обс... (ответов: 4)
Вопрос № 2959. Приветствую вас, эксперты. У меня вопрос: Из-за выбора неродного видеоадаптера на некоторых прогах ... (ответов: 1)
Вопрос № 2960. Доброе время суток !! Прога что в приложении дергает состояние оси Y джойста А. Подскажите как сдерн... (ответов: 2)
Вопрос № 2961. гДПСБЯРБСИРЕ, ЩЙЯОЕПРШ! оНЛНЦХРЕ НОРХЛХГХПНБЮРЭ ОПНЦПЮЛЛС, НВЕМЭ ХМРЕПЕЯМН, ЛНФМН КХ ЩРН ЯДЕКЮРЭ БНН... (ответов: 2)
Вопрос № 2962. Здравствуйте уважаемые эксперты! Вопрос простой,пытаюсь сделать простую интерактивную программу:)Выв... (ответов: 7)
Вопрос № 2963. Ув. эксперты. Пытаюсь перевести десятичное число в двоичное. По логике, вроде бы, все должно получат... (ответов: 4)
Вопрос № 2964. У меня вопрос, я чайник в Ассме, но очень хочется.. что посоветуете? Вообще нужно небольшое руководс... (ответов: 6)
Вопрос № 2965. Здравствуйте! Уважаемые Эксперты, у меня к вам такой вопрос: есть программа, которая работает с неко... (ответов: 3)

Вопросов: 9, ответов: 31


 Вопрос № 2956

Есть аппарат(MR Vectra), пишет дискеты 3.5'' в своем формате, который обычным PC'шным флопиком не читается (говорит, диск не отформатирован).
Как можно содрать при помощи обычного FDD-контроллера всю находящуюся на диске информацию(вроде как raw)?
Можно ли перепрограммировать контроллер, как нам надо? И если можно, то как?
Если кто знает, откуда рыть, то подскажите тоже...



Вопрос отправлен: 11.04.2003, 09:38
Отправитель: Alexander (alex@cld.nkz.ru)

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

Отвечает VicSimon

Доброе время суток, Alexander!
Изумительная вещь для копирования защищенных дискет - FDA (Floppy Disk Analyzer). Версию 6.1 можно найти на www.filesearch.ru.


Ответ отправлен: 11.04.2003, 09:51
Отправитель: VicSimon


Отвечает Bob Johnson

Добрый день, Alexander!
Если принцип записи такой же, то можно. Прежде всего попробуй программу diskdupe - если она прочитает, значит должно получиться, если нет - то это плохо. Еще посмотри с объемом диска - может быть этот аппарат пишет на дискету не 1.44мб, а 720кб - тогда попробуй заклеить дырку на дискете (не Write-protect, а с другой стороны) и прочитать еще раз.
И читать, естественно надо не far'om, а самому посекторно (int 13h, кажется).


Ответ отправлен: 11.04.2003, 18:18
Отправитель: Bob Johnson


 Вопрос № 2958

Привет, эксперты!
Я тут задавал вопрос про уд. соединения. и у меня возник еще один - как сервер обслуживает
несколько подключений одновременно? Простите за глупый вопрос, конечно.



Вопрос отправлен: 11.04.2003, 15:38
Отправитель: Deny

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

Отвечает Bob Johnson

Здравствуйте, Deny!
А в чем, собственно проблема? При приеме удаленного соединения winsocket выделяет для него новый порт и создает новый сокет, который и отвечает за соединение. Старый же продолжает слушать исходный порт и ждать нового соединения. В программе для этого можно использовать отдельный поток или одним потоком поочередно опрашивать несколько сокетов (можно для этого фиберы приделать).


Ответ отправлен: 12.04.2003, 01:55
Отправитель: Bob Johnson


Отвечает vitya

Здравствуйте, Deny!
Нужно написать многопоточное соединение,
каждый из потоков будет обрабатывать лишь одно из соединений.
Вот.
Наследуй от TThread.

Ответ отправлен: 11.04.2003, 15:42
Отправитель: vitya


Отвечает K0dMaster

Приветствую Вас, Deny!
Если несколько способов :через сообщения Windows и через создания потоков.
Второй способ более приемлимый и переносимый !!!
Вообщем все очень просто слушаешь порт и если на него поступает запрос то создаешь еще один поток и перенаправляешь в него все взаимодействие с клиентом здесь ограничение лишь количество свободной памяти более подробно с примерами смотри здесь www.wasm.ru

Ответ отправлен: 11.04.2003, 15:53
Отправитель: K0dMaster


Отвечает Hangatyr

Доброе время суток, Deny!
Если честно, то я не совсем понял твой вопрос. Какой именно тип сервера тебя интересует? Соединения какого типа? Допустим, ты спрашиваешь о соединении с помощью сокета (если не так - сам виноват)?
Здесь все зависит от типа сервера - возможно, для каждого нового соединения будет порождаться новый процесс,
возможно, программа сама берет на себя функции ОС и контролирует выделение ресурсов и т.д. Короче, ставь
вопрос конкретнее.

Ответ отправлен: 11.04.2003, 16:06
Отправитель: Hangatyr


 Вопрос № 2959

Приветствую вас, эксперты.
У меня вопрос:
Из-за выбора неродного видеоадаптера на некоторых прогах глючит
СофтАйс (синее окно смерти или перезагрузка). Подскажите, что можно
сделать или какая наиболее совместима с видюхой (standart VGA непредлагать).
Система: Win2k
Видюха: Radeon 9000 (чипсет RV 250)
SoftIce взят из DriverStudio 2.6



Вопрос отправлен: 11.04.2003, 19:07
Отправитель: Rustem

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

Отвечает Broken Sword

Доброе время суток, Rustem!
standart VGA никто и не предлагает, поставь Universal Video Driver

Ответ отправлен: 11.04.2003, 20:23
Отправитель: Broken Sword


 Вопрос № 2960

Доброе время суток !!
Прога что в приложении дергает состояние оси Y джойста А.
Подскажите как сдернуть остальные состояния осей и кнопок.
Заранее спасибо.


Приложение:


Вопрос отправлен: 11.04.2003, 20:13
Отправитель: anton (oven_mars@rambler.ru)

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

Отвечает Ayl

Здравствуйте, anton!
Вот смотри:
Прерывание 15h, функция 84h (задается в AH)
Подфункция задается через регистр DX:
0 - получить состояние кнопок в регистре AL - биты 4-7 показывают состояние кнопок джойстика
1 - получить координаты джойстика в регистрах AX, BX, CX и DX:
AX = горизонтальная координата джойстика A
BX = вертикальная координата джойстика A
CX = горизонтальная координата джойстика B
DX = вертикальная координата джойстика B
Для всех вызовов этой функции установленный флаг CF указывает на неправльное значение в регистре DX при вызове


Ответ отправлен: 14.04.2003, 12:34
Отправитель: Ayl


Отвечает Tigran K. Kalaidjian

Доброе время суток, anton!
После вызова прерывания 15h (функция 1h) в следующих регистрах хранятся состояния кнопок:
AX = X позиция джойстика A
BX = Y позиция джойстика A
CX = X позиция джойстика B
DX = Y позиция джойстика B
Подробнее см. в приложении описание Ральфа Брауна

Приложение:

Ответ отправлен: 11.04.2003, 22:21
Отправитель: Tigran K. Kalaidjian


 Вопрос № 2961

гДПСБЯРБСИРЕ, ЩЙЯОЕПРШ!
оНЛНЦХРЕ НОРХЛХГХПНБЮРЭ ОПНЦПЮЛЛС, НВЕМЭ ХМРЕПЕЯМН, ЛНФМН КХ ЩРН ЯДЕКЮРЭ БННАЫЕ, ХКХ МЕР?
оПНЦПЮЛЛЙЮ БШБНДХР ЯБНИ 16-ПХВМШИ ЙНД.


Приложение:


Вопрос отправлен: 11.04.2003, 20:32
Отправитель: Witt

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

Отвечает Ayl

Доброе время суток, Witt!
Слушай, я тебя не понял... Ты что, с первого раза не понимаешь? Я же тебе присылал отпимизированную программу в ответ на твой предыдущий вопрос от 10 апреля. Что, за 4 дня не смог прочитать?
И разберись со своей кодировкой - в таком виде вопрос нечитабелен, требуется перекодировщик.

Ответ отправлен: 14.04.2003, 12:50
Отправитель: Ayl


Отвечает Joy

Здравствуйте, Witt!
Оптимизировать?! По скорости или по размеру? А вообще, что она делает?

Ответ отправлен: 15.04.2003, 11:16
Отправитель: Joy


 Вопрос № 2962

Здравствуйте уважаемые эксперты!
Вопрос простой,пытаюсь сделать простую интерактивную программу:)Вывод на экран вопроса напр.'Сейчас утро?',если да то жму на 'Y' и выдаётся сообщение 'Доброе утро',если ввожу 'N', то сообщение 'Добрый день'.Есть иходник ,но он видимо кривой.Плз.,покажите где ошибка и в чем она заключается.Спасибо!


Приложение:


Вопрос отправлен: 11.04.2003, 22:40
Отправитель: Dim-A

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

Отвечает Ayl

Доброе время суток, Dim-A!
Конечно есть! У тебя постоянно выводится "Dobroe utro" и не ожидает ответа на вопрос? Ну и правильно! А кто будет вводить символ с клавиатуры? Тебе нужно перед командой
cmp al, 'Y'
написать такое:
xor ax, ax
int 16h
Тоогда будет работать.

Ответ отправлен: 14.04.2003, 12:56
Отправитель: Ayl


Отвечает Hangatyr

Добрый день, Dim-A!
В принципе, правильно, но надо бы добавить считывание символа с клавиатуры посредством функции 01h/21h.

Приложение:

Ответ отправлен: 12.04.2003, 05:44
Отправитель: Hangatyr


Отвечает Portnov

Доброе время суток, Dim-A!
mov ah,9
int 21h
cmp al,'Y'
jz m1
Откуда здесь в al возмется 'X','y', или что бы то ни было???
Для ввода клавиши используйте напр. int16h/Fn0: (см. приложение).
С уважением, Portnov


Приложение:

Ответ отправлен: 12.04.2003, 15:33
Отправитель: Portnov


Отвечает Bob Johnson

Приветствую Вас, Dim-A!
Функция 9 только выводит на экран символы. Она не обеспечивает ввода данных с клавиатуры. Чтобы ввести один символ следует воспользоваться функцией 00h int 16h:
mov ah, 0
int 16h
;теперь al=символ ASCII


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


Отвечает Joy

Здравствуйте, Dim-A!
Все написал ты правильно (смотри в приложении), вот только забыл "спросить" клавишу у пользователя (ну еще проверку бы надо, если пользователь нажал другую кравишу, напривер "о").

Приложение:

Ответ отправлен: 15.04.2003, 14:42
Отправитель: Joy


Отвечает Tigran K. Kalaidjian

Приветствую Вас, Dim-A!
Исправленный вариант в приложении.
Ты забыл принять символ для обработки.
используй ah=08hint 21h

Приложение:

Ответ отправлен: 13.04.2003, 16:58
Отправитель: Tigran K. Kalaidjian


Отвечает Maverick

Добрый день, Dim-A!
Да ты сам погляди описание ф-ий и все поймешь.
Ты только выводишь сообщения, но нигде не принимаешь ввод.
Можно так принимать
mov ah,10h
int 16h


Ответ отправлен: 15.04.2003, 05:11
Отправитель: Maverick


 Вопрос № 2963

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


Приложение:


Вопрос отправлен: 11.04.2003, 22:47
Отправитель: BAPABP

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

Отвечает Ayl

Приветствую Вас, BAPABP!
Какая ошибка происходит? А, ну я, в принципе, догадался, какая... Все дело в том, что у тебя выполнение программы сразу же начинается с процедуры. Ассемблер - это тебе не язык высокого уровня, который сам разбирает, с какого места начать выполнение. Здесь все строго - для COM-файла (в который ты это все и формируешь) стартовой является точка cs:100h. Этот адрес ты устанавливаешь с помощью директивы org 100h, в результате чего первая команда процедуры является первой командой для выполнения. В результате у тебя регистр AX неинициализирован (равен 0 при старте программы), это значение заносится в регистр DI, в результате чего ты затираешь начальные байты PSP. после выполнения команды ret управление передается по адресу PSP:0, а там у тебя к этому моменту черт знает что находится. Результат - на лице!
Как исправить? Перенести процедуру перевода за команду int 20h.


Ответ отправлен: 14.04.2003, 13:44
Отправитель: Ayl


Отвечает Hangatyr

Добрый день, BAPABP!
Не знаю, я посмотрел код - алгоритм вроде верный, а ошибка в самой структуре программы - точкой входа считается (в твоем случае) то, что стоит за меткой start т.е. первая инструкция твоей процедуры. Вторая ошибка -"STR" - это мнемокод, его нельзя использовать в качестве имени переменной. Исправленный вариант в приложении...

Приложение:

Ответ отправлен: 12.04.2003, 06:07
Отправитель: Hangatyr


Отвечает Bob Johnson

Добрый день, BAPABP!
Работает у тебя все... Есть только такая ошибка - stos использует es:di (но в com файле ds=es, так что все нормально), а ты потом пишешь mov [DI],DL - если ds не будет равно es, то тогда будут проблемы. В общем, смотри как ты вызываешь свою процедуру - я делал так:
mov bx, 1000h
mov ax, offset str
call NmbrToBi
mov dx, offset str
mov ah, 9
int 21h
ret
И число выводилось...


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


Отвечает Maverick

Здравствуйте, BAPABP!
Ой-ей, это ты писал?
Гораздо проще:
есть у тебя например в AH число 7, тебе надо вывести его двоичный эквивалент.
mov ah,7 ;Число
mov cx,8 ;столько разрядов
Cycle:
xor al,al
rol ax,1
add al,30h
int 29h
loop cycle
Вот и все.

Ответ отправлен: 15.04.2003, 05:11
Отправитель: Maverick


 Вопрос № 2964

У меня вопрос, я чайник в Ассме, но очень хочется.. что посоветуете? Вообще нужно небольшое руководство. Не игнорируйте пожалуйста.



Вопрос отправлен: 12.04.2003, 05:22
Отправитель: BL00dASp

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

Отвечает keleb-glin

Здравствуйте, BL00dASp!
Руководство - это всегда пожалуйста.
А я ещё посоветую две книги:
В. Юров "assembler, учебный курс"
Зубков "ассемблер для ДОС, Виндоуз и Юникс"

Ответ отправлен: 12.04.2003, 19:16
Отправитель: keleb-glin


Отвечает Bob Johnson

Доброе время суток, BL00dASp!
Почитай Зубкова. Говорят, хорошая книга для начинающих. bobjohnson.nm.ru


Ответ отправлен: 13.04.2003, 12:51
Отправитель: Bob Johnson


Отвечает Tigran K. Kalaidjian

Доброе время суток, BL00dASp!
Олег Калашников "Ассемблер? Это просто !"
В. Юров "Ассемблер. учебник"
Я сам начинал с Питера Абеля “Ассемблер и программирование для IBM PC”
Для начала достаточно...

Ответ отправлен: 12.04.2003, 14:47
Отправитель: Tigran K. Kalaidjian


Отвечает Hangatyr

Доброе время суток, BL00dASp!
Ну, по Асму тонны книг написаны. Скажи какая конкретно область программирования тебя интересует и какого типа руководство нужно.

Ответ отправлен: 12.04.2003, 05:50
Отправитель: Hangatyr


Отвечает Joy

Приветствую Вас, BL00dASp!
На сайте Боба Джонсона есть рассылка О. Калашникова "Ассемблер - это просто ..." Вот с нее и начни.

Ответ отправлен: 15.04.2003, 11:16
Отправитель: Joy


Отвечает Maverick

Приветствую Вас, BL00dASp!
Это не ответ, а так...напоминание о там как задавать вопросы...
Чисто интимный вопрос, чего именно хочется? Если пива то нам по пути :)
Вообще под какую операционку собираешся писать, что писать?
Для чего вообще тебе нужен асм?(для каких целей: драйвера, лабуда, вирусы и т.д.)


Ответ отправлен: 15.04.2003, 05:11
Отправитель: Maverick


 Вопрос № 2965

Здравствуйте!
Уважаемые Эксперты, у меня к вам такой вопрос: есть программа, которая работает с некоторым устройством через порты и мне надо, чтобы при попытке чтения/записи в порт управление получала моя программа. Возможно ли такое? И если да, то как?
Заранее благодарен.



Вопрос отправлен: 12.04.2003, 06:14
Отправитель: sem@k

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

Отвечает Bob Johnson

Приветствую Вас, sem@k!
Найди в программе место, где она работает с портами и поставь там вызов своей функции.


Ответ отправлен: 13.04.2003, 12:52
Отправитель: Bob Johnson


Отвечает Hangatyr

Приветствую Вас, sem@k!
Это возможно. Нужно использовать внутренние средства отладки процессоров. Поля +16, +20, +24 и +28 (если мне память, конечно, не изменяет) регистра DR7 задают тип перехватываемого обращения, и если установлено 10, то при обращении к порту возникнет ислючение отладки #DB, на которое и надо будет установить свой обработчик.


Ответ отправлен: 12.04.2003, 06:35
Отправитель: Hangatyr


Отвечает Broken Sword

Доброе время суток, sem@k!
Используй отладочные регистры (R/W=10b - бряк на чтение/запись в I/O порты), или воспользуйся готовым отладчиком (SoftICE тот же)

Ответ отправлен: 12.04.2003, 13:23
Отправитель: Broken Sword



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

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (39)
C / C++ (30)
Perl (7)
Delphi (16)
Pascal (23)
Basic / VBA (9)
Java / JavaScript (11)
PHP (5)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (29)
Windows NT/2000/XP (21)
"Железо" (24)
Поиск информации (12)
Администратору
Windows NT/2000/XP (11)
Linux / Unix (13)
Юристу
Гражданское право (8)
Семейное право (5)
Трудовое право (5)
КоАП (6)

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




Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное