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

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


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

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

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 307
от 05.12.2005, 21:54

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


Вопрос № 30490: Уважаемые эксперты, я просмотрел все "examples" в MASM32, учебник Галисеева "Ассемблер IBM PC" и нигде не нашел элементарнейших вещей: 1) как организовать интерактивный обмен типа, как в Паскале : write('Введите значение:');<b...
Вопрос № 30503: Здравствуйте уважаемые эксперты. У меня такой вопрос (я не совсем понял кому его задавать и поэтому задаю вам): можно ли где-то достать ПОДРОБНУЮ информацию о том как работать с отладчиком AFDpro. ADF я скачал на Kalashnikoff.ru Зарание спасибо з...
Вопрос № 30527: Уважаемые эксперты ! Есть простейший листинг : .386 .model flat,stdcall option casemap:none .code start: push dword ptr 2 push dword ptr 3 call AddDigs ret AddDigs proc mov eax,[esp+8] ; eax=2 add...
Вопрос № 30534: Как меня любезно просветили, функция 3 прерывания 10h переводит экран в текстовый режим. А какая функция выводит его из текстового режима? А то всё время приходится закрывать-открывать Far чтобы выйти из него. Спасибо за ответ....
Вопрос № 30536: В книге Калашникова О. А. вот такая вот программка, она просто заполняет экран символами, по очереди.... ( я думаю что все и без меня догадались что она делает, это скорее нужно мне) так вот в коде написано, что я куда перемест...

Вопрос № 30.490
Уважаемые эксперты, я просмотрел все "examples" в MASM32, учебник Галисеева "Ассемблер IBM PC" и нигде не нашел элементарнейших вещей: 1) как организовать интерактивный обмен типа, как в Паскале :
write('Введите значение:');
readln(x);
y:=x*x;
write('Результат=',y);
2) Как прочесть число или строку из клипбоарда и сбросить в клипбоард.
Помогите, пожалуйста, заранее благодарен, Кривенцов.swarog4@yandex.ru
Отправлен: 30.11.2005, 09:25
Вопрос задал: Кривенцов Олег Олегович (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Кривенцов Олег Олегович!
Вот так можно строку поместить в буфер:
;----------------------------------------------------------
; OUT -> 0 - ошибка, !0 - OK
;
proc CopyDataToClipboard
ARG @@type :dword
USES ebx, esi, edi
sub edi, edi

Call OpenClipboard, [hWndMain]
or eax, eax
jz @@exitErr

Call EmptyClipboard
or eax, eax
jz @@exitErr

mov ebx, ofs szColor_dec
mov eax, [@@type]
or eax, eax
jz @@m10
mov ebx, ofs szColor_hex
@m10:
Call GlobalAlloc, GMEM_MOVEABLE, 32
or eax, eax
jz @@exitErr0
xchg edi, eax

Call GlobalLock, edi
or eax, eax
jz @@exitErr1
xchg esi, eax

Call lstrcpy, esi, ebx
or eax, eax
jz @@exitErr2
xchg esi, eax
Call GlobalUnlock, esi
sub esi, esi

Call SetClipboardData, CF_TEXT, edi
or eax, eax
jz @@exitErr1

Call CloseClipboard
@exitOk:
sub eax, eax
inc eax
@ret:
ret

@exitErr2:
or esi, esi
jz @@e1
Call GlobalUnlock, esi
@e1:
@exitErr1:
or edi, edi
jz @@e0
Call GlobalFree, edi
@e0:
@exitErr0:
Call CloseClipboard
@exitErr:
sub eax,eax
jmp @@ret
endp

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 30.11.2005, 10:10
Оценка за ответ: 5

Отвечает: Sager
Здравствуйте, Кривенцов Олег Олегович!
1)В приложении прога организовывает интерактивный обмен, только единственное заметь, что числа выводятся в 16-ричном виде, и еще один баг - это если число например 15*15=1B9 (а 14h*14h=190h, 12h*12h=144h), то выведутся числа с крякозябрами - думаю сам легко исправишь - самому просто лень. А чтобы перевести число из 16-ричного в десятичное поступай так:
берешь самую левую цифру и умножаешь ее на 16^0, затем следующую влево цифру - умножаешь на 16^1 и складываешь с предыдущим результатом, затем умножаешь на 16^2 и опять складываешь и т.д.
Пример: F1Ah = 15*[16^2] + 1*[16^1] + 10*[16^0] = 10 + 16 + 3840 = 3866
Если будут какие вопросы - пиши.

Приложение:

Ответ отправил: Sager (статус: Студент)
Отправлен: 30.11.2005, 20:00
Оценка за ответ: 5


Вопрос № 30.503
Здравствуйте уважаемые эксперты. У меня такой вопрос (я не совсем понял кому его задавать и поэтому задаю вам): можно ли где-то достать ПОДРОБНУЮ информацию о том как работать с отладчиком AFDpro. ADF я скачал на Kalashnikoff.ru
Зарание спасибо за ответ.
Отправлен: 30.11.2005, 11:25
Вопрос задал: Дмитрий Сергеевич (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Boriss
Здравствуйте, Дмитрий Сергеевич!
Вот посмотрите - скачайте прикрепленный

Прикреплённый файл: Загрузить >>
Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа.
---------
Вывод - то место в тексте, где вы устали думать

Ответ отправил: Boriss (статус: Профессор)
Отправлен: 30.11.2005, 11:49
Оценка за ответ: 5
Комментарий оценки:
Действительно ПОДРОБНО!:)


Вопрос № 30.527
Уважаемые эксперты ! Есть простейший листинг :

.386
.model flat,stdcall
option casemap:none
.code
start:
push dword ptr 2
push dword ptr 3
call AddDigs
ret
AddDigs proc
mov eax,[esp+8] ; eax=2
add eax,[esp+4] ; eax=5
ret 8
AddDigs endp
end start

Программа спокойно проходит компиляцию. Однако,
после запуска exe-файла, в отладчике OllyDebug появ-
ляется сообщение-рекомендация: " Память по адресу
77E97CC6 не читаемая. Попытайтесь сменить EIP или
выходите из программы." Комп имеет RAM 1024 Мб.
Не могли бы Вы разъяснить почему получается такая
оказия ?
Отправлен: 30.11.2005, 19:38
Вопрос задал: Бочкарёв Алексей (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Бочкарёв Алексей!
Пиши просто
push 2
push 3

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 30.11.2005, 20:09

Отвечает: Хузин Макс
Здравствуйте, Бочкарёв Алексей!
Вроде все путем, посмотрел под SICE-ом - все работает нормально. Проверь в отладчике значение регистра esp в начале проги и перед выходом. Может компилятор чего добавляет в процедуру, типа
push ebp
mov ebp, esp
Если ничего не получится, не парься переходи на SICE
Ответ отправил: Хузин Макс (статус: 1-ый класс)
Отправлен: 01.12.2005, 09:14


Вопрос № 30.534
Как меня любезно просветили, функция 3 прерывания 10h переводит экран в текстовый режим. А какая функция выводит его из текстового режима? А то всё время приходится закрывать-открывать Far чтобы выйти из него.
Спасибо за ответ.
Отправлен: 30.11.2005, 21:10
Вопрос задал: Дмитрий Сергеевич (статус: Посетитель)
Всего ответов: 2
Мини-форум вопроса >>> (сообщений: 19)

Отвечает: Евгений Иванов
Здравствуйте, Дмитрий Сергеевич!
mov ax, 19456
int 33

---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 30.11.2005, 21:29
Оценка за ответ: 2
Комментарий оценки:
Не работает.

Отвечает: Sager
Здравствуйте, Дмитрий Сергеевич!
Тогда ты в самом начале проги сохраняй экран(Save_mainscr), а перед выходом восстанавливай(Restore_mainscr)

Приложение:

Ответ отправил: Sager (статус: Студент)
Отправлен: 01.12.2005, 17:41


Вопрос № 30.536

В книге Калашникова О. А. вот такая вот программка, она
просто заполняет экран символами, по очереди....
( я думаю что все и без меня догадались что она делает, это
скорее нужно мне)
так вот в коде написано, что я куда переместил,
я ожидал что программа будетзаполнять экран символами по очереди,
только при нажатии мной любой клавиши,
в принципе так и произошло, но только на экране появлялись символы,
той клавиши что я нажимал......

меня терзают смутные сомненья :) что при прерывании 16h,
код клавиши заносится в AL , а отсюда вопрос,
где можно взять табличку, с кодами всех символов ?

Приложение:

Отправлен: 30.11.2005, 21:30
Вопрос задал: Wlp (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Wlp!
mov ax,0B800H
MOV ES,AX
mov ah,10h
int 16h
mov al,1
mov ah,31
mov ch,254
n_sc:
mov di,0
call firc;
inc al
loop n_sс

а коды символов - они в любой справке описаны.
и это ещё зависит от кодировки.
например, кодировка cp1251:

╔[■]══════ ASCII Chart ══════════╗
║ ☺☻♥♦♣♠∙◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼║
║ !"#$%&'()*+,-./0123456789:;<=>?║
║@ABCDEFGHIJKLMNOPQRSTUVWXYZ[]^_║
║`abcdefghijklmnopqrstuvwxyz{|}~⌂║
║АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ║
║абвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐║
║└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀║
║рстуфхцчшщъыьэюяЁёЄєЇїЎў°∙·√№¤■ ║
╟────────────────────────────────╢
║ Char: Decimal: 0 Hex: 00 ║
╚════════════════════════════════╝

Приложение:

---------
Что имеем - не храним, потерявши - плачем

Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 30.11.2005, 21:50
Оценка за ответ: 5
Комментарий оценки:
Спасибо за cell firc , а насчёт символов, в справке пороюсь ещё....

Отвечает: Sager
Здравствуйте, Wlp!
На сайте kalashnikoff.ru есть прога helpassm - там есть и коды и много еще чего.

Приложение:

Ответ отправил: Sager (статус: Студент)
Отправлен: 01.12.2005, 11:02
Оценка за ответ: 5
Комментарий оценки:
Синкс, я посмотрю эту справку, так как она у меня на компе есть, просто, когда я первый раз защёл на сайт,я скачивал по принципу "чем больше тем лучше, потом разберусь.."

Отвечает: Master135
Здравствуйте, Wlp!
http://www.rvsn2.narod.ru/download/code.zip вот и все коды
---------
И пусть кто-то скажет что я не прав....
Ответ отправил: Master135 (статус: Студент)
Отправлен: 02.12.2005, 02:13


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

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

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

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

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


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


© 2001-2005, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Яндекс Rambler's Top100 hotlog_js="1.0"; hotlog_r=""+Math.random()+"&s=314124&im=101&r="+escape(document.referrer)+"&pg="+ escape(window.location.href); document.cookie="hotlog=1; path=/"; hotlog_r+="&c="+(document.cookie?"Y":"N"); hotlog_js="1.1";hotlog_r+="&j="+(navigator.javaEnabled()?"Y":"N") hotlog_js="1.2"; hotlog_r+="&wh="+screen.width+'x'+screen.height+"&px="+ (((navigator.appName.substring(0,3)=="Mic"))? screen.colorDepth:screen.pixelDepth) hotlog_js="1.3" hotlog_r+="&js="+hotlog_js; document.write("HotLog")

Subscribe.Ru
Поддержка подписчиков
Другие рассылки этой тематики
Другие рассылки этого автора
Подписан адрес:
Код этой рассылки: comp.soft.prog.faq
Архив рассылки
Отписаться
Вспомнить пароль

В избранное