Курс лекций по программированию на языке ассемблера. Макурина Т.А. - 16 стр.

UptoLike

Составители: 

16
A DB 10
B DB 10 DUP (?)
C DB 4 DUP (0)
D DW ?
.CODE
MOV @AX, @DATA
MOVDS,AX
MOV AX, OFFSET A
Команды пересылки данных
Эти команды осуществляют обмен данными и адресами между регистрами и ячейками памяти или
портами ввода-вывода.
К этой группе относятся следующие команды:
MOV <операнд-приемник>,<операнд-источник>
Существуют ограничения на использования данной команды:
Нельзя осуществлять пересылку из одной области памяти в другую. Если возникает такая
необходимость, то нужно использовать в качестве промежуточного буфера любой
доступный в данный момент регистр общего назначения нельзя загрузить в сегментный
регистр значение непосредственно из памяти. .
нельзя пересылать содержимое одного регистра в другой сегментный регистр. Это
объясняется тем, что в системе команд нет соответствующего кода операции. Выполнить
такую операцию можно через регистр общего назначения.
mov ax,ds
mov es,ax
нельзя использовать сегментный регистр cs в качестве операнда-приемника. Это
объясняется тем, что в паре регистров cs:ip всегда содержится адрес команды,
которая должна выполняться следующей. Изменение данного регистра означает
фактически операцию перехода, а не команду пересылки.
Для организации работы со стеком используются следующие команды.
Стекпамять организованная по принципу «первым пришел последним ушел». Чаще всего стек
используется при вызовах процедуры при использовании команды CALL. В этом случае адрес
возврата, который извлекается после выполнения процедуры.
Стек имеет следующую структуру. Адрес стека находится в указателе стека sp. Адрес, который
содержится в sp называется вершиной стека. Стек «растет» по направлению к младшим адресам
(к ячейке 0), т.е. первое слово помещенное в стек имеет наибольший адрес, следующее на 2 байта
ниже.
Если нам необходимо получить доступ к элементам не на вершине, а внутри стека, то в этом
случае необходимо использовать регистр ebp- это регистр указателя базы кадра стека, где можно
записать необходимый адрес
стека.
PUSH источник - запись значения источника в вершину стека. В этом случае если необходимо
сохранить необходимый адрес
POP приемник - запись значения из вершины стека по месту, указанному операндом
приемником. Значение при этом «снимается» с вершины стека.
PUSHA и PUSHAWкоманда групповой записи в стек. По этой команде в стек последовательно
записываются регистры ax, cx, dx, bx, sp, bp, si, di. Разница этих двуух команд в разрядности
используемых регистров (16 или 32 разрядных регистров)
POPA, POPAW – групповое извлечение из стека, обратная предыдущим операция.
A DB 10
B DB 10 DUP (?)
C DB 4 DUP (0)
D DW ?

.CODE
MOV @AX, @DATA
MOVDS,AX
MOV AX, OFFSET A


                                  Команды пересылки данных

Эти команды осуществляют обмен данными и адресами между регистрами и ячейками памяти или
портами ввода-вывода.
К этой группе относятся следующие команды:

MOV <операнд-приемник>,<операнд-источник>
Существуют ограничения на использования данной команды:
  • Нельзя осуществлять пересылку из одной области памяти в другую. Если возникает такая
     необходимость, то нужно использовать в качестве промежуточного буфера любой
     доступный в данный момент регистр общего назначения нельзя загрузить в сегментный
     регистр значение непосредственно из памяти. .
  • нельзя пересылать содержимое одного регистра в другой сегментный регистр. Это
     объясняется тем, что в системе команд нет соответствующего кода операции. Выполнить
     такую       операцию       можно       через     регистр     общего      назначения.
     mov ax,ds
     mov es,ax
   • нельзя использовать сегментный регистр cs в качестве операнда-приемника. Это
            объясняется тем, что в паре регистров cs:ip всегда содержится адрес команды,
            которая должна выполняться следующей. Изменение данного регистра означает
            фактически операцию перехода, а не команду пересылки.


           Для организации работы со стеком используются следующие команды.

Стек – память организованная по принципу «первым пришел последним ушел». Чаще всего стек
используется при вызовах процедуры при использовании команды CALL. В этом случае адрес
возврата, который извлекается после выполнения процедуры.
Стек имеет следующую структуру. Адрес стека находится в указателе стека sp. Адрес, который
содержится в sp называется вершиной стека. Стек «растет» по направлению к младшим адресам
(к ячейке 0), т.е. первое слово помещенное в стек имеет наибольший адрес, следующее на 2 байта
ниже.
Если нам необходимо получить доступ к элементам не на вершине, а внутри стека, то в этом
случае необходимо использовать регистр ebp- это регистр указателя базы кадра стека, где можно
записать необходимый адрес стека.
 PUSH источник - запись значения источника в вершину стека. В этом случае если необходимо
 сохранить необходимый адрес
 POP приемник - запись значения из вершины стека по месту, указанному операндом
 приемником. Значение при этом «снимается» с вершины стека.
 PUSHA и PUSHAW– команда групповой записи в стек. По этой команде в стек последовательно
 записываются регистры ax, cx, dx, bx, sp, bp, si, di. Разница этих двуух команд в разрядности
 используемых регистров (16 или 32 разрядных регистров)
 POPA, POPAW – групповое извлечение из стека, обратная предыдущим операция.

                                              16