Команда загрузки адресаВ естественных (например, почвенных) микробных сообществах сукцессии обычно вызываются поступлением порции органического вещества той или иной формы. Поскольку различные микроорганизмы приспособлены либо к разрушению сложных полимеров, либо поглощению мономеров при их высокой концентрации, либо к существованию в условиях голода, по мере разрушения и использования органики происходят изменения в структуре сообщества.В лесной подстилке, например, есть возможность изучать несколько стадий сукцессии одновременно, поскольку они сменяются при движении сверху вниз.Помимо этого сукцессию могут вызывать изменения температуры, влажности, содержания газов или специфических веществ и т. п. Процесс почвообразования сопровождается продолжительной сукцессией как растительного, так и микробного сообщества.
Язык Ассемблера. Команды пересылки данных В общем случае система команд процессора включает в себя следующие четыре основные группы команд:
Команды пересылки данных не требуют выполнения никаких операций над операндами. Операнды просто пересылаются (точнее, копируются) из источника в приемник Источником и приемником могут быть внутренние регистры процессора, ячейки памяти или устройства ввода/вывода. АЛУ в данном случае не используется. КПД выполняют следующие важнейшие функции:
Команда MOV Требования: - длина операндов должна быть одинаковая(байт → байт, слово → слово); - запрещена операция ОП→ОП !!! (потому что может быть задано только 1 смещение, а ОП→ОП требует 2). Допустимые регистры: AL … DH, AX … DX, SI.. SP (регистры общего назначения) Примеры: MOV AX, 58 // (AX ← 58) РОН ← НО MOV DL, CH // (DL ← CH) РОН ← РОН MOV A, SI //(A ← SI) Команда MOV для сегментных регистров Примеры: MOV AX, 200H MOV DS, AX
Команда загрузки адреса LEA OП1, ОП2 //Адрес ОП2 → ОП1 РОН ОП Примеры: 80 A DW 50H MOV AX, A //AX = 50H LEA BX, A //BX = 80H LEA BX, [BX + 2] //BX = 82H MOV BX, OFFSET A //BX = 80H В некоторых процессорах (например, в процессоре 8086) специально выделяются функции обмена с устройствами ввода/вывода. Команда IN используется для ввода (чтения) информации из устройства ввода/вывода, а команда OUT используется для вывода (записи) в устройство ввода/вывода. Обмен информацией в этом случае производится между регистром-аккумулятором и устройством ввода/вывода. В более продвинутых процессорах этого же семейства (начиная с процессора 80286) добавлены команды строчного (цепочечного) ввода (команда INS) и строчного вывода (команда OUTS). Эти команды позволяют пересылать целый массив (строку) данных из памяти в устройство ввода/вывода (OUTS) или из устройства ввода/вывода в память (INS). Адрес памяти после каждого обращения увеличивается или уменьшается (как и в случае с командой MOVS). Часто выделяются специальные команды для сохранения в стеке и для извлечения из стека (PUSH — сохранить в стеке, POP — извлечь из стека). Эти команды выполняют пересылку с автоинкрементной и с автодекрементной адресацией (даже если эти режимы адресации не предусмотрены в процессоре в явном виде). Может быть предусмотрен обмен информацией между внутренними регистрами, между двумя половинами одного регистра (SWAP) или между регистром и ячейкой памяти.
6. Язык ассемблера. Операции сложения с двоичным данными. Add – команда сложения; Adc – команда сложения с переносом Команды сложения формулируют все флаги. MOV BX, 20 //BX=20 ADD BX, 15 //BX=35 ADD A, BX //A=A+BX Команда формирует все флаги. Предназначена для сложения длинных чисел (т.е. длиной больше 2 байт). Также к к-м сложения относится команды INC (инкремент) INC ОП1, ОП1+1àОП1 Операндами могут быть POМ и ОП. Команда формирует все флаги, кроме CF, который сохраняет свое значение. INC исп-ся для изменения адресных регистров.
7. Язык Ассемблера. Операции сложения с десятичными данными. Существуют два формата представления десятичных чисел: - упакованный; - распакованный. Выполняется в два действия: 1) сложение двоичных чисел, 2) десятичная коррекция. Коррекция выполняется с помощью команд: DAA – для упакованных. AAA – для распакованных Пример: 35+28 A db 35H B db 28H MOV AL, A; 35 = 53 дес. ADD AL, B; 28 = 40 дес. DAA; 5D= 93 дес. Во время десятичной коррекции если результат больше 99, ТОО флаг Cf уст-ся в1 и в регистр АH записывается 1. Пример 2: распак-е числа. При выполнении сложения коррекции старший полубайт игнорируется. A db ‘8’ B db ‘5’ MOV AL, A; 38 ADD AL, B; 35 AAA; 6D
CF=1
9.Операции вычитания с десятичными данными. Для выполнения правильного вычитания используется команда коррекции DAS. Если эту команду выполнять сразу после SUB(SBB DEC)и в регистре ал находятся разность двух упакованных двоично-десятичных чисел, то в результате в ал запишется упакованное двоично - десятичное число которое должно быть правильный результат. Данная команда выполняет следующие действия: - если младшие четыре бита AL больше 9 или флаг AF =1то AL уменьшатся на 6, CF устанавливается, если при вычитании произошел заем, и Af устанавливается в 1. - если теперь старшие четыре бита AL больше 9 или CF = 1то AL уменьшится на 60h и CF установится в 1 -иначе CF=0
10. Язык Ассемблера. Операции умножения. Умножение выполняется 2-мя командами: MUL и IMUL. MUL – умножение беззнаковых чисел mul ОП1 Команда выполняет умножение двух операндов без учета знаков. Алгоритм зависит от формата операнда команды и требует явного указания местоположения только одного сомножителя, который может быть расположен в памяти или в регистре. Местоположение второго сомножителя фиксировано и зависит от размера первого сомножителя:
Результат умножения помещается также в фиксированное место, определяемое размером сомножителей:
IMUL – умножение знаковых чисел imul ОП1 Умножение может выполняться по двум схемам: AL*ОП1(1байт)=AH|AL AX*ОП1(2байтa)=DX|AX Выбор схемы умножения осуществляется по длине ОП1 Команда формирует 2 флага и устанавливает их в одно значение. Флаги CF и OF равны 1, если значение превысило длину операнда. A db 0FEH MOV AL,2 MUL A AX:01FC (508) CF,OF=1 MOV AL,2 IMUL A AX:FFFC (-4) CF,OF=0
|