Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки
Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Открыть новую тему     Написать ответ в эту тему

ShIvADeSt



Moderator
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Обсуждаются все вопросы, связанные с программированием на Ассемблере как общего так и конкретного характера.
 
важное примечание
для тех кто считает, что здесь место халявных исполнений курсовых и лабораторных работ.
тут обычно помогают тем, кто сам хоть что-то пытается понять и сделать, но что-то не понимает, что-то не получается...
ведь ассемблер изучают и задачки на нём дают обычно не менеджерам по продажам и даже не всем физ.-мат. специальностям
вы сами избрали этот путь? вот и идите по нему сами, ножками... с ручками и с головой...
 
короче, тут не сборище придурков-альтруистов, которым нечего делать и они ждут-не дождутся когда вы их попросите
что-то сделать _за_ вас
если позарез надо и вы даже готовы заплатить, тогда вам сюда
удачи
 
некоторые ресурсы
http://www.wasm.ru/ Самый популярный русскоязычный ресурс. https://wasm.in/
Ассемблер - книги (ASM, Assembler)
 
Просьба все большие листинги оформлять тегом more.
 
если вам вдруг не отвечают или ответ вас не устраивает
и вообще полезно прочитать всем спрашивающим

Всего записей: 3956 | Зарегистр. 29-07-2003 | Отправлено: 01:42 29-11-2006 | Исправлено: akaGM, 17:44 11-06-2020
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Что-то у меня не получается из этих регистров ненулевые значения достать.
Не в 32 битах не в 64. Не на уровне приложения не драйвера.
Даже в FDBG, в котором это всё зародилось, только одни нули.
На Win7 64bit с всеми обновлениями такое.
 
CS в 64 битном режиме не используется. И в 32 битном от него толку мало, так как память не сегментная- линейный адрес равен виртуальному.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 16:50 16-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
Что-то у меня не получается из этих регистров ненулевые значения достать.
 

Про какие регистры речь? Сегментные селекторы? Ты пробовал получить сегментный дескриптор? Что в нем? Ладно, база может быть нулевой, но размер-то ни разу не может..
 
 

Цитата:
Не в 32 битах не в 64. Не на уровне приложения не драйвера.
Даже в FDBG, в котором это всё зародилось, только одни нули.
На Win7 64bit с всеми обновлениями такое.
CS в 64 битном режиме не используется. И в 32 битном от него толку мало, так как память не сегментная- линейный адрес равен виртуальному.  
 

ну уж у FS, который используется для SEH, стопудово не равен вирт. адрес линейному. Да и насчет CS есть сомнения.
 

Цитата:
CS в 64 битном режиме не используется
то есть совсем? Там есть сегментные регистры и сегментная виртуализация памяти, или нет??

Цитата:
И в 32 битном от него толку мало, так как память не сегментная
как не сегментная? Я не помню про ring0, но уж в ring3 память всегда сегментная, просто особенность реализации Win, что SS,DS,CS имеют одну базу..

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 17:40 19-07-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
В LastBranchFromIP, LastBranchТоIP, итд нули.
 
В 32 битах cs всегда равен 0x23, a в 64- 0х33
Ну ладно, есть сегментация... с одним сегментом
Из ml64 даже убрали инструкции чтения и записи регистров cs,ds,es,ss.
 
Кстати, где-то видел, что из 32бит кода можно вызвать 64битный с jmp 33h:xxxxxxxx

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 18:49 19-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
В LastBranchFromIP, LastBranchТоIP, итд нули.  

еще бы. в DebugCtl MSR нужно установить флажок.
И на каждый процессор повесить. То бишь, в цикле менять affinity своего драйвера, похоже, и потом писать в этот регистр..
 

Цитата:
В 32 битах cs всегда равен 0x23, a в 64- 0х33  

это селектор. А есть дескриптор селектора, меня он интересует. Достается из нулевого кольца,  Неужели не в теме?
вот, накурил
 
http://msdn.microsoft.com/en-us/library/windows/desktop/ms679363%28v=vs.85%29.aspx

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 13:42 20-07-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
зачем все это? их все равно поменять нельзя и смысла не имеет и значения что в них записано

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 19:53 20-07-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Ищу OPTLINK для ДОС последней версии, или самой лучшей на ваше усмотрение... уже не надо, прикрутил HDPMI к 8.0.13.
 
поковырялся маленько с MZ заглушками для PE/LE/NE файлов, хотел выяснить, насколько маленькими они могут быть. выяснил, что до 64 байт полнофункциональный STUB можно ужать http://sderni.ru/236908  
можно и до 32 байт сделать, голый MZ заголовок, выводящий системную мессагу ДОС о нехватке памяти, но зато его моя Win7 x64 не поняла...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 22:18 20-07-2014 | Исправлено: MERCURY127, 17:28 24-07-2014
AlekXL



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

Цитата:
зачем все это? их все равно поменять нельзя и смысла не имеет и значения что в них записано
полистай назад, поймешь.

Всего записей: 792 | Зарегистр. 24-04-2008 | Отправлено: 13:22 21-07-2014
lormutryas

BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
извините

Всего записей: 113 | Зарегистр. 26-07-2014 | Отправлено: 02:59 26-07-2014 | Исправлено: lormutryas, 11:59 26-07-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
насколько я помню все началось с потоков, а раз есть потоки значит есть система и скорее всего эта система винда

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 13:35 28-07-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
пара непонятных вопросов  
 
1) какой бывает максимальный размер XBDA aka EBDA? пытаюсь перетащить ее в нижний сегмент, но проги либо бастуют, либо все виснет. сама XBDA заявлена по адресу 9D80:0, т.е откусывает от 640 кб 10 кб, но первый байт равен 06, т.е указывает размер 6 кб... понятно, конечно, что глупо требовать от IvyBridge соблюдения допотопных стандартов, но все же, интересно...
 
2) компилирую исходник на асме для дос, с указанием создать .map с номерами строк, эпизодически возникает ситуация:  

Код:
  1353 0000:0A0D  1354 0000:0A0E  1356 0000:0A11  1357 0000:0A15
  1359 0000:0A1B  1360 0000:0A20  1361 0000:0A22  1362 0000:0A26
  1363 0000:0A29  1365 0000:0A2B  1368 0000:0A30  1369  1363 0000:  1370 0000:0A36  1371 0000:0A38  1372 0000:0A3A  1373 0000:0A3D
  1374 0000:0A40  1375 0000:0A44  1376 0000:0A46  1377 0000:0A48
  1378 0000:0A49  1379 0000:0A4C  1380 0000:0A4F  1381 0000:0A51
 

те происходит сбой и строка как бы начинается заново, но перенос строки проглатывается. это сбивает с толку используемый конвертор в другой отладочный формат.  
это происходит с разными компиляторами/линкерами. с разными исходниками. если исходник немного изменить, что место сбоя смещается, или он вообще может исчезнуть...  
сам исходник и получаемый бинарник, естественно, рабочие.
есть идеи?

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 21:18 07-09-2014 | Исправлено: MERCURY127, 21:21 07-09-2014
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127

Цитата:
пара непонятных вопросов
у меня тоже непонятный вопрос, один...
 
а что это ты делаешь? :)

Всего записей: 24113 | Зарегистр. 06-12-2002 | Отправлено: 01:00 08-09-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
дурью я маюсь, что ж еще... интересно мне дос ковырять. все давно препарировано и изучено, включил - и готово, не то что современные неповоротливые монстры...  
 
разные ассемблерные исходники (толстые), разные компиляторы, разные линкеры, одна ошибка... почему? вот пример: http://sderni.ru/241945  
 
не в железе ведь проблема, в самом деле? типа ошибки Пентиум FDIV...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 16:05 08-09-2014
ne_viens

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
У меня с "C:\temp\asm16>ml /Cx /omf /Fm /Zm /Zi ems40.asm /link /map:full /line /noe /cparam:1" нормальный мап получается. Правда, "MASM : fatal error A1021: cannot find cvpack.exe" выдаёт.

Всего записей: 1530 | Зарегистр. 01-11-2004 | Отправлено: 18:24 08-09-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
так мне охота не МС линкером собирать... он не дает возможность управлять размером mz заголовка.
 
Добавлено:
D:\MLCL>link /nologo /noi /map /line /warn /cparm:1 /align:32 ems40;
LINK : warning L4014: /ALIGNMENT : option ignored for MS-DOS executable file
 
 
Добавлено:
а, я понял! это глюк оптлинка. надо написать им. интересно, каков шанс, что исправят...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 18:55 08-09-2014 | Исправлено: MERCURY127, 18:57 08-09-2014
MihaNix

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Начну с начала:
Имеется мать на чипсете i815 под пень 3й
Имеются USB входы.
Нет возможности загрузки с USB - просто тупо BIOS не поддерживает.
Альтернативные прошивки искал не нашел.
Хотелось бы самостоятельно реализовать данный функционал.
 
Подскажите как на асме будет выглядеть прога для нахождения
и опроса USB портов и если присутствует на нем флэш или HDD...
Грузиться с них хочу.

Всего записей: 124 | Зарегистр. 18-06-2010 | Отправлено: 01:32 10-09-2014
YuriyRR



Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MihaNix
Куда ты свою программу опроса USB помещать будешь? в БИОС?

Всего записей: 516 | Зарегистр. 07-06-2007 | Отправлено: 01:45 10-09-2014
bomzzz



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
опрос отновительно не очень сложно делается, а вот юсб драйвер ты не сделаешь. альтернативные драйвера есть это PLoP и GRUB. спроси сдеся.
http://forum.ru-board.com/topic.cgi?forum=5&bm=1&topic=32855&start=8940#lt
PLoP выполнен в виде модуля биоса, его можно засунуть в биос материнки или как у меня сделано в флеш память сетевой карты.

Всего записей: 13343 | Зарегистр. 13-01-2008 | Отправлено: 01:56 10-09-2014 | Исправлено: bomzzz, 01:57 10-09-2014
addhaloka



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А как в FASM'е правильно определять MAX_PATH при сборке в юникоде? Т. е., например в masm32 ansi это так определено:
path        TCHAR MAX_PATH dup(?)
для fasm ansi рекомендуют так:
path        rb MAX_PATH
(в KERNEL32.INC из SDK прописано так "cFileName         db MAX_PATH dup (?)", но у них на форуме советуют через rb (и в примерах тоже обычно rb MAX_PATH))
для fasm unicode по идее должно быть так:
path        rw MAX_PATH
но есть сомнения, в примерах встречалось и такое: rd MAX_PATH, работают и rw, и rd (но вариант с rd мне представляется уже точно неправильным).

Всего записей: 7432 | Зарегистр. 13-11-2010 | Отправлено: 18:02 11-09-2014
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Унисекскод бывает разный  
UTF-8 - от 1 до 4 (возможно до 6) байт;
UTF-16LE/BE - по два байта на знак, возможны суррогатные пары с префиксом;
UTF-32LE/BE - все знаки по 4 байта, самая простая обработка всех языков, но неэкономичен и малораспространен
 
Вам какой? если для винды, то, наверное, rw MAX_PATH...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 20:52 11-09-2014
Benchmark



Gold Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
addhaloka
 
Может что-то вроде  
 
path   rb   MAX_PATH*sizeof.TCHAR
 
Если используются юникодные inc-файлы, то sizeof.TCHAR будет = 2, иначе 1.
Вообще виндовый юникод - это кодировка UCS-2, являющаяся частным случаем UTF16 LE

Всего записей: 6833 | Зарегистр. 01-10-2002 | Отправлено: 21:08 11-09-2014
Открыть новую тему     Написать ответ в эту тему

Страницы: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Вопросы по программированию на Assembler


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru