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

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в 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
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
легко проверить мою [не]правоту
компильни хотя бы вот такую пустышку
void main() {}
 
tcc -B filename.c

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 21:09 06-08-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
смысл? собралось
 
какой и где взять tasm?
 

Цитата:
tcc -B filename.c

ctrl + f9 =)

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 21:18 06-08-2011 | Исправлено: A1exSun, 21:19 06-08-2011
akaGM

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

Код:
void main() {
  asm { mov al, 10;}
}

а это?

Код:
unsigned char * ptrBios = (unsigned char *)0xF000FFFE;
bios = *ptrBios;

я тебе в Сях вполне корректный код дал, если он не работает, то и не будет работать...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 21:24 06-08-2011
A1exSun



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

Цитата:
а это?

in-line assembly not allowed
тасма рядом с тс нет, ибо не знаю какой нужен, нашел штуки 3 разных

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 21:53 06-08-2011
akaGM

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

Цитата:
тасма рядом с тс нет, ибо не знаю какой нужен

кидай самый свежий 16-разрядный...
 
сравни в чистом С, работает? равны?

Код:
unsigned char bios, biosOrig;
 
unsigned char far * ptrBios = (unsigned char far *)0xF000FFFE;  
bios = *ptrBios;
boisOrig = peekb(0xF000, 0xFFFE);

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 21:59 06-08-2011 | Исправлено: akaGM, 22:03 06-08-2011
Prober

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
Цитата:
Платформа - MS-DOS. Если точнее, приложение win32 будет запускаться в режиме совместимости с Win95.

akaGM
Цитата:

Код:
unsigned char bios;
asm {
  push 0f000h
  pop es
  mov bx, 0fffeh
  mov al, es:[bx]
  mov bios, al
}

1. Смысл содержимого сегментных регистров в реальном и защищенном режимах совершенно разный, поэтому бесполезно писать F000 в ES.
2. Команды изменения сегментных регистров - привилегированные и в Win32-приложениях работать не будут.
 
Если надо прочитать что-то из БИОСа, поищите в гугле \Device\PhysicalMemory (например, это). Покажется слишком сложным - можно проще поступить: сделайте досовский COM-файл, чтобы читал байт по нужному адресу и возвращал его в коде завершения. Размер файла будет байтов 15-20, храните их в своей программе, а в нужный момент извлекайте и запускайте. Решение не очень красивое, но работать будет.

Всего записей: 681 | Зарегистр. 01-11-2006 | Отправлено: 06:37 07-08-2011
akaGM

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

Цитата:
Команды изменения сегментных регистров - привилегированные и в Win32-приложениях работать не будут.
это ты A1exSun скажи, я ему об этом в каждом посте повторяю...
а я что, меня попросили написать 16-бит приложение, я написал, остальное мне по фигу...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 14:04 07-08-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun, тот байт, что ты пытался прочитать, называется IBM PC ID Code aka machine model byte (BDA = BIOS data area):
f000:fffe 1  IBM computer-type code; see also BIOS INT 015H 0C0H.
               0ffH = original PC
               0feH = XT or Portable PC
               0fdH = PCjr
               0fcH = AT (or XT model 286) (or PS/2 Model 50/60)
               0fbH = XT with 640K motherboard
               0faH = PS/2 Model 30
               0f9H = Convertible PC (easily converts into a paperweight)
               0f8H = PS/2 Model 80
               09AH = Compaq XT, Compaq Plus;
               030H = Sperry PC;
               02DH = Compaq PC, Compaq Deskpro.
на ВСЕХ машинах, способных тянуть твой Билдер 2010, он равен 0xFC, и нечего тебе так расшибаться, пытаясь побороть защиту памяти (режим эмуляции win95 не распространяется на память, только на порты, и то не на все). Напрямую его можно прочитать из реестра HKLM\HARDWARE\DESCRIPTION\System\Identifier="AT/AT COMPATIBLE", еще можно покопать в сторону WMI http://delphi.xcjc.net/viewthread.php?tid=46207
 
Добавлено:
*рука/лицо* это ужас... ну зачем, зачем в билдере 2010 ломиться в реальный режим ДОСа??? Зачем пытаться читать давно бессмысленный байт???

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 14:48 07-08-2011
A1exSun



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

Цитата:
на ВСЕХ машинах, способных тянуть твой Билдер 2010, он равен 0xFC

Этот байт просто ради примера.

Цитата:
режим эмуляции win95 не распространяется на память, только на порты, и то не на все

Вот этого не знал. А COM порты (3F8h и 2F8h вроде) эмулируются?

Цитата:
зачем в билдере 2010 ломиться в реальный режим ДОСа??? Зачем пытаться читать давно бессмысленный байт???

2011 (XE). Потому что лабораторная есть такая и лень писать в Turbo C в виртуалке.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 15:08 07-08-2011 | Исправлено: A1exSun, 15:10 07-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
не гноби парня :) его и так все пинают за это, щас я попробую объяснить...
 
он пишет прогу для тестирования студентов (будучи сам студентом, морально-этические моменты оставляем за бортом ;)
я не уверен, стоят ли даже i386 на этих машинах для тестирования
конечная сборка будет происходить на Турбо С 2.0
сам же он сидит на Билдире2010 и хочет на нём и оставаться, чтобы ваять эту прогу...
 
всё...

о... опоздал ровно на три минуты...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 15:11 07-08-2011 | Исправлено: akaGM, 15:13 07-08-2011
A1exSun



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

Цитата:
он пишет прогу для тестирования студентов (будучи сам студентом, морально-этические моменты оставляем за бортом

Дружище, я ее 3 месяца назад сдал на 5!
И ею теперь пользуется преподша, чему я очень рад, что не как остальные работы отправляются в корзину.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 15:20 07-08-2011
akaGM

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

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 15:22 07-08-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
akaGM
Архитектура... Скорее всего будет что-то с COM портом, чат на несколько компьютеров или передача файлов, через месяц узнаю.
А за bios это я лабу одну смотрел, стало интересно. inportb() и outportb() удалось ведь "скопировать" в билдер.

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 15:26 07-08-2011 | Исправлено: A1exSun, 15:26 07-08-2011
MERCURY127



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

Цитата:
2011 (XE). Потому что лабораторная есть такая и лень писать в Turbo C в виртуалке.

Лень матушка и создала это чудовище - Билдер. Но раз уж тебе нужно читать память - есть два варианта 1) реальный режим либо V86 - любой ДОСовский компилятор, немного старых книг и вперед; 2) плоский защищенный режим третьего кольца (user mode) - любой современный компилятор плюс гугль и вперед. Важно их не перепутать и заранее определить целевую среду. И еще, прежде чем что то писать/читать из памяти - нужно этот самый участок памяти себе выделить - средствами языка или ОСи... Иначе будут печальные последствия как для системы, так и для разработчика...
akaGM

Цитата:
я не уверен, стоят ли даже i386 на этих машинах для тестирования - конечная сборка будет происходить на Турбо С 2.0

%) надеюсь ему не нужно будет учить EMS/XMS вызовы...
 
 
Добавлено:

Цитата:
А за bios это я лабу одну смотрел, стало интересно. inportb() и outportb() удалось ведь "скопировать" в билдер.

какой ты любопытный ну молодец, если что, спрашивай - постараюсь помочь, один хрен мои знания без дела лежат...
 
Добавлено:

Цитата:
Архитектура... Скорее всего будет что-то с COM портом, чат на несколько компьютеров или передача файлов, через месяц узнаю.

более чем уверен что дело ограничится файлами, ибо чат на ком порту - макс две машины связать может...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 15:28 07-08-2011
A1exSun



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

Цитата:
более чем уверен что дело ограничится файлами, ибо чат на ком порту - макс две машины связать может...

На материнке может быть до 4 портов (хоть я видел только 2), делаем приложение-сервер и клиент, а лучше 2 в 1, итого имеем 5 машин

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 15:37 07-08-2011
akaGM

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

Цитата:
%) надеюсь ему не нужно будет учить EMS/XMS вызовы...

такое ощущение, что их препод (типа нас), решил их провести по тем кругам, кот. сам прошёл...
в Сях там заставлял его клавин скан-код ловить...
мож так и надо? вместо того чтоб бутоны на форму кидать...
 

Цитата:
один хрен мои знания без дела лежат...

положу хрен в лужу\
пусть лежит до осени\
всё равно не нужен...

 
но так ведь "до осени"...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 15:42 07-08-2011 | Исправлено: akaGM, 15:44 07-08-2011
MERCURY127



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

Цитата:
На материнке может быть до 4 портов (хоть я видел только 2), делаем приложение-сервер и клиент, а лучше 2 в 1, итого имеем 5 машин

эмм... это на словах просто, а как ты машины то будешь различать? они же имен не имеют, как в локалке. Тогда уж надо токенринг делать, чтоб каждый клиент генерировал себе уид, и принимал посылки только с соот себе уидом. Серверу тогда достаточно будет просто передавать пакеты по кольцу, и уничтожать те, что сам же послал, после пробежки всего кольца. Короче, придется тебе учить ТокенРинг, сетевую архитектуру, борьбу с коллизиями, итд... наверное будет увлекательно ...
 
Добавлено:
akaGM

Цитата:
в Сях там заставлял его клавин скан-код ловить... мож так и надо? вместо того чтоб бутоны на форму кидать...

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

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 15:54 07-08-2011
A1exSun



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
Я думал за одну общую комнату, без личных сообщений. Сервер принимает сообщение и рассылает его на все порты, кроме того откуда оно пришло. Как-то так.

Цитата:
побыстрее фигурных кнопок на узорчатый скин накидать

А вот этого я кстати не умею, хотя уже полгода как куплен последний справочник Архангельского...

Всего записей: 1871 | Зарегистр. 25-11-2009 | Отправлено: 16:02 07-08-2011 | Исправлено: A1exSun, 16:06 07-08-2011
MERCURY127



Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A1exSun
зато на токенринг можно и комнату и лички состряпать, причем на любой машине в кольце хватит двух портов. и не надо заморачиваться с разделением спаренных портов по IRQ...

Всего записей: 11564 | Зарегистр. 03-08-2008 | Отправлено: 16:07 07-08-2011
akaGM

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
MERCURY127
эт точно...
и прозрачность, прозрачность!
 
а на самом деле не скажи
 
getch();
 
vs
 
if (!getсh()) getсh();
для эникея всё-таки правильнее...

Всего записей: 24114 | Зарегистр. 06-12-2002 | Отправлено: 16:07 07-08-2011
Открыть новую тему     Написать ответ в эту тему

Страницы: 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