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

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


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

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

Выпуск № 279
от 02.06.2002, 04:00

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


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

Тorax
Статус: Доверительный
Общий рейтинг: 123.84
[Подробней >>]
Dron
Статус: Профессиональный
Общий рейтинг: 150.2
URL: Операционная система с нуля!
[Подробней >>]
freeseacher
Статус: Опытный
Общий рейтинг: 120.88
Телефон: 8(3832)366362
[Подробней >>]
 
Beeblebrox
Статус: Опытный
Общий рейтинг: 131.54
URL: Beeblebrox / TMA HomePage
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 143.7
[Подробней >>]
Andy Bitoff
Статус: Опытный
Общий рейтинг: 119.11
URL: HomePage или что-то типа того :)
[Подробней >>]
 
masquer
Статус: Профессиональный
Общий рейтинг: 162.56
[Подробней >>]
AllAddIn
Статус: Опытный
Общий рейтинг: 117.7
[Подробней >>]
kvINT
Статус: Начальный
Общий рейтинг: 113.79
[Подробней >>]
 
vitya
Статус: Опытный
Общий рейтинг: 119.65
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 158.07
[Подробней >>]
BMR
Статус: Опытный
Общий рейтинг: 122.33
[Подробней >>]
 
Топор
Статус: Опытный
Общий рейтинг: 133.59
URL: Хорошая Русская Металлическая команда
Телефон: (8462)160302, 162918
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 129.57
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
DiGiT
Статус: Профессиональный
Общий рейтинг: 148.91
[Подробней >>]
 
igorash
Статус: Доверительный
Общий рейтинг: 147.77
[Подробней >>]
Dark_Lord
Статус: Доверительный
Общий рейтинг: 120.66
[Подробней >>]
Vint by Shz
Статус: Доверительный
Общий рейтинг: 126.58
[Подробней >>]


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

Вопрос № 250. Господа.. эксперты! Тут такая проблема начал писать прогу на ассме: русские сообщения через MessageB... (ответов: 1)
Вопрос № 252. Здравствуйте коллеги! Как поменять местами содержимое регистров AX и BX, не используя никаких других... (ответов: 17)
Вопрос № 253. Добрый день ув.эксперты. Подскажите какой хук (если есть такой) отвечает на аппаратное прерывание от... (ответов: 1)
Вопрос № 254. А что, сейчас читатели не оценивают качество ответа эксперта? Что-то после переезда сайта полная тиш... (ответов: 2)
Вопрос № 255. Masm6.13 не хочет работать! Вызывает ошибку: Программа ML вызвала сбой при обращении к странице памя... (ответов: 2)
Вопрос № 256. Прошу помочь в написании программы Программа получает матрицу Н*Н (Н не чётное и меньше 10) Програ... (ответов: 2)
Вопрос № 257. Можно ли прерывания (BIOS-DOS) ипсользовать в плоской(flat) памяти .386процессора?... (ответов: 6)

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


 Вопрос № 250

Господа.. эксперты!
Тут такая проблема начал писать прогу на ассме:
русские сообщения через MessageBox выдаются только в кодировке DOS, а когда создаешь шрифт (Arial, Times New Roman, итп) с помощью CreateFont и затем выводишь TextOut русский выводится лишь в кодировке Win. Чередовать эти кодировки крайне неудобно в одной программе. Подскажите, плиз, как лучше поступить?



Вопрос отправлен: 28.05.2002, 12:46
Отправитель: Dr Genius (drgenius@nm.ru)

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

Отвечает Тorax

Приветствую Вас, Dr Genius!
Есть WinAPI функция перекодировки OemToChar. Должа еще быть CharToOem, но может и нету.


Ответ отправлен: 28.05.2002, 18:47
Отправитель: Тorax


 Вопрос № 252

Здравствуйте коллеги!
Как поменять местами содержимое регистров AX и BX, не используя никаких других регистров, памяти, флагов, и команду xchg?
Тут мой начальник заявляет, что это возможно, а я говорю, что нет. Мы с ним поспорили на пиво.



Вопрос отправлен: 28.05.2002, 16:29
Отправитель: Sensey

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

Отвечает Dron

Приветствую Вас, Sensey!
Насчет флагов... твой начальник пожалуй загнул...
знаю вот такой способ:
xor ax, bx
xor bx, ax
xor ax, bx
но при этом меняются флаги...


Ответ отправлен: 28.05.2002, 17:08
Отправитель: Dron


Отвечает freeseacher

Добрый день, Sensey!
Эх ты я был о тебе лучшего мнения!
детские алгоритмы не знаешь!
xor ax,bx
xor bx,ax
xor ax,bx
или add
Ты проиграл!....... мне пиво тоже оставь :)

Ответ отправлен: 28.05.2002, 19:55
Отправитель: freeseacher


Отвечает Beeblebrox

Приветствую Вас, Sensey!
;example: ax=100b, bx=010
xor ax,bx;ax=110,bx=010
xor bx,ax;bx=100,ax=110
xor ax,bx;ax=010,bx=100

Ответ отправлен: 28.05.2002, 16:38
Отправитель: Beeblebrox


Отвечает Ayl

Добрый день, Sensey!
Кажись, вот так:
xor ax, bx ; ax = ax ^ bx; bx = bx
xor bx, ax ; ax = ax ^ bx; bx = bx ^ (ax ^ bx) = ax
xor ax, bx ; ax = ax ^ bx ^ ax = bx; bx = ax
Все.
Но xchg быстрее и короче! :-)

Ответ отправлен: 28.05.2002, 16:42
Отправитель: Ayl


Отвечает Andy Bitoff

Добрый день, Sensey!
Да можно.
xor ax,bx
xor bx,ax
xor ax,bx
А вопрос действительно интересный!!!!!!!!!!!
Давайте еще какой-нибудь такой же, интересно башку поломать.

Ответ отправлен: 28.05.2002, 20:27
Отправитель: Andy Bitoff


Отвечает masquer

Добрый день, Sensey!
Ну, готовь пиво, ты проиграл:
;ax=8 bx=6
add ax, bx ;ax=14, bx=6
sub bx, ax ;ax=14, bx=-8
neg bx ;bx=8
sub ax, bx ;ax=6, bx=8
Voila!


Ответ отправлен: 28.05.2002, 17:21
Отправитель: masquer


Отвечает AllAddIn

Добрый день, Sensey!
push ax
push bx
pop ax
pop bx
в порядке могу ошибаться...

Ответ отправлен: 28.05.2002, 18:41
Отправитель: AllAddIn


Отвечает Тorax

Здравствуйте, Sensey!Можно. Вот код(сам написал):
================
sub ax, bx
add bx, ax
sub ax, bx
neg ax
================
В прилржении табличка.
Torax


Приложение:

Ответ отправлен: 30.05.2002, 18:17
Отправитель: Тorax


Отвечает kvINT

Здравствуйте, Sensey!
Может, твой начальник стек памятью не считает?

Ответ отправлен: 28.05.2002, 17:07
Отправитель: kvINT


Отвечает vitya

Здравствуйте, Sensey!
все очень просто
xor ax, bx ;ax = ax ^ bx
xor bx, ax; bx = bx^ax^bx = ax
xor ax, bx; ax = ax^bx^ax = bx

Ответ отправлен: 30.05.2002, 10:06
Отправитель: vitya


Отвечает Broken Sword

Здравствуйте, Sensey!
:) Выкладывай пивко...
(этот прикол канает для ВСЕХ РОН и не только...)
xor ax,bx
xor bx,ax
xor ax,bx


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


Отвечает BMR

Здравствуйте, Sensey!
Можно используя EAX, EBX. Просто сместить AX, влево, сделать mov ax,bx


Приложение:

Ответ отправлен: 28.05.2002, 22:26
Отправитель: BMR


Отвечает Топор

Добрый день, Sensey!
Последовательностью из трёх команд:
XOR AX, BX
XOR BX, AX
XOR AX, BX
...и готово. Сожалею...


Ответ отправлен: 28.05.2002, 23:05
Отправитель: Топор


Отвечает baldr

Приветствую Вас, Sensey!
Да... Попал ты на пиво... :(
Пример из Зубкова. Классический, можно сказать:
xor ax, bx
xor bx, ax
xor ax, bx

Как пишет Зубков - этот пример выполняется быстрее, чем xchg ax, bx !!!
Вот так вот!
Кстати, что-то никто больше не предлагает конкурсов? :) Хватило того конкурса? :)
На следующий можно делать оптимизацию по скорости. Это так, рацпредложение всем...
И вот еще один пример из того же Зубкова, который показывает красивый и короткий способ
получения абсолютного значения числа:
label0: neg eax
js label0

С помощью этого примера можешь отспорить пиво обратно... :)


Ответ отправлен: 28.05.2002, 23:53
Отправитель: baldr


Отвечает DiGiT

Доброе время суток, Sensey!
В Зубкове пишется чт окоманда xor меняет содержимое регистров, но это абсурд полный. А вот три команды xor вроде воркает все
xor ax, bx
xor bx, ax
xor ax, bx; Проверь сам и не ругайся если где то накосячил :)) Млин жалко твое пиво

Ответ отправлен: 29.05.2002, 02:26
Отправитель: DiGiT


Отвечает igorash

Приветствую Вас, Sensey!
Как увидел от кого вопрос, так и понял, что не простой, типа "как компильнуть и как писать /AT " :))).
По-моему нельзя, надо же что-то как временное хранилище значения использовать.


Ответ отправлен: 29.05.2002, 18:00
Отправитель: igorash


Отвечает Dark_Lord

Доброе время суток, Sensey!
Элементарно!
mov ax,05h ;допустим ax=5h
mov bx,25h ;допустим bx=25h
add bx,ax ;сложим их bx=2Ah
sub ax,bx ;вычтем их сумму и получим -24h (нуля не сущетвует) или FFDB
not ax ;перевернём число {*(-1)} и получим ax=24h
inc ax ;добавим 0, котрый был пропущен
sub bx,ax ;вычтем из bx его прошлое значение, которое теперь в аx!
Проиграл ты пиво!

Ответ отправлен: 29.05.2002, 21:02
Отправитель: Dark_Lord


 Вопрос № 253

Добрый день ув.эксперты.
Подскажите какой хук (если есть такой) отвечает на аппаратное прерывание от LPT.
Есть ли отличие в реализации для 98, NT, 2000, ME.
Какое отличие в хуке для LPT1,2 и 3.
Ответит ли эмулятор ДОС на соотв. прерывание от порта (может хоть 98).
Буду благодарен за пример вызова.
Заранее благодарен за любой ответ.



Вопрос отправлен: 28.05.2002, 17:22
Отправитель: ret

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

Отвечает masquer

Здравствуйте, ret!
Хука такого нет. Для реализации такой штуки только драйвер нужен, естественно его раелизация будет отличаться - для 98 и МЕ - vxd, 2k, XP - sys.
Насчет ответит - не уверен, поскольку винда порты виртуализирует. Примеры - качай DDK, там все примеры.

Ответ отправлен: 28.05.2002, 20:07
Отправитель: masquer


 Вопрос № 254

А что, сейчас читатели не оценивают качество ответа эксперта? Что-то после переезда сайта полная тишина в этом плане...



Вопрос отправлен: 28.05.2002, 18:05
Отправитель: beeblebrox

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

Отвечает masquer

Доброе время суток, beeblebrox!
Ага, а я бы еще и оценку вопроса ввел.

Ответ отправлен: 28.05.2002, 20:05
Отправитель: masquer


Отвечает Тorax

Здравствуйте, beeblebrox!
Видимо нет, мне это тоже не нравится. Также мне не нравится то, что кто не успел отправить ответ за 4 дня, то в пролете.
С уважением, Torax.


Ответ отправлен: 28.05.2002, 18:54
Отправитель: Тorax


 Вопрос № 255

Masm6.13 не хочет работать!
Вызывает ошибку:
Программа ML вызвала сбой при обращении к странице памяти
в модуле <нет данных> по адресу 0000:00000000.
Регистры:
EAX=00000002 CS=017f EIP=00000000 EFLGS=00010212
EBX=00590000 SS=0187 ESP=0060fe04 EBP=000011a2
ECX=c1650980 DS=0187 ESI=0000000a FS=4d97
EDX=bffc9490 ES=0187 EDI=00000000 GS=0000
Байты по адресу CS:EIP:
0b 00 c9 00 65 04 70 00 16 00 c9 09 65 04 70 00
Содержимое стека:
00000000 81654e48 00590000 0060ff68
00436980 00452404 ffffffff 0060fe38
0060fc34 ffffffff 0060fe04 bff8b551
00000500 0060ff78 bff8b560 00000000
Под Dos тоже нехочет запускатся.
TASM5.0 прекрасно работает.
Помогите пожалуйста.



Вопрос отправлен: 28.05.2002, 21:54
Отправитель: Павличук Алексей (apavl@lens.spb.ru)

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

Отвечает masquer

Доброе время суток, Павличук Алексей!
качай МАСМ32.

Ответ отправлен: 28.05.2002, 22:17
Отправитель: masquer


Отвечает Vint by Shz

Доброе время суток, Павличук Алексей!
Помоги и мене!У меня таже бяка!Садил его с Аспирин 2001 (ето для экспертов)! Кто чем ,помогите! может дело в ЕХЕшке?

Ответ отправлен: 29.05.2002, 17:27
Отправитель: Vint by Shz


 Вопрос № 256

Прошу помочь в написании программы
Программа получает матрицу Н*Н (Н не чётное и меньше
10)
Программа проверяет если полученная матрица является
полиндромом
матрица полиндром это матрица у которой линия середины
столбик середины и диоконали(diagonal) состовляют
эксодоцемальное число и его цифры состовляют полиндром
например : Н=3
4e 5d 11
b9 44 9b
11 b5 e4
большая просьба помочь в написании этой программки
и описать её написание как можно ясно
спасибо зарание



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

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

Отвечает DiGiT

Приветствую Вас, Stas!
Насчет "эксодоцемальное число" затрудняюсь ответить первый раз слышу. А насчет остального там не так сложно, если у тебя числа все имеют не более двух чисел в хексе. Делай так проверку например a[0][1] у тебя равно 5d, а a[2][1] = d5
Тогда остаток не от деления a[0][1] на 16 должен быть равен целой части от деления a[2][1] на 16. насколько я понимаю для H=4 Должно быть так:
4e 5d 6f 11
b9 7a 44 c8
8c 44 7a 9b
11 f6 d5 e4
То есть симметрия относительно якобы центра. А элементы выбирай по формуле a[i][j] и ему a[n-i][n-i] и проверяй остатки и целые части их(Если индексы элементов нумеруются с нуля)
В процедуре не исключается наличие ошибок, а так же не правильное понимание поставленной задачи. Если что уточни.

Приложение:

Ответ отправлен: 29.05.2002, 02:17
Отправитель: DiGiT


Отвечает masquer

Доброе время суток, Stas!
Эй, эй! У меня высшее образование, но вышку я сдал уже лет шесть назад, поэтому, чтобы у меня не развивался комплекс неполноценности и твоя проблема как-то решалась, напиши небольшой алгоритм, где все сведется до простых арифметических операции, и тебе проще будет, и нам. А то я в конспектах рыться не собираюсь.
Иначе вышлю тебе реализацию на MMX, работающую с такими матрицами, где все будет "ну очень просто и понятно".

Ответ отправлен: 29.05.2002, 08:18
Отправитель: masquer


 Вопрос № 257

Можно ли прерывания (BIOS-DOS) ипсользовать в плоской(flat) памяти .386процессора?



Вопрос отправлен: 29.05.2002, 02:05
Отправитель: Speedy Gonsalez

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

Отвечает DiGiT

Доброе время суток, Speedy Gonsalez!
bios - dos нет. Хотя если дизассемблировать их, а потом собрать для 32 битной модели памяти, то мона :))))

Ответ отправлен: 29.05.2002, 02:33
Отправитель: DiGiT


Отвечает masquer

Здравствуйте, Speedy Gonsalez!
МОЖНО

Ответ отправлен: 29.05.2002, 08:19
Отправитель: masquer


Отвечает Beeblebrox

Приветствую Вас, Speedy Gonsalez!
Напрямую - нет, но набор функций любого Дос-экстендера обычно предоставляет доступ к прерываниям путем временного перехода в realmode и возврата в protected
Советую поискать PMODE by Tran (например, у меня на сайте: http://beeblbrx.narod.ru/areas/demoutils/PMODE307.ZIP)

Ответ отправлен: 29.05.2002, 10:40
Отправитель: Beeblebrox


Отвечает Dron

Приветствую Вас, Speedy Gonsalez!
Простые прерывания требуют для этого как минимум переключания в виртуальный режим. то есть режим V86.
но есть некоторые сервисы, рассчитанные на защищенный, например PCI сервис, APM сервис... SVGA тоже бывают рассчитаны на защищенный режим.


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


Отвечает kvINT

Добрый день, Speedy Gonsalez!
Модель flat - код и данные в одном 32-битном сегменте.
32-битный - соответственно нельзя

Ответ отправлен: 29.05.2002, 12:01
Отправитель: kvINT


Отвечает Vint by Shz

Доброе время суток, Speedy Gonsalez!
А попробовать???????????Дык весь асьм учат только методом тыка!!А Погоди, куплю нормальную компашку с МАСМом ,дак и ортвечу!

Приложение:

Ответ отправлен: 29.05.2002, 17:27
Отправитель: Vint by Shz



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (48)
C / C++ (28)
Perl (10)
Delphi (19)
Pascal (30)
Basic / VBA (14)
Java / JavaScript (8)
PHP (6)
MySQL / MSSQL (5)
Пользователю
Windows 95/98/Me (49)
Windows NT/2000/XP (35)
"Железо" (41)
Поиск информации (21)
Администратору
Windows NT/2000/XP (13)
Linux / Unix (8)
Юристу
Гражданское право (13)
Уголовное право (1)
Семейное право (5)
Трудовое право (7)
КоАП (4)

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




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

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


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

В избранное