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

Ассемблер? Это просто! Учимся программировать


Хостинг Портала RusFAQ.ru:
MosHoster.ru - Профессиональный хостинг на Windows 2008

РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

Чемпионы рейтинга экспертов в этой рассылке

Лысков Игорь Витальевич
Статус: Профессионал
Рейтинг: 176
∙ повысить рейтинг >>
Зенченко Константин Николаевич
Статус: Профессор
Рейтинг: 75
∙ повысить рейтинг >>
Дроздов Константин
Статус: 3-й класс
Рейтинг: 14
∙ повысить рейтинг >>

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 1187
от 25.02.2009, 22:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 333, Экспертов: 17
В номере:Вопросов: 3, Ответов: 3

Нам важно Ваше мнение об этой рассылке.
Оценить этот выпуск рассылки >>

Вопрос № 160931: Доброго времени суток. Вопрос по книге Калашникова, а точнее по поводу следующего исходника: CSEG segment org 100h _beg: mov ax,0B800h mov es,ax mov di,0 mov ah,31 mov al,1 mov es:[di],ax mov ah...


Вопрос № 161001: А как можно в TMS320xxx работать с большими числами, можно ли это делать в ассемблере, так как можно сделать в С++ (LINT)? Точнее как вычесляется 2^512, 2^1024? ...
Вопрос № 161034: Здравствуйте. Я - начинающий, поэтому, вероятно, вопрос покажется наивным. Но. Подскажите пожалуйста код с комментариями: как получить текущую (активную) раскладку клавиатуры? Заранее благодарен....

Вопрос № 160.931
Доброго времени суток.
Вопрос по книге Калашникова, а точнее по поводу следующего исходника:

CSEG segment
org 100h

_beg:
mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end _beg

Который должен вывести на мой экран весёлую рожицу.

Дабы отбросить сомнения по поводу правильности набора, я по итогу содрал код из прилагаемого диска с исходниками. Однако весёлой рожицы в углу экрана так и не узрел.

В чём может быть проблема? Лично сам склоняюсь к мысли, что данный код работает только под ДОСом (У меня Виндос ХР). Однако предидущие программки у меня работали. Опять же с оговоркой на то, что "Hello, world" проскакивало очень быстро. Однако из положения я вышел дописав код остановки программы до нажатия клавиши. Т.е. без этой доработки код в принципе работает. Но реакция что бы его углядеть нужна как у мангуста.

З. Ы. очень прошу помочь, потому как речь идёт не только о отсутствии на экране одной довольной рожици. Но и присутствии перед экраном одной недовольной-)
Отправлен: 19.02.2009, 21:26
Вопрос задал: Stazher (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Stazher!

Проблема в том, что у Вас ХР, а не Win9x.
ХР не устанавливает нужный текстовый режим, у которого сегментный адрес равен 0B800h.
Поставте такие строки в начале программы:
_beg:mov ax,3
int 10h

И наслаждайтесь работой программы.
Удачи!
---------
Итерация от человека, рекурсия — от Бога (Питер Дойч)
Ответ отправил: Зенченко Константин Николаевич (статус: Профессор)
Украина, Киев
Тел.: +380979536619
Адрес: Украина г.Киев
----
Ответ отправлен: 19.02.2009, 21:33

Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244068 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!

    Оценка за ответ: 5
    Комментарий оценки:
    Спасибо. Помогло.

    З.Ы. Танк по смс пришлю только завтра.
    Баланс на мель сел.


    Вопрос № 161.001
    А как можно в TMS320xxx работать с большими числами, можно ли это делать в ассемблере, так как можно сделать в С++ (LINT)? Точнее как вычесляется 2^512, 2^1024?
    Отправлен: 20.02.2009, 15:48
    Вопрос задал: Muzaffar Akromov (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 2)

    Отвечает: Лысков Игорь Витальевич
    Здравствуйте, Muzaffar Akromov!
    Если вопрос только в том, "как вычисляется 2^512, 2^1024", то
    число, равное 2 в любой степени, строится очень просто (для случая младший байт первым):
    1) обнуляем буфер
    2) делим показатель степени на 8 (сдвигом на 3 вправо) - полученное число определяет адрес байта
    3) делаем логическое "и" показателя и числа 7 - столько раз сдвигаем единицу влево
    4) найденную маску OR-им с байтом по найденному ранее адресу
    ---------
    Удачи!
    Ответ отправил: Лысков Игорь Витальевич (статус: Профессионал)
    Украина, Кировоград
    ICQ: 234137952
    ----
    Ответ отправлен: 20.02.2009, 16:19

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244135 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вопрос № 161.034
    Здравствуйте. Я - начинающий, поэтому, вероятно, вопрос покажется наивным. Но. Подскажите пожалуйста код с комментариями: как получить текущую (активную) раскладку клавиатуры? Заранее благодарен.
    Отправлен: 20.02.2009, 21:20
    Вопрос задал: Rodbarid (статус: Посетитель)
    Всего ответов: 1
    Мини-форум вопроса >>> (сообщений: 4)

    Отвечает: Лысков Игорь Витальевич
    Здравствуйте, Rodbarid!
    Так понимаю, речь идет о программе под Windows. Заглядываем в MSDN и находим ответ:
    Чтобы получить активную раскладку клавиатуры, спрашиваем
    Код:

    invoke GetKeyboardLayout, dwLayout

    где dwLayout - идентификатор потока, для которого спрашиваем раскладку клавиатуры
    Для текущего достаточно указать 0

    Функция возвращает в младшем слове EAX (в AX) - идентификатор языка и
    в старшем слове - handle устойства клавиатура
    Нам нужно только AX. В приложении приведены некоторые из идентификаторов

    Приложение:

    ---------
    Удачи!

    Ответ отправил: Лысков Игорь Витальевич (статус: Профессионал)
    Украина, Кировоград
    ICQ: 234137952
    ----
    Ответ отправлен: 21.02.2009, 00:17

    Как сказать этому эксперту "спасибо"?
  • Отправить SMS #thank 244157 на номер 1151 (Россия) | Еще номера >>
  • Отправить WebMoney:
  • Вам помогли? Пожалуйста, поблагодарите эксперта за это!


    Вы имеете возможность оценить этот выпуск рассылки.
    Нам очень важно Ваше мнение!
    Оценить этот выпуск рассылки >>

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

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

    * Код программы, выдержки из закона и т.п. дополнение к вопросу.
    Эта информация будет отображена в аналогичном окне как есть.

    Обратите внимание!
    Вопрос будет отправлен всем экспертам данной рассылки!

    Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
    экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


    Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
    Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.

    Скажите "спасибо" эксперту, который помог Вам!

    Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА
    на короткий номер 1151 (Россия)

    Номер ответа и конкретный текст СМС указан внизу каждого ответа.

    Полный список номеров >>

    * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов)
    ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются.
    *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании.


    © 2001-2009, Портал RusFAQ.ru, Россия, Москва.
    Авторское право: ООО "Мастер-Эксперт Про"
    Техподдержка портала, тел.: +7 (926) 535-23-31
    Хостинг: "Московский хостер"
    Поддержка: "Московский дизайнер"
    Авторские права | Реклама на портале

    ∙ Версия системы: 5.13 от 01.12.2008

    Яндекс Rambler's Top100
    RusFAQ.ru | MosHoster.ru | MosDesigner.ru
    RusIRC.ru | Kalashnikoff.ru | RadioLeader.ru

    В избранное