- •История развития эвм
- •Особенности архитектуры современной вычислительной машины
- •Общее устройство компьютера и особенности архитектуры
- •Архитектура памяти эвм
- •Виртуальная память
- •Система адресации
- •Принципы обмена информацией с внешними устройствам
- •Процессор
- •Регистры процессора
- •Специальные средства отладчика
- •Машинная адресация
- •Требования языка ассемблера
- •Директивы
- •Инициализация программы
- •Ассемблирование и выполнение программ
- •Директивы определения данных
- •Непосредственные операнды
- •Различия между программами в ехе и сом-файлах
- •Логика и организация программы
- •Флаговый регистр
- •Команды условного перехода
- •Расширенные операции пересылки
- •Команды логических операций: and, or, xor, test, not
- •Арифметические команды
- •Команды обработки строк
- •Команды прерывания
- •Характеристики систем прерывания
Логика и организация программы
Флаговый регистр
Регистр
флагов состоит
из 16 бит,
из них используются
только 9.
Это регистр состояния процессора. Биты регистра состояния устанавливаются или очищаются в зависимости от результата исполнения предыдущей команды и используются некоторыми командами процессора. Биты регистра состояния могут также устанавливаться и очищаться специальными командами процессора. Отдельные биты флагов представляют одиночными буквами o, d, i, t, s, z, a, p, c или двумя буквами of, df, if, tf, sf, zf, af, pf и cf. CF — флаг переноса при арифметических операциях. Содержит перенос из старшего бита после арифметических операций, а так же последний бит при сдвигах или циклических сдвигах. PF — флаг четности результата, показывает четность младших восьмибитовых данных (1 – четное, 0 – нечетное). AF — флаг дополнительного переноса. Содержит перенос из 3 бита для 8-битовых данных, используется для специальных арифметических операций. ZF — флаг нулевого результата. Показывает результат арифметических операций и операций сравнения (0 – ненулевой, 1 – нулевой результат). SF — флаг знака (совпадает со старшим битом результата, 0 – плюс, 1 - минус). TF — флаг пошагового режима (используется при отладке). IF — флаг разрешения аппаратных прерываний. DF — флаг направления при строковых операциях. Обозначает левое или правое направление пересылки или сравнения строковых данных. OF — флаг переполнения. Указывает на переполнение старшего бита при арифметических командах.
Команды условного перехода
Расширенные операции пересылки
Пересылки непосредcтвенных данных в регистр, пересылки данных из памяти в регистр, пересылки содержимого регистра в память и пересылки содержимого oдного регистра в другой, во всех случаях длина данных огpаничена одним или двумя байтами и не предусмотрена пересылка данных из одной области памяти непосредственно другую область.
В EXE-программе, приведенной на рис., сегмент данных cодержит три девятибайтовых поля, NAME1, NAME2, NAME3. Цель программы - переслать данные из поля NAME1 в поле NAME2 и переслать данные из поля NAME2 в поле NAME3. Так как эти поля имеют длину девять байт каждая, то для пересылки данных кроме простой команды MOV потребуются еще другие команды. Процедура BEGIN инициализирует сегментные регистры и затем вызывает процедуры B10MOVE и C10MOVE. B10MOVE пересылает содержимое поля NAME1 в поле NAME2. Процедура начинает с самого левого байта в поле NAME1 и в цикле пересы лает затем второй байт, третий и т.д. Рис. Расширенные операции пересылки.
NAME1: A B C D E F G H I | | | | | | | | | NAME2: J K L M N O P Q R Для продвижения в полях NAME1 и NAME2 в регистр CX заносится значение 9, а регистры SI и DI используются в качестве индексных. Две команды LEA загружают относительные aдреса полей NAME1 и NAME2 в регистры SI и DI:
LEA SI,NAME1 ;Загрузка относительных адресов LEA DI,NAME2 ; NAME1 и NAME2 Для пересылки содержимого первого байта из поля NAME1 в первый байт поля NAME2 используются адреса в регистрах SI и DI. kвадратные скобки в командах MOV обозначают, что для доступа к памяти используется адрес в регистре, указанном в квадратных cкобках. Таким образом, команда MOV AL,[SI] означает: использовать адрес в регистре SI (т.е.NAME1) для пересылки соответствующего байта в регистр AL. А команда MOV [DI],AL означает: пересылать содержимое регистра AL по адресу, лежащему в регистре DI (т.е. NAME2). Следующие команды увеличивают значения регистров SI и DI и уменьшают значение в регистре SH. Если в регистре CX не нулевое значение, управление передается на следующий цикл (на метку B20).Так как содержимое регистров SI и DI было увеличено на 1, то следующие команды MOV будут иметь дело с адресами NAME1+1 и NAME2+1. Цикл продолжается таким образом, пока не будет передано содержимое NAME1+8 и NAME2+8. Процедура C10MOVE аналогична процедуре B10MOVE с двумя исключениями: она пересылает данные из поля NAME2 в поле NAME3 и использует команду LOOP вместо DEC и JNZ.
