Архитектура вычислительных систем



бет4/5
Дата05.03.2023
өлшемі1,31 Mb.
#71719
түріЛабораторная работа
1   2   3   4   5
Описание команд:
INC Инкремент на 1
0099103F 41 inc ecx

41 (01000001): 40+ rd


01000000: INC
0001: ecx

Добавляет 1 к операнду назначения, сохраняя при этом состояние флага CF. Операнд назначения может быть регистром или ячейкой памяти. Эта инструкция позволяет обновлять счетчик циклов, не нарушая флаг CF.





ADD Сложение

00991037 03 C2 add eax,edx

03 (000000 11):


000000: add instruction
1: Adding R/M field to the REG field
1: Adding 32 bit values together

C2 (11 000 010):


11 (MOD): Register addressing mode
000 (REG): eax register
010 (R/M): edx register

Команда ADD в зависимости от результата выполнения может изменять все основные флаги, а именно:


CF - флаг переноса. Этот флаг может быть изменён, например, при переполнении.


ZF - флаг нуля. Этот флаг будет установлен, если результатом сложения будет ноль
SF - флаг знака. Этот флаг будет установлен, если результатом сложения будет отрицательное число.
OF - флаг переполнения. Этот флаг будет установлен в случае переполнения (то есть когда результат не помещается в СУММУ - значение слишком большое).
PF - флаг чётности. Этот флаг устанавливается в довольно сложных случаях (для начинающих это пока лишнее), поэтому подробно рассказывать не буду.

AND Логическое "И"


00991034 83 E2 07 and edx,7

83: 83 /4 ib - r/m32 AND imm8 (sign-extended).


E2: edx
07: 7



POP Извлечение слова из стека


0099105D 5F pop edi

5f (01011111):


01011000: POP
111: edi

MOV Пересылка данных


008F1873 89 04 8D 38 A1 8F 00 mov dword ptr cMas (08FA138h)[ecx*4],eax

89 (89 /r): Move r16 to r/m16 – помещение значения регистра 16 бит в регистр/память 16 бит


04 (00 000 100):





REG (000): регистр eax


MOD - смещение (00) и R/M (100): SIB mode

8D (10 001 101) – SIB (Scaled Index Byte):


10: scale = 4


001: index = ecx
101: base = displacement only, cause of MOD = 00 (нет регистра)

[08FA138h + ecx*4]


Копирует второй операнд (исходный операнд) в первый операнд (целевой операнд). Исходный операнд может быть непосредственным значением, регистром общего назначения, сегментным регистром или ячейкой памяти; регистр назначения может быть регистром общего назначения, сегментным регистром или ячейкой памяти. Оба операнда должны иметь одинаковый размер, который может быть байтом, словом, двойным словом или четверным словом.

CMP Сравнение чисел.
00991058 83 F9 09 cmp ecx,9

83 F9 09: 83 /7 ib - Compare imm8 with r/m32.


83: cmp
F9: ecx


09: 9



CF - флаг переноса, SF - флаг знака, OF - флаг переполнения, ZF - флаг нуля, PF - флаг четности


SAR Сдвигает биты операнда (регистр/память) вправо на один разряд, значение последнего вытолкнутого бита попадает в флаг переноса, а освободившиеся биты заполняются знаковым битом.


00991039 C1 F8 03 sar eax,3

C1 F8 03: C1 /7 ib - Signed divide r/m16 by 2, imm8 times.


C1: sar
F8: eax


03: 3

CDQ Распространяет знаковый бит регистра eax на все биты регистра edx. (обычно используется при делении – idiv )
00991033 99 cdq

99: EDX:EAX := sign-extend of EAX




RET Выполняет возврат из ближней процедуры. Забирает из стека адрес возврата в программу процедуры.


00991065 C3 ret
C3: Near return to calling procedure


JMP Передает управление программой в другую точку потока команд без записи информации о возврате. Операнд назначения (цель) определяет адрес инструкции, на которую выполняется переход. Этот операнд может быть непосредственным значением, регистром общего назначения или ячейкой памяти.

00BD1022 EB 0B jmp main+2Fh (0BD102Fh)


EB (EB cb): Jump short, RIP = RIP + 8-bit displacement sign extended to 64-bits


0B: rel8 - смещение

RIP — содержит адрес инструкции, следующей непосредственно за текущей инструкцией.


Передает управление программой в другую точку потока команд без записи информации о возврате. Операнд назначения (цель) определяет адрес инструкции, на которую выполняется переход. Этот операнд может быть непосредственным значением, регистром общего назначения или ячейкой памяти.
Эта инструкция может использоваться для выполнения четырех различных типов прыжков:
• Ближний переход — переход к инструкции внутри текущего сегмента кода (сегмент, на который в данный момент указывает регистр CS), иногда называемый внутрисегментным переходом.
• Короткий прыжок — ближний прыжок, где диапазон прыжка ограничен значениями от –128 до +127 от текущего значения EIP.
• Дальний переход — переход к инструкции, расположенной в сегменте, отличном от текущего сегмента кода, но с тем же уровнем привилегий, иногда называемый межсегментным переходом.
• Переключение задач — переход к инструкции, расположенной в другой задаче.



Достарыңызбен бөлісу:
1   2   3   4   5




©emirsaba.org 2024
әкімшілігінің қараңыз

    Басты бет