1. Психическое (и духовное) развитие ребенка. Специальными проблемамы: ПП ребенку в преодолении эдипова комплекса; удовлетворение эмоц запросов в обретении личностной идентичности в процессах культурного, этнического и этического самоопределения; ПП в избегании эмоц травм при осознании неизбежности смерти либо в случае действит потери родителей и родственников; содействие в выработке устойчивых ценностных и моральных норм, особенно в критический период развития, и другое.
2. Экзистенциальные и личностные проблемы подростка. Главное направление работы — помощь в преодолении кризиса псих отделения от родителей и идентификация подростка с др значимыми лицами. Пс.-конс. и психотерапевт сталкиваются здесь со всем возможным спектром проблем подростк возраста — чувством неполноценности, осознанием ограниченных возможностей родителей, секс проблемами, борьбой за личный и соц статус, процессами трансформации инфантильного религиозного сознания и т.п.
3. Брак и семья. Супружеские и родительские конфликты, семейные кризисы, отношения в семье — привычные проблемы в этой обл. 50% разводов с небольшими вариациями в первых браках в дополнение к традиционным проблемам добрачного консультирования, обычной семейной и супружеской психотерапии в последние десятилетия выдвигают на одно из важных мест проблематику ПП разведенным, незамужним и неженатым, равно как и консультирование и псих поддержку при заключении повторных браков. Причем в США к этому прибавляются проблемы при заключении брака между лицами разных конфессий.
4. Проблематика психич и личностного здоровья. Традиционная превентивная и текущая помощь при псих и соматич заболеваниях, душевных и духовных страданиях, связанных с расстройствами настроения, алкоголизмом, наркоманией, житейскими стрессами,конфликтами, пограничными состояниями
5. ПП умирающему и психотерапия горя. В Америк. психотерапии только последних лет можно насчитать более 700 работ, освещающих эту, одну из сложнейших, проблем психологической помощи*.
6. Проблемы пожилого возраста. Выработка адекватного миросозерцания, удовлетв. эмоц запросов пожилых людей, отклик на возникающие религиозные проблемы, регулярный патронаж и помощь в организации соответствующего стиля и способа жизни — обычный круг забот псих попечения на Западе.
7. Места заключения, больницы, казармы, студенческие городки — давно уже освоенные области работы, где проблемы личности, общения, психического состояния, а также духовности представляют собой настолько же привычные, насколько и требующие постоянного усилия проблемы.
8. ПП и поддержка в кризисных ситуациях: внезапная смерть, попытка суицида, изнасилование, измена, потеря любви, работы и т.п.
9. Школьное консультирование- проблемы отнош учителя и учащихся, учащихся между собой, вопросы отнош с родителями,школьной успеваемости, развитие способностей, отклонения в поведении и т.п.
10. Проф. консультирование- ориентировка в выборе профессии, так и частные вопросы: как составить “резюме”, как и где получить вторую профессию, где найти работу по своим возможностям и т.п.
11. ПП относящаяся к кросскультурной проблематике: барьеры в адаптации, преодоление этнических предрассудков и стереотипов у эмигрантов, наконец, самостоятельная проблема подготовки консультантов для работы с этническими меньшинствами, исключающая опасность отношения профессионала к клиенту не как к личности, а как к представителю этноса или расы.
12. Управленческое консультирование (консультирование в организациях). Возникший в 1970-е годы, к настоящему времени данный вид социально-психологической помощи обладает широким спектром возможностей, включающих помощь в принятии управленческих решений, тренинг коммуникативных навыков, отслеживание и разрешение конфликтов, работа с персоналом и т.п.
Развития ПП в странах в зависимости от уровня эконом развития и качества жизни. В развитых странах Европы и Америки, широкое распространение получила гуманистическая парадигма, в пределах кот отстаивались и служили рабочим материалом в практике ПП экзистенц ценности и понятия: встреча, выбор, подлинность, самореализация, бытие. А основной акцент - на уникальность, ценность и значимость личности, личностного бытия, что, собственно говоря, и находится в центре проблематики ПП.
В странах третьего мира и бывшего “социалистического лагеря” упор делался не столько на личность, сколько на социальные и социально-псих аспекты бытия, т.к. ученые осознавали пагубное воздействие патологического общества на человека, в котором обычная позиция личности — это позиция жертвы.
Основы Ассемблера
Автор: Руслан Аблязов
6 октября 2006 года
Когда вы пишете программу на ассемблере, вы просто пишете команды процессору. Команды процессору - это просто коды или коды операций или опкоды. Опкоды - фактически "читаемый текст"- версии шестнадцатеричных кодов. Из-за этого, ассемблер считается самым низкоуровневым языком программирования, все в ассемблере непосредственно преобразовывается в шестнадцатеричные коды. Другими словами, у вас нет компилятора, который преобразовывает язык высокого уровня в язык низкого уровня, ассемблер только преобразовывает коды ассемблера в данные.
В этом уроке мы обсудим несколько опкодов, которые имеют отношение к вычислению, поразрядным операциям, и т.д. Другие опкоды: команды перехода, сравнения и т.д, будут обсуждены позже.
Числа в ассемблере могут представляться в двоичной, десятеричной или шестнадцатеричной системе. Для того, чтобы показать в какой системе использовано число надо поставить после числа букву. Для бинарной системы пишется буква b (пример: 0000010b, 001011010b), для десятеричной системы можно ничего не указывать после числа или указать букву d (примеры: 4589, 2356d), для шестнадцатеричной системы надо указывать букву h, шестнадцатеричное число надо обязательно писать с нулём в начале (примеры: 00889h, 0AC45h, 056Fh, неправильно F145Ch, С123h).
Самая первая команда будет хорошо всем известная MOV. Эта команда используется для копирования (не обращайте внимания на имя команды) значения из одного места в другое. Это 'место' может быть регистр, ячейка памяти или непосредственное значение (только как исходное значение). Синтаксис команды:
mov приемник, источник
Вы можете копировать значение из одного регистра в другой.
mov edx, ecx
Вышеприведенная команда копирует содержание ecx в edx. Размер источника и приемника должны быть одинаковыми,
например: эта команда - НЕ допустима:
mov al, ecx ; не правильно
Этот опкод пытается поместить DWORD (32-битное) значение в байт (8 битов). Это не может быть сделано mov командой (для этого есть другие команды).
А эти команды правильные, потому что у них источник и приемник не отличаются по размеру:
mov al, bl
mov cl, dl
mov cx, dx
mov ecx, ebx
Вы также можете получить значение из памяти и поместить эго в регистр. Для примера возьмем следующую схему памяти
смещение
3A
3B
3C
3D
3E
3F
Данныe
0D
0A
7A
5E
EF
7D
FF
AD
C7
(Каждый блок представляет байт)
Значение смещения обозначено здесь как байт, но на самом деле это это - 32-разрядное значение. Возьмем для примера 3A, это также - 32-разрядное значение: 0000003Ah. Только, чтобы с экономить пространство, некоторые используют маленькие смещения.
Посмотрите на смещение 3A в таблице выше. Данные на этом смещении - 25, 7A, 5E, 72, EF, и т.д. Чтобы поместить значение со смещения 3A, например, в регистр, вы также используете команду mov:
mov eax, dword ptr [0000003Ah]
Означает: поместить значение с размером DWORD (32-бита) из памяти со смещением 3Ah в регистр eax. После выполнения этой команды, eax будет содержать значение 725E7A25h. Возможно вы заметили, что это - инверсия того что находится в памяти: 25 7A 5E 72. Это потому, что значения сохраняются в памяти, используя формат little endian . Это означает, что самый младший байт сохраняется в наиболее значимом байте: порядок байтов задом на перед. Я думаю, что эти примеры покажут это:
dword (32-бит) значение 10203040 шестнадцатиричное сохраняется в памяти как: 40, 30, 20, 10
word (16-бит) значение 4050 шестнадцатиричное сохраняется в памяти как: 50, 40
Вернемся к примеру выше. Вы также можете это делать и с другими размерами:
mov cl, byte ptr [34h] ; cl получит значение 0Dh
mov dx, word ptr [3Eh] ; dx получит значение 7DEFh
Вы, наверное, уже поняли, что префикс ptr обозначает, что надо брать из памяти некоторый размер. А префикс перед ptr обозначает размер данных:
Byte - 1 байт
Word - 2 байта
Dword - 4 байта
Иногда размер можно не указывать:
mov eax, [00403045h]
Так как eax - 32-разрядный регистр, ассемблер понимает, что ему также требуется 32-разрядное значение, в данном случае из памяти со смещением 403045h.
Можно также непосредственные значения:
mov edx, 5006h
Эта команда просто запишет в регистр edx, значение 5006. Скобки, [ и ], используются, для получения значения из памяти (в скобках находится смещение), без скобок, это просто непосредственное значение.
Можно также использовать регистр как ячейку памяти (он должен быть 32-разрядным в 32-разрядных программах):
mov eax, 403045h ; пишет в eax значение 403045
mov cx, [eax] ; помещает в регистр CX значение (размера word) из памяти
; указанной в EAX (403045)
В mov cx, [eax], процессор сначала смотрит, какое значение (= ячейке памяти) содержит eax, затем какое значение находится в той ячейке памяти, и помещает это значение (word, 16 бит, потому что приемник, cx, является 16-разрядным регистром) в CX.
Стековые операции - PUSH, POP. Перед тем, как рассказать вам о стековых операциях, я уже объяснял вам, что такое стек. Стек это область в памяти, на которую указывает регистр стека ESP. Стек это место для хранения адресов возврата и временных значений. Есть две команды, для размещения значения в стеке и извлечения его из стека: PUSH и POP. Команда PUSH размещает значение в стеке, т.е. помещает значение в ячейку памяти, на которую указывает регистр ESP, после этого значение регистра ESP увеличивается на 4. Команда Pop извлекает значение из стека, т.е. извлекает значение из ячейки памяти, на которую указывает регистр ESP, после этого уменьшает значение регистра ESP на 4. Значение, помещенное в стек последним, извлекается первым. При помещении значения в стек, указатель стека уменьшается, а при извлечении - увеличивается. Рассмотрим пример:
(1) mov ecx, 100
(2) mov eax, 200
(3) push ecx ; сохранение ecx
(4) push eax
(5) xor ecx, eax
(6) add ecx, 400
(7) mov edx, ecx
(8) pop ebx
(9) pop ecx
Анализ:
1: поместить 100 в ecx
2: поместить 200 в eax
3: разместить значение из ecx (=100) в стеке (размещается первым)
4: разместить значение из eax (=200) в стеке (размещается последним)
5/6/7: выполнение операций над ecx, значение в ecx изменяется
8: извлечение значения из стека в ebx: ebx станет 200 (последнее размещение, первое извлечение)
9: извлечение значения из стека в ecx: ecx снова станет 100 (первое размещение, последнее извлечение)
Чтобы узнать, что происходит в памяти, при размещении и извлечении значений в стеке, см. на рисунок ниже:
(стек здесь заполнен нулями, но в действительности это не так, как здесь). ESP стоит в том месте, на которое он указывает)
mov ax, 4560h
push ax
mov cx, FFFFh
push cx
pop edx
edx теперь 4560FFFFh.
Вызов подпрограмм возврат из них - CALL, RET. Команда call передает управление ближней или дальней процедуре с запоминанием в стеке адреса точки возврата. Команда ret возвращает управление из процедуры вызывающей программе, адрес возврата получает из стека. Пример:
..code..
call 0455659
..more code..
Код с адреса 455659:
add eax, 500
mul eax, edx
ret
Когда выполняется команда call, процессор передает управление на код с адреса 455659, и выполняет его до команды ret, а затем возвращает управление команде следующей за call. Код который вызывается командой call называется процедурой. Вы можете поместить код, который вы часто используете в процедуру и каждый раз когда он вам нужен вызывать его командой call.
Подробнее: команда call помещает регистр EIP (указатель на следующюю команду, которая должна быть выполнена) в стек, а команда ret извлекает его и передаёт управление этому адресу. Вы также можете определить аргументы, для вызываемой программы (процедуры). Это можно сделать через стек:
push значение_1
push значение_2
call procedure
Внутри процедуры, аргументы могут быть прочитаны из стека и использованы. Локальные переменные, т.е. данные, которые необходимы только внутри процедуры, также могут быть сохранены в стеке. Я не буду подробно рассказывать об этом, потому, что это может быть легко сделано в ассемблерах MASM и TASM. Просто запомните, что вы можете делать процедуры и что они могут использовать параметры.
Одно важное замечание: регистр eax почти всегда используется для хранения результата процедуры.
Это также применимо к функциям windows. Конечно, вы можете использовать любой другой регистр в ваших собственных процедурах, но это стандарт.
Вот и кончился очередной урок. На следующем уроке мы напишем первую программу на ассемблере.