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

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


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

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

Выпуск № 730
от 22.04.2007, 17:05

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


Вопрос № 82831: возник вопрос. допустим в регистре al хранится число допустим 5(либо любой другой символ). Можно ли вывести на экран ascii-код этого символа?. ps. не сам символ а Именно Код. ...
Вопрос № 82888: Товарищи эксперты, вот такой вапрос.Есть форма, в которую,предпололжим, вводится имя юзера и пароль, и две кнопки Ok и Canсel. При нажатии ОК подтверждается ввод данных, при нажатии Canсel, соответсвенно совершается выход.А если нажать клавишу Enter ...
Вопрос № 82910: здравствуйте. решил попробывать ваш пример (текст кода указан), которая должна выводить рожицу в первое знакоместо на синем фоне. но у меня она так и не появляеться, программа не виснет, не выдает ошибок компилятор, все Ок, только вот не результата. ...

Вопрос № 82.831
возник вопрос. допустим в регистре al хранится число допустим 5(либо любой другой символ). Можно ли вывести на экран ascii-код этого символа?.
ps. не сам символ а Именно Код.
Отправлен: 16.04.2007, 18:59
Вопрос задал: Biggle (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

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

В регистрах всегда хранятся только числа(коды символов),
и при выводе на экране рисуется символ код которого выводится.
В приложении код для вывода чисел в 10-ой и 16-ой системах
если в al будет 5 то на экран выведется 5-ка(10) и 05(16),
а если 45 то на экране будет 45(10) и 2D(16)
Если, что пишите.
Удачи

Приложение:

---------
И только наступив на грабли мы преобретаем драгоценный опыт!

Ответ отправил: Зенченко Константин Николаевич (статус: 10-ый класс)
Ответ отправлен: 16.04.2007, 19:30

Отвечает: An42
Здравствуйте, Biggle!
Да, предположим, что в al находится ascii – код. al = x1x2, где x1 – старшие 4 бита, а x2 младшие 4 бита. (пример al = 4B)
выводим в шестнадцатеричном формате
Если, x1 0…9 то перед x1 записываем 3, будет вид 3x1, а если A…F то заменяем x1 на 41…46 соответственно будет вид 41, если была A, 42 если была B …, 46 если F. Аналогично проделывается и с x2, (то в нашем примере получится 3442) тогда на экране будет именно ascii - код. 34 на экране – 4, 42 на экране B.

Удачи
Ответ отправил: An42 (статус: 2-ой класс)
Ответ отправлен: 16.04.2007, 22:18


Вопрос № 82.888
Товарищи эксперты, вот такой вапрос.Есть форма, в которую,предпололжим, вводится имя юзера и пароль, и две кнопки Ok и Canсel. При нажатии ОК подтверждается ввод данных, при нажатии Canсel, соответсвенно совершается выход.А если нажать клавишу Enter на клавиатуре, то она дублирует нажатие кнопки OK. Собственно сам вопрос:в какую сторону копать, чтоб при нажатии клавиши enter совершался выход из программы. Т.е. enter дублировал бы клавишу Cancel
Отправлен: 17.04.2007, 02:38
Вопрос задал: Chip (статус: 1-ый класс)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 4)

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

Когда Вы создаете кнопки с помощью CreateWindow обратите внимание dwStyle:BS_DEFPUSHBUTTON этот параметр определяет кнопку для выбора по умолчанию. Кнопка отмечается ободком, ее можно выбрать нажимая клавишу ENTER даже если она не имеет фокуса ввода.
CreateDialog использует CreateWindow в соответствии с шаблоном диалога.

Удачи!

---------
И только наступив на грабли мы преобретаем драгоценный опыт!
Ответ отправил: Зенченко Константин Николаевич (статус: 10-ый класс)
Ответ отправлен: 17.04.2007, 10:28

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Chip!
Или по-другому: ловите WM_COMMAND с кодом IDOK для Enter-а и IDCANCEL для Escape
и делайте по ним все, что хочется.
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 17.04.2007, 10:49

Отвечает: Пашка
Здравствуйте, Chip!
См. установку фокуса на копку.Если я не ошибаюсь то дефалтово фокус установлен на ОК.
Ответ отправил: Пашка (статус: 2-ой класс)
Ответ отправлен: 17.04.2007, 12:24

Отвечает: Xaud
Здравствуйте, Chip!

Для того чтобы при нажтии на Enter нажималась какая-либо кнопка, необходимо чтобы эта кнопка имела фокус ввода. Кнопка может быть поумолчанию, но без фокуса ввода, тогда Enter не "нажмет" ее.

Возможны несколько вариантов.

1. При создании диалога из ресурса удобнее поступить следующим образом:

вместо простой кнопки пишем:

DEFPUSHBUTTON текст, id, x, y, ширина, высота [, стиль [, расширенный_стиль]]

параметры, полагаю, и без меня понятны.
ВАЖНО! При этом кнопка будет по умолчанию (с дополнительным бордюром) и с фокусом (при старте диалога). НО если фокус потеряется у кнопки, И фокус НЕ будет принадлежать ДРУГОЙ КНОПКЕ, то все равно Enter "нажмет" ее, иначе, если фокус у другой кнопки, нажмется эта кнопка - с новым фокусом.

2. Для не-диалога нужно вручную установить фокус ввода на нужную кнопку, здесь даже поумолчанию кнопка не поможет (елси даже фокус где-то - не на другой кнопке):

invoke SetFocus,hNewPushButton ;(masm)

где hNewPushButton - хэндл кнопки.

А чтобы сделать бордюрчик как у кнопки по умолчанию, можно либо, как было сказано ранее, при создании кнопки указать атрибут BS_DEFPUSHBUTTON, а можно динамически назначить:

invoke GetWindowLong,hNewPushButton,GWL_STYLE ;получаем стиль кнопки
or eax,BS_DEFPUSHBUTTON ;задаем атрибут кнопки по умолчанию
invoke SetWindowLong,hNewPushButton,GWL_STYLE,eax ;устанавливаем атрибут

Вот основные моменты.
Ответ отправил: Xaud (статус: 2-ой класс)
Ответ отправлен: 18.04.2007, 20:34


Вопрос № 82.910
здравствуйте. решил попробывать ваш пример (текст кода указан), которая должна выводить рожицу в первое знакоместо на синем фоне. но у меня она так и не появляеться, программа не виснет, не выдает ошибок компилятор, все Ок, только вот не результата. подскажиет в чем может быть дело?? я так думаю что рассылка 2000года а токда не было XP. а я есс-но, пытаюсь запустить программу под ним.

Приложение:

Отправлен: 17.04.2007, 09:03
Вопрос задал: Michail_bal (статус: Посетитель)
Всего ответов: 4
Мини-форум вопроса >>> (сообщений: 2)

Отвечает: Sergijj
Здравствуйте, Michail_bal!

После 'Begin:' Вам необходимо инициализировать текстовый режим работы видеоадаптера (WinXP сама этого не делает):

Begin:
mov ax, 0003h
int 10h
mov ax, 0B800h

Успехов!
---------
Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 9-ый класс)
Ответ отправлен: 17.04.2007, 09:10

Отвечает: P@lach
Здравствуйте, Michail_bal!
Запустите в DOS оболочке и между строками:
CSEG segment
org 100h

вставте: 'assume cs:cseg,ds:cseg,ss:cseg,es:cseg'
Ответ отправил: P@lach (статус: 2-ой класс)
Ответ отправлен: 17.04.2007, 10:22

Отвечает: An42
Здравствуйте, Michail_bal!
Запусти программу из под NC, и все будет нормально

Удачи
Ответ отправил: An42 (статус: 2-ой класс)
Ответ отправлен: 17.04.2007, 11:44

Отвечает: Пашка
Здравствуйте, Michail_bal!
Я точно не помню, но вроде перед надо уставовить видеоражим см. прерывание int 10h(Видосервис). Входные параметры в прерывание:
ah = 0
al = толи 2 или 3
Млин я давно говорил чтоб хотыбы он-лайн версию книги АК-47 подправили, а то вы уже с этим вопрос не первый и не десятый.
Ответ отправил: Пашка (статус: 2-ой класс)
Ответ отправлен: 17.04.2007, 12:38


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

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

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

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

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


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


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.50 (beta) от 15.04.2007
Яндекс Rambler's Top100

В избранное