Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППО_все_шпоры_разом.docx
Скачиваний:
7
Добавлен:
18.04.2019
Размер:
96.32 Кб
Скачать

IV. Умножение и деление целых чисел.

Используются 2 операции умножения и деления отдельно для чисел без знака и для чисел со знаком. После выполнения команд флаги CR и OR определяют, какая часть произведения существенна для дальнейших операций. При умножении чисел без знаков эти флаги равны 0, если старшая часть результата нулевая. Иначе( результат превысил по значащим числам сомножителя), устанавливаются в единицу.

При умножении чисел со знаком если старшая половина содержит расширение знакового разряда младщей половины, то флаги устанавливаются в 1.

Для корректировки чисел десятичного представления используется команда

AAM – работает с регистрами AL и AH и выполняет следующие действия:

1) делит значения регистра AL на 10.

2) запоминает частное в регистре AH и остаток в регистре AL.

Такое решение возможно только для небольших чисел.

В операциях деления также учитывается знак чисел.

Место расположения операндов и результатов деления:

Делимое – 16 бит располагается в регистре AX. Делитель – 1байт располагается в ячейке памяти. Частное – 1 байт располагается в регистре AL, остаток 1байт – в регистре AH.

При делении возможна ситуация деления на 0. Она возникает в следующих случаях:

1) делитель = 0

2) при делении чисел без знака если делимое > в 256 раз делителя

3) при увеличении разряда, при делении со знаком, ситуация возникает, если делимое > в 128 раз.

Для корректировки результатов в десятичный код используются команды

AAM

AAD

К группе арифметических команд относят команды расширения операнда.

CBW – преобразует байт в слово.

CWD – преобразует слово в двойное слово.

9.Язык программирования Assembler

I. Архитектура компьютера.

Это абстрактное представление ЭВМ, которое отражает структурную, схемотехническую и логическую организацию ЭВМ. В качестве базовой модели для языка программирования используется регистровая система.

а) Регистры общего назначения используются для временного хранения любых данных, при этом можно работать с регистром как целиком, так и по отдельности.

AX, BX, CX, DX – 16 б(бит или байт, не знаю)

AH, BH, CH, DH – 8 б

AL , BL, CL, DL – 8б

EAX, EBX, ECX, EDX – 32б

AX – аккумулятор, используется для операции ввода\вывода, сложения, сдвига(логического)

Регистр AL используется для операции над байтами и преобразованием десятичных чисел.

BX – базовый регистр, используется при адресации данных памяти.

CX – счетчик, используется как счетчик числа повторений цифр и в качестве номера позиций элемента данных при операциях над строками.

DX – регистр данных, используется в операциях ввода / вывода как номер порта.

Кроме того, при работе с данными, процессоры имеют дело с сегментами данных, начальные адреса которых хранятся в сегментных регистрах CS, DS.

CS – регистр сегмента команд, указывает на сегмент, содержащий текущую исполняемую команду. Для получения адреса следующей команды необходимо значение регистра CS увеличить на шаг смещения.

SS – регистр сегмента стека. Указывает на текущий сегмент стека, т.е. области памяти, предназначенной для временного хранения данных и адресов.

DS – регистр сегмента данных. Указывает на текущий сегмент данных, который обычно содержит используемую в программе переменную.

ES – регистр дополнительного сегмента. Указывает на дополнительный сегмент, который используется при выполнении операций над строками.

б) Регистры смещения используются для хранения относительных адресов ячеек памяти внутри сегмента.

IP хранит смещение адреса текущей команды программы.

SP указывает на вершину стека. Это смещение относительно начала стека.

BP – записывает начальный адрес поля памяти, непосредственно отведенный под стек.

SI DI – предназначены для хранения адресов индексов источника и приёмника данных при операциях над строками и другими структурами данных.

FL – регистр флагов представляет собой регистр, в котором фиксируется информация о текущем состоянии процессора.

1)OF – флаг переполнения, если = 1, то свидетельствует о наличии ошибки в операции над числами со знаком.

2)DF – флаг направления, используется в командах работы со строками. Если = 1, то результат индексов, используемый в командах работы со строками, увеличивается на 1 при каждом следующем выполнении команды, если = 0, то регистр индекса уменьшается на 1.

3)IF – флаг прерываний. Если = 1, то прога пользователя может реагировать на прерывание.

4) TF – если = 1, то разрешается выполнение проги по шагам.

5) SF – флаг знака. Устанавливается в 1, если в результате выполнения операции над числами со знаками получается отрицательное число

6) ZF – флаг нуля. Устанавливается в 1, если результатом операции является нулевое значение.

7) AF – флаг дополнительного переноса. Используется в двоичной / десятичной арифметике, устанавливается в 1, если результат операции не является десятичной цифрой.

8) PF – флаг четности. Устанавливается в 1, если результат операции имеет четное количество битов, =1 в двоичном представлении результатов.

9) CF – флаг переноса. В него заносится перенос или заём из знакового, старшего разряда числа.