Вопрос № 152723: Здравствуйте, уважаемые эксперты. Прошу помочь в решении следующей задачи. <div style="margin:15px; margin-top:10px"><div><b><font color="gray">Код:</font></b></div><pre style="margin: 0px; padding: 6px; border: 1px inset; width: 650px; height: 10...
Вопрос № 152740: Здравствуйте! Все никак не могу взять в толк один момент. Я могу вызывать окно с сообщением так: call _MessageBoxA@16
или так: call __imp__MessageBoxA@16 именно такие названия процедуры я нашел в user32.lib ...Вопрос № 152763: Здравствуйте, не могли бы вы помочь мне разобраться в одном моменте. Есть код: <div style="margin:15px; margin-top:10px"><div><b><font color="gray">Код:</font></b></div><pre style="margin: 0px; padding: 6px; border: 1px inset; width: 650px; height...Вопрос № 152815: Здраствуйте! У меня вот такой вопрос, мне нужно защитить страницу памяти в защищенном режиме в нулевом кольце. Для страничной памяти предусмотрены права доступа на чтение и запись, но насколько я понял они действуют только для разных уровней превилег...Вопрос № 152835: Здравствуйте уважаемые эксперты!!=) я начила изусчать ассемблер, и у меня такой вопрос: Как удалить из заданной строки лишние пробелы, т.е оставить
между словами не более одного пробела.. помогите кто может..=( зарание спасибо=)...
Вопрос № 152.723
Здравствуйте, уважаемые эксперты. Прошу помочь в решении следующей задачи.
Код:
Дано: Нач. адрес 8400, кол-во ячеек 2А, условие >=0. Написать программу, подсчитывающую количество чисел в области памяти 8400-8429, больше или равных нулю. Для написания программы использовать команды условных
переходов. Расчеты проводить в цикле. Прим. Все числа приведены в шестнадцатеричной системе счисления.
Отвечает: Шевченко Александр Владимирович
Синтаксис FASM. Подпрограмма возвращает в регистре ах количество элементов, равных или больших 0. Прошу прощения за кодировку. Честное слово, не знаю, как сделать, чтоб буквы человеческие были. Попробуйте Штирлицем, что ли.
#thank 237462 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 4 Комментарий оценки: Спасибо большое, жаль, что комментарии не могу прочитать.
Отвечает: an42
Здравствуйте, Алексеев Андрей Сергеевич! При проверке на не отрицательность используется проверка знакового бита. Если 7-й бит равен 1, то число отрицательное, в остальных случаях либо ноль, либо больше нуля. В приложение пояснения. Удачи
Приложение:
Ответ отправил: an42 (статус: Студент)
Ответ отправлен: 04.12.2008, 08:36
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237587 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5
Вопрос № 152.740
Здравствуйте! Все никак не могу взять в толк один момент. Я могу вызывать окно с сообщением так: call _MessageBoxA@16 или так: call __imp__MessageBoxA@16
именно такие названия процедуры я нашел в user32.lib
Могу вызвать и по другому:
MessageBoxA PROTO :DWORD,:DWORD,:DWORD,:DWORD call MessageBoxA
в этом случае, как я понял, линковщик превращает MessageBoxA в _MessageBoxA@16
Но вот в самом user32.dll нет никаких подчеркиваний и
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Бартосик Феликс Михайлович! Дело в том, что вызвать функцию из DLL можно двумя способами: 1) call [ddAddress], где ddAddress - двойное слово, в котором адрес функции. 2) call [jmpAddress], где jmpAddress - адрес, по которому находится команда jmp [ddAddress]
Так вот, когда формируется DLL, то одновременно с ней формируется и LIB, в которой формируются public имена с __IMP__ для первого случая и с подчеркиванием для второго случая. Т.о., имена с _ и с __IMP__ - это шлюзы для
вызова функции из DLL.
По-умолчанию используется вариант с jmp-ом. Поэтому имеем в итоге подчеркивание.
Ну, а со знака @ указывается длина параметров в байтах. Например, 4 параметра dword дадут @16. Это необходимо для контроля параметров. Все продумано...:)
И, наконец, угловые скобки MessageBox equ <MessageBoxA> означает всего-навсего подстановку строки - таков синтаксис.
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 03.12.2008, 12:31
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237485 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 5 Комментарий оценки: Спасибо большое Игорь Витальевич ! Кажется начинаю понимать.
Вопрос № 152.763
Здравствуйте, не могли бы вы помочь мне разобраться в одном моменте. Есть код:
Не мой, нашел в инете и немного переделал под свои нужды. Суть задачи такова: сложить два числа (dword) используя инструкции толь
ко 8086, тоесть ни о каких еах не может быть и речи... Насколько я понял нужно разделять старшую и младшую половины и хранить их в разных регистрах. Прошу помочь осуществить сие... Так же буду благодарен если пнете в правильном направлении насчет как работает adc. Описание функции читал, а вот четкого представления нету все равно, гугл на этот счет немногословен.... Заранее спасибо, очень расчитываю на вашу помощь.
Отправлен: 03.12.2008, 14:30
Вопрос задал: Logoff (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 2)
Отвечает: Airyashov
Здравствуйте, Logoff! также как складываете столбком только в двоичном виде .data .... ch1 dd 12345678h ch2 dd 12345678h s dd 0 ... .code ... mov ax,word ptr ch1 mov word ptr s,ax mov ax,word ptr ch2 add word ptr s,ax
mov ax,word ptr ch1+2 mov word ptr s+2,ax mov ax,word ptr ch2+2 adc word ptr s+2,ax
adc - учитывает флаг переноса, что тут не понятного? например есть два числа, двоичные по два разряда, для примера 01 и 11, разрядность регистра
1 бит 01+11=100 складывать придется так младшие части 1+1=0 (и перенос в следующий разряд 1 (CF=1))
при сложении старших разрядов учтем перенос 0+1+1(перенос)=0 (и перенос в следующий разряд 1 (CF=1)) и того 100
Ответ отправил: Airyashov (статус: Студент)
Ответ отправлен: 03.12.2008, 14:44
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237501 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Вопрос № 152.815
Здраствуйте! У меня вот такой вопрос, мне нужно защитить страницу памяти в защищенном режиме в нулевом кольце. Для страничной памяти предусмотрены права доступа на чтение и запись, но насколько я понял они действуют только для разных уровней превилегий, на нулевом все и всем разрешено как на чтение так и на запись, возможна я и ошибаюсь, но вопрос от этого не меняется, можно защитить страницу на запись?
Отвечает: Лысков Игорь Витальевич
Здравствуйте, Yura Koshman! На любом кольце предусмотрены для страниц памяти права на чтение/запись. Какие права будут прописаны, такие и будут действовать. Другой вопрос, что программа на нулевом кольце вполне может получить доступ до таблиц страниц при помощи соответствующих команд (хоть они и привилегированны, но на 0 кольце доступны!) и при желании подправить права доступа до любой страницы...
--------- Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Специалист)
Ответ отправлен: 04.12.2008, 09:52
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237595 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Оценка за ответ: 4 Комментарий оценки: Большое спасибо! Это то что мне и нужно было узнать.
Вопрос № 152.835
Здравствуйте уважаемые эксперты!!=) я начила изусчать ассемблер, и у меня такой вопрос: Как удалить из заданной строки лишние пробелы, т.е оставить между словами не более одного пробела.. помогите кто может..=( зарание спасибо=)
Отправлен: 03.12.2008, 19:24
Вопрос задала: Lastochka (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Lastochka!
Удалить лишние пробелы можно как в приложении. Команды компилятора:
Вопросы по программе задавайте в мини-форуме. Удачи!
Приложение:
--------- Итерация от человека, рекурсия — от Бога (Питер Дойч)
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор) Украина, Киев Тел.: +380979536619 Адрес: Украина г.Киев ---- Ответ отправлен: 03.12.2008, 20:01
Как сказать этому эксперту "спасибо"?
Отправить SMS
#thank 237539 на номер 1151 (Россия) | Еще номера >>
Вам помогли? Пожалуйста, поблагодарите эксперта за это!
Скажите "спасибо" эксперту, который помог Вам!
Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
на короткий номер 1151 (Россия)
Номер ответа и конкретный текст СМС указан внизу каждого ответа.
* Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи.
(полный список тарифов)
** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
*** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.