Разработка программы на Ассемблере

Кыргызский Государственный Национальный Университет Институт Интеграции Международных Образовательных программ Кыргызско-Американский Факультет Компьютерных Информационных Систем и ИНТЕРНЕТ КАФ-ИНТЕРНЕТ Курсовой проект Организация ЭВМ тема Разработка программы на Ассемблере. Выполнили студенты группы
КИС 2 – 98 Вершинин АА Исманов АА Проверил преподаватель Кочетов ОП Бишкек 2001 СОДЕРЖАНИЕ ВВЕДЕНИЕ 3 АССЕМБЛЕР. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ 4 ФОРМАТ КОМАНД И ИХ КЛАССИФИКАЦИЯ .5НЕКОТОРЫЕ ОПЕРАТОРЫ, ПРЕДОПРЕДЕЛЁННЫЕ ИМЕНА, ДИРЕКТИВЫ И КОМАНДЫ АССЕМБЛЕРА 7 КОМАНДЫ ПЕРЕСЫЛКИ 11 АРИФМЕТИЧЕСКИЕ
КОМАНДЫ 12 ЛОГИЧЕСКИЕ КОМАНДЫ И КОМАНДЫ СДВИГА 14 КОМАНДЫ УПРАВЛЕНИЯ МИКРОПРОЦЕССОРОМ 18 ПРИМЕЧАНИЯ 20 ОБЩИЙ РАЗДЕЛ 1. Технико-математическое описание задачи . .2. Требования к функциональным характеристикам 3. Требования к техническим и программным средствам . 25 1.3.1.
Обоснования выбора языка программирования . 26 СПЕЦИАЛЬНЫЙ РАЗДЕЛ 1. Постановка задачи 2. Описание структуры программы . 3. Описание алгоритма решения задачи . .4. Отладка и тестирование 5. Инструкция к пользователю . 6. Заключение о результатах проектируемой задачи .
36 ПРИЛОЖЕНИЕ 1 Системы счисления 37 ПРИЛОЖЕНИЕ 2 Структурная схема микропроцессора 44 ПРИЛОЖЕНИЕ 3 Основные положения алгебры логики . 59 СПИСОК ЛИТЕРАТУРЫ 30 ВВЕДЕНИЕ В связи с появлением персональных компьютеров мгновенно вырос рынок аппаратных средств, как грибы росло число производителей, предлагающих свою продукцию. При этом, покупая то или иное аппаратное средство, производитель не может а иногда и не хочет дать 100
гарантию, что оно исправно. В связи с этим также стремительно развивался и рынок программных тестирующих средств. На рынке существует огромное количество отличных диагностических программ, написанных большими корпорациями такими как Symantec inc APS Advanced Personal Systems , Microsoft и т.д но все существующие диагностирующие программы написаны на языках высокого уровня, а значит не достаточно быстры и надёжны. Автор проекта не берётся конкурировать с огромными гигантами по количеству выполняемых этими программами тестов в силу того, что это бессмысленно. Была предпринята попытка написать более надежную, быструю диагностическую программу с использованием машинно-ориентированного языка программирования – Ассемблер. АССЕМБЛЕР. ЭТАПЫ РАЗРАБОТКИ ПРОГРАММЫ. Язык программирования наиболее полно учитывающий особенности родного микропроцессора и содержащий мнемонические обозначения машинных команд называется
Ассемблером. Программа, написанная на Ассемблере называется исходной программой. Далее остановимся на версии, называемой Турбо Ассемблер. Разработка программы на Ассемблере состоит из следующих этапов 1 Составление алгоритма в виде блок-схемы или структурного описания, 2 Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора текстов.
Имя PROG может быть произвольным, а расширение ASM – обязательно, 3 Перевод трансляция или ассемблирование исходной программы в машинные коды с помощью транслятора TASM.EXE. На этом этапе получается промежуточный продукт PROG.OBJ объектный код . Выявленные при этом синтаксические и орфографические ошибки исправляются повтором пп.2 и 3, 4 Преобразование с помощью программы TLINK.
EXE объектного кода PROG.OBJ в выполнимый код PROG.EXE или PROG.COM. 5 Выполнение программы и ее отладка начиная с п.1, если встретились логические ошибки. Текст программы на Ассемблере содержит следующие операции а команды или инструкции, б директивы или псевдооператоры, в операторы, г предопределенные имена. Действия обусловленные операциями перечисленными в пп.б,в,г выполняются на этапе трансляции, т.е. являются
командами Ассемблеру. Операции, называемые командами или инструкциями выполняются во время выполнения программы, т.е. являются командами микропроцессору. ФОРМАТ КОМАНД И ИХ КЛАССИФИКАЦИЯ Инструкция записывается на отдельной строке и включает до четырех полей, необязательные из которых выделены метка мнемоника команды операнд ы комментарий Метка или символический адрес содержит до 31 символа из букв цифр и знаков Причем цифра не должна стоять первой, а точка, если есть должна быть первой. Мнемоника – сокращенное обозначение кода операции КОП команды, например мнемоника ADD обозначает сложение addition . Операндами могут быть явно или неявно задаваемые двоичные наборы, над которыми производятся операции.Операнды приводятся в одной из четырех систем счисления и должны оканчиваться символом b
B , o O , d D , h H для 2, 8, 10 или 16-ной СС. К шестнадцатиричному числу добавляется слева ноль, если оно начинается с буквы. Система команд может быть классифицирована по трем основным признакам – длина команды или число занимаемых ею байтов, функциональное назначение и способ адресации. Для МП 1810ВМ86 8086 команда занимает от одного до шести байтов. Первым байтом команды всегда является код операции, например код команды
INT XXh равен CD HEX . По функциональному признаку инструкции можно разбить на пять больших групп 1 команды пересылки данных, 2 арифметические команды, 3 логические команды, 4 команды переходов и 5 команды управления. Существует пять основных способов адресации регистровая, непосредственная, прямая, косвенная и стековая. Большинство остальных способов адресации являются комбинациями или видоизменениями перечисленнных.
В первом случае операнд ы располагаются в регистрах микропроцессора МП , например по команде MOV AX,CX пересылается содержимое CX в AX. При непосредственной адресации операнд располагается в памяти непосредственно за КОП, инструкция MOV AL,0f5h записывает число 245 f5 в регистр AL. В случае прямой адресации за КОП следует не сам операнд, а адрес ячейки памяти или внешнего устройства,
например команда IN AL,40h вводит байт данных из внешнего устройства с адресом 40h. Косвенная адресация отличается от регистровой тем, что в регистре хранится адрес операнда, т.е. по команде MOV AL, BX в аккумулятор al будет записано число из ячейки памяти с адресом, хранящимся в регистре BX. Стековая адресация производится к операндам расположенным в области памяти, называемой стек. НЕКОТОРЫЕ ОПЕРАТОРЫ, ПРЕДОПРЕДЕЛЁННЫЕ ИМЕНА, ДИРЕКТИВЫ И КОМАНДЫ АССЕМБЛЕРА 80X86 8088 ПРЕДОПРЕДЕЛЕННЫЕ ИМЕНА 1 программный счетчик. Этот символ отмечает текущий адрес в текущем сегменте. Полезен при определении длины цепочек байтов или строк. text DB This string has NN letters NN – text NN длине строки text количеству байтов в этой строке . Не путать часть строки NN и константу NN! 2. data – адрес начала сегмента данных. mov ax, data mov
ds,ax в сегментном регистре DS теперь адрес сегмента данных. 3. date, time, filename – эти имена во время трансляции заменяются, соответственно на текущие дату, время и имя файла в формате ASCII. ОПЕРАТОРЫ 1 скобки, определяют порядок вычислений 2 например BX означает содержимое ячейки памяти с адресом в регистре bx. Признак косвенной адресации. 3 операторы сложения, вычитания, умножения и деления. mov ax,
2 3 8 2 – 2 в регистр ax будет помещено число 8. 4. MOD – деление по модулю. Даёт остаток. 5. SHL,SHR – сдвиг операнда влево, вправо. mov si, 01010101b SHR 3 в регистр SI будет загружено число 0Ah 00001010 . 6. NOT – побитовая инверсия. 7. AND,OR,XOR – операции И , ИЛИ , ИСКЛ.ИЛИ . mov dl, 10d OR 5d XOR 7d dl будет равно 8. 8 переназначение сегмента. mov dl, es
bx поместить в dl байт данных из сегмента es и отстоящий от его начала на bx байтов смещение . 9. OFFSET – оператор получения смещения адреса относительно начала сегмента то есть количества байтов от начала сегмента до идентификатора адреса . mov bx, OFFSET table ДИРЕКТИВЫ ПСЕВДООПЕРАТОРЫ 1 определяет близкую метку в пределах сегмента . jmp lbl lbl 2 присваивает символическому имени значение выражения. videoram 0B800h присвоение videoram 0B000h 3. .
CODE – определяет начало кодового сегмента, то есть сегмента, где располагаются коды программы. 4. .DATA – определяет начало сегмента данных. 5. DB,DW – директивы резервирующие один или несколько байтов DB, или одно или несколько слов DW. .DATA fibs DB 1,1,2,3,5,8,13 rus DB Турбо Ассемблер buf DB 80 DUP 0 резервируется 80 байтов,каждый обнуляется int DW 65535 в двух байтах располагается число FFFFh. Array DW 100 DUP 0 резервируется 100 слов 6. END – обозначает конец программы. .CODE MyPROG точка входа начало программы . команды программы END MyPROG 7. ENDM – окончание блока или макроопределения 8. ENDP – обозначает конец подпрограммы. 9. EQU – присваивает символическому имени или строке значение
выражения. BlkSize EQU 512 BufBlks EQU 4 BufSize EQU BlkSize BufBlks 10. LABEL – определяет метку соответствующего типа. .DATA m byte LABEL BYTE метка m byte типа BYTE позволяет теперь m word DW 0 иметь доступ отдельно к каждому байту данных .CODE m word типа WORD mov m word ,0204h add m byte ,
0 теперь в m word хранится код add m byte 1 , 0 3234h,ASCII код 0 равен 30h 11. LOCAL – определяет метки внутри макроопределений как локальные и в каждом макрорасширении вместо них ассемблер вставляет уникальные метки XXXX, где XXXX 0000 FFFF h. Почему XXXX ? Да потому что никому не должно прийти в голову начинать символическое имя с , и транслятор смело может генерировать метки не боясь совпадений.
12. MACRO – задает макроопределение. Swap MACRO a,b a,b – параметры макро ячейки памяти mov ax,b данное макрооопределение позволяет делать mov bx,a обмен данными между ячейками памяти, в mov a,ax отличие от команды xchg mov b,bx нельзя mov a,b ENDM Вызов этого макроса производится командой Swap m,n 13. .MODEL – определяет размер памяти под данные и код программы. .MODEL tiny под программу,данные и стек отводится один общий сегмент 64
Kb . 14. PROC – определяет начало подрограммы. Print PROC NEAR здесь команды подпрограммы Print ENDP call Print вызов подпрграммы. 15. .STACK – определяет размер стека. .STACK 200h выделяет 512 байтов для стека. 16. .RADIX base – определяет систему счисления по умолчанию, где base – основание системы счисления 2, 8, 10, 16. .RADIX 8 oct 77 oct равно 63d. 17 начало комментария. КОМАНДЫ ПЕРЕСЫЛКИ 1. MOV DST,SRC переслать SRC в DST . Здесь и далее содержимое регистра, например регистра AL будет обозначаться – AL или al , а пересылка в комментарии будет обозначаться знаком . mov al,ch al ch . mov cx,dx mov bh, mems содержимое ячейки памяти с символическим адресом mems переслать в регистр
BH. Можно mov bh,mems. mov al, bx переслать в аккумулятор содержимое ячейки памяти с адресом находящимся в регистре BX . mov bx,OFFSET src поместить в BX смещение адреса ячейки памяти SRC, в текущем сегменте. mov al,table bx загрузить в аккумулятор элемент таблицы байтов с символическим адресом первого элемента table и отстоящий от этого элемента на bx байтов. Другие варианты mov al, table bx или mov al,table bx.
До выполнения команды mov al, table bx Регистр BX Регистр AL Адрес Код 0010 XX 0800 table 8с 08xx xx 0810 58 После выполнения команды mov al, table bx Регистр BX Регистр AL Адрес Код 0010 58 0800 table 8с 08xx xx 0810 58 2. PUSH RP поместить на вершину стека содержимое пары регистров
RP например push bx . 3. POP RP снять с вершины стека два байта и поместить в пару RP например pop ax . 4. XCHG DST, SRC поменять местами содержимое DST и SRC . Оба операнда не могут быть одновременно содержимым ячеек памяти. 5. XLAT SRC извлечь из таблицы с начальным адресом SRC байт данных имеющий номер от начала таблицы AL , и поместить его в
AL. Адрес SRC должен находиться в регистре BX. Другой вариант XLATB. .DATA src DB 15d,10h,00110101b, A , B ,166d .CODE mov al,2 в результате выполнения этих трех команд mov bx,OFFSET src в регистр AL будет загружен код xlatb 00110101b 35h 53d ASCII 5 6. IN ACCUM, PORT поместить в аккумулятор AL или AX байт или слово из порта с адресом PORT. Если адрес порта FF то адрес порта может указываться непосредственно, если адрес порта FF, то адрес порта указывается косвенно, через содержимое регистра DX специальная функция регистра общего назначения . in al,0a5h ввести в AL байт данных из ВУ с адресом порта A5h mov dx,379h ввести в аккумулятор
AL байт данных из in al,dx внешнего устройства с адресом порта 379h 7. OUT PORT, ACCUM переслать из аккумулятора AL или AX байт или слово в ВУ с символическим адресом PORT. out 0ffh,al mov dx,37Ah переслать слово данных из AX в ВУ с адре- out dx,ax сом порта 37Ah 8. LEA RP,M загрузить в регистр RP эффективный адрес смещение ячейки памяти с символическим адресом
M. lea di, rus аналог этой команды – mov di, OFFSET rus. АРИФМЕТИЧЕСКИЕ КОМАНДЫ 1. ADD DST, SRC сложить содержимое SRC и DST и результат переслать в DST. add al, mem byte mem byte однобайтовая ячейка памяти add mem word , dx mem word двухбайтовая ячейка памяти add ch,10001010b 2. INC DST увеличить DST на 1 инкремент DST . inc si SI
SI 1. inc count count count 1. 3. SUB DST, SRC вычесть SRC из DST и результат поместить в DST. 4. DEC DST декремент DST . 5. CMP DST, SRC сравнить содержимое DST и SRC. Эта команда выполняет вычитание SRC из DST но разность не помещает в DST и по результату операции воздействует на флаги. условие флаги
OF SF ZF CF DST SRC 0 1 0 0 0 DST SRC 0 0 1 0 DST SRC 0 1 1 0 1 0 1 – означает, что флаг может быть равен 0 или 1 в зависимости от значений операндов. Флаги OF и SF имеют смысл при операциях со знаковыми числами, CF для беззнаковых чисел. Флаг переполнения OF устанавливается в 1, если в результате операции сложения или вычитания значения переноса в старшиий двоичный разряд и из старшего двоичного разряда не совпадают. По другому определению OF принимает значение 1, если результат превышает диапазон представления соответствующих чисел. Пусть DST SRC и оба являются однобайтовыми числами, тогда DST 1. 127 2. 127 SRC – 2 – -2 125 OF 0 129 ? OF 1 Во втором примере результат превышает диапазон -128 x 127. Флаг знака SF устанавливается в 1 , если старший бит результата операции равен 1, т.е. при отрицательном
результате. В противном случае сбрасывается. Флаг нуля ZF устанавливается в 1 при нулевом результате иначе сбрасывается. Флаг переноса CF 1, если есть перенос из старшего разряда при сложении или есть заем в младший разряд при вычитании. Иначе флаг сбрасывается. Для первого примера SF ZF CF 0, для второго SF 1, ZF CF 0. ЛОГИЧЕСКИЕ КОМАНДЫ
И КОМАНДЫ СДВИГА 1. AND DST, SRC поразрядное логическое И . mov dh, 10101100b and dh, 0f0h в результате выполнения этих двух команд содержимое DH станет равно 1010b. 2. OR DST, SRC поразрядное логическое ИЛИ . or bx,dx если BX 5F0Fh,а DX 7777h,то после операции BX 7F7Fh. BX 0101 1111 0000 1111 5F0F DX 0111 0111 0111 0111 7777
BX результат 0111 1111 0111 1111 7F7F 3. XOR DST, SRC поразрядное логическое исключающее ИЛИ . xor al,55h если AL 5ah, то после операции AL 0fh. 4. NOT DST инверсия всех битов приемника. 5. TEST DST, SRC выполняет операцию AND над операндами, но воздействует только на флаги и не изменяет самих операндов. 6. SHR DST, CNT логический сдвиг вправо, освобождающиеся слева биты заполняются нулем, крайний
правый бит выталкивается во флаг CF. Операнд DST может быть ячейкой памяти. mov bl,10110010b CF x shr bl,1 BL 01011001, CF 0 до сдвига 1 0 1 1 0 0 1 0 CF X после сдвига 0 0 1 0 1 1 0 0 1 CF 0 mov cl,4 shr bl,cl BL 0101, CF 1. 7. SHL DST, CNT логический сдвиг влево. 8. RLC DST, CNT циклический сдвиг влево через перенос 9. RRC DST, CNT циклический сдвиг вправо через перенос 10. ROR DST, CNT циклический сдвиг влево 11. ROL DST, CNT циклический сдвиг вправо КОМАНДЫ ПЕРЕДАЧИ УПРАВЛЕНИЯ 1. CALL SUBR вызов подпрограммы с адресом SUBR call delay mov 2. RET возврат из подпрограммы к оператору следующему непосредственно за CALL, то есть в приведенном выше примере к MOV 3. JMP
NAME безусловный переход к команде с символическим адресом NAME. jmp short name переход к метке name, отстоящей не более чем на -128 или 127 байтов. jmp near name переход к метке name, отстоящей не более чем на 65535 байтов, в одном сегменте. jmp name аналогично jmp near name 4. JA NAME или JNBE NAME условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине больше источника, то перейти к метке name.
5. JB NAME или JNAE NAME условный переход, если, например, в результате сравнения CMP DST, SRC приемник по абсолютной величине меньше источника, то перейти к метке name команды п4 и п5 выполняются по результатам выполнения операций над беззнаковыми числами . 6. JZ NAME или JE NAME перейти, если результат операции влияющей на флаг нуля – нулевой переход по нулю . 7. JNZ NAME или JNE NAME переход по не нулю . команды п6 и п7 выполняются по результатам выполнения
операций над числами cо знаком . КОМАНДЫ УПРАВЛЕНИЯ ЦИКЛАМИ 1. LOOP NAME эта команда неявно уменьшает CX на 1 и осуществляет переход к ближней метке, если CX не равно 0. mov cx,64h блок операторов от метки syc до loop syc syc будет выполнен 100 раз. loop syc 2. LOOPZ NAME или LOOPE NAME кроме того осуществляет проверку ZF флага. Поэтому цикл заканчивается по условию, когда
CX 0 или ZF 0 или и то и другое вместе. Т.о. эта команда служит для обнаружения первого ненулевого результата. 3. LOOPNZ, LOOPNE – выход из цикла по нулю . mov cx,1000d цикл может быть завершен раньше 1000 next прохода,если содержимое аккумулятора станет равным 129,т.е. равным ASCII коду cmp al, Б буквы Б. loopnz next 9.3.9 КОМАНДЫ ОБРАБОТКИ СТРОК ЦЕПОЧЕК БАЙТОВ 1. LODSB команда lodsb загружает байт адресованный регистром SI из сегмента данных, и увеличивает SI на 1, если перед этим была введена команда CLD очистить флаг направления DF и уменьшает SI на 1, если была использована команда STD установить флаг направления . .DATA string DB abcdefg .CODE cld после выполнения этих команд в AL будет mov si,OFFSET string 2 загружен ASCII код с lodsb причем содержимое
SI будет указывать на d . 2. MOVSB эта команда перемещает один байт из ячейки памяти с адресом в регистре SI в ячейку памяти с адресом в регистре DI и увеличивает SI и DI на 1. Значение SI может находиться, как в сегменте данных DS, так и в дополнительном сегменте ES. Значение DI может находиться только в дополнительном сегменте ES. .DATA msg DB Всё O.K. LEN – msg LEN равно 8 .CODE cld lea si,msg в
SI адрес источника mov ax,0b800h начало сегмента видеопамяти mov es,ax поместить в дополнительный сегмент lea di,es 0a0h 3 4-я строка сверху mov cx,LEN LEN – количество выводимых символов rp movsb переслать символ в текущую позицию экрана inc di перешагнуть через позицию атрибута loop rp повторить до исчерпания CX строка Всё O.K. будет выведена в 4-ю строку дисплея сверху. 3. REP префикс повторения команды. Например окончание предыдущей программы может быть записано в виде
mov cx,LEN несмотря на то,что массив Всё O.K. будет rep movsb скопирован в область памяти B800 A0 3 , на экран дисплея будет выведено ВёOK. Почему? 4. CMPSB осуществляет сравнение байта строки источника c адресом SI и байта строки приемника с адресом DI то есть производит вычитание SI – DI . Не путать с командой CMP DST, SRC в которой наоборот, производится вычитание источника из
приемника. Команда CMPSB неявно уменьшает CX на 1 и увеличивает SI и DI на 1, если DF 0. 5. REPZ или REPE префикс повторения. Выполнение команды завершается, когда CX 0 или ZF 0. .DATA src DB To be, or not to be dst DB To be ,or not to be len – dst len равно 19 .CODE cld DF 0 push ds совместить адреса pop es сегментов ds и es mov cx,len длину строки dst переслать в cx lea di,dst загрузить адрес смещение строки dst в DI lea si,src repe cmpsb сравнивать побайтно je equal если все байты совпали, то перейти к метке not cx если нет – вычислить номер несовпадающих байт add cx,len jmp notequal equal notequal В конце этого примера номер первого несовпадающего байта CX 5. КОМАНДЫ УПРАВЛЕНИЯ МИКРОПРОЦЕССОРОМ 1. CLC сбросить флаг переноса
CF 0. 2. STC установить флаг переноса CF 1. 3. CMC инвертировать флаг пнреноса. 4. CLD очистить флаг направления DF 0, в этом случае операции над строками цепочками байтов будут производиться от младшего адреса к старшему. 5. STD установить флаг направления DF 1,обработка цепочек байтов производится от старшего адреса к младшему. 6. STI установить флаг прерываний IF 1, разрешить прерывания от внешних устройств.
7.CLI очистить флаг прерываний. 8. NOP холостая операция. КОМАНДЫ ПРЕРЫВАНИЙ 1. INT INUM эта команда вызывает программное прерывание, то есть переход к ячейке памяти с адресом хранящимся в четырех байтах, начиная с адреса INUM 4, где INUM 0 255 . Это 4-х байтовое число является указателем подпрограммы обработчика данного прерывания, и иначе называется вектором прерывания.
Таким образом первый килобайт памяти 256 4 отводится под векторы прерываний. Операции инициируемые программными прываниями определяются кодом в регистре AH, например mov ah,14d функция вывода символа на дисплей,с последующимм mov al,31h продвижением курсора на одну позицию вправо. int 10h на экран будет выведена цифра 1 ASCII код 31h . .DATA privet DB Добрый morning .CODE lea dx,privet специальная функция регистра
DX mov ah,9 9 – функция вывода на экран дисплея int 21h будет выведено приветствие ВЛИЯНИЕ КОМАНД НА ФЛАГИ В таблицу включены только те инструкции, которые влияют на флаги обозначает, что команда влияет на флаг не влияет, 1 – флаг устанавливается в 1, 0 – флаг устанавливается в 0 сбрасывается инверсия флага не определенное значение флага, 1 – одиночный сдвиг, n – многоразрядный сдвиг. ПРИМЕЧАНИЯ 1. R1,R2 – одно- или двухбайтные регистры. 2. RP – двухбайтные регистры. 3. SRC,DST -источник,приемник регистр или ячейка па- мяти 4. M,M1,M2 -ячейки памяти с символическими адресами M, M1 и M2. 5. CNT – счетчик,регистр CL или CX. 6. SUBR,NAME – символический адрес метка начала подпрограммы или блока операторов . 7. Во всех командах условных переходов метка NAME должна отстоять от команды перехода не более,чем
на -128 или 127 байтов. 8. INUM – номер прерывания. ОБЩИЙ РАЗДЕЛ 1.1. Технико-математическое описание задачи Программа делится на две части Первая часть программы – Сбор сведений – это часть программы, собирающая справки об оборудовании, установленном на ПК, на котором программа выполняется. Справки наводятся о следующих устройствах – математическом сопроцессоре
– СОМ портах – LPT портах – дисководах – CD-ROM приводах – расширенном управлении электропитанием – манипуляторе мышь . Математический сопроцессор – это микрочип, устанавливаемый на материнскую плату, который работает совместно с основным процессором, осуществляет обработку чисел с плавающей точкой, тем самым разгружая основной процессор. Может устанавливаться опционально по желанию пользователя либо самим пользователем, т.е. может либо присутствовать, либо отсутствовать.
СОМ порты – это порты с последовательным типом передачи данных, предназначенные для подключения коммуникационных, манипуляторных и других устройств, где требуется сравнительно не- большая скорость передачи данных. Количество установленных последовательных портов может варьироваться от одного до четырёх. На некоторых материнских платах существует ограничение на подключение последовательных портов, например если это значение будет два, и если вы подключите четыре порта, то работать будут все равно два. LPT порты – это порты с параллельным типом передачи данных, предназначенные для подключения принтеров и других устройств, где требуется относительно большая скорость передачи данных, а также могут использоваться для соединения двух компьютеров между собой для обмена данными. Количество установленных LPT портов может варьироваться от одного до четырёх. Дисковод – устройство, предназначенное для чтения записи накопителей на магнитном диске гибкий диск
. Существует четыре типа дисководов – 360 Кб 720 Кб 1.2 Мб 1.44 Мб. Они различаются по формату обслуживаемых дискет и максимально возможному объему данных, записываемых на дискету соотвестсвующего типа. CD-ROM привод – устройство, предназначенное только для чтения накопителей на лазерных дисках. Различаются по скорости доступа к данным и скоростью вращения лазерного диска. Обычно устанавливают не более одного привода.
РУЭ расширенное управление электропитанием – стандарт, служащий для экономии электроэнергии. Представляет собой следующий набор функций – автоматическое отключение электропитания – спящий режим – автоматическое отключение питания монитора – автоматическое отключение питания жестких дисков. Может находиться в двух состояниях включено или выключено. Вторая часть программы – диагностика памяти – проверяет на работоспособность память
ПК, на котором выполняется программа. 1.2. Требования к функциональным характеристикам При запуске программы на экран должна выводиться аннотация, затем, после нажатия на любую клавишу, должен очищаться экран и появляться меню из трех пунктов 1 – сбор сведений о системе 2 – тест памяти 3 – выход. Для выбора интересующего пункта необходимо нажать на клавиатуре цифры, соответствующие номерам пунктов. В случае выбора пункта Сбор сведений о системе выполняется последовательный вывод информации о ПК в виде списка устройств с текущим состоянием. Ниже приведена таблица со списком устройств и их возможными состояниями. Таблица 1 Таблица возможных состояний устройств Устройство Возможные состояния Математический сопроцессор Присутствует, отсутствует Максимальное количество подключаемых Сом портов От 0 до 4 Количество CОМ-портов От 0 до 4
Количество LPT-портов От 0 до 4 Первый дисковод Отсутствует, 360Kb, 720Kb, 1.2Mb, 1.44Mb. Второй дисковод Отсутствует, 360Kb, 720Kb, 1.2Mb, 1.44Mb. Количество установленных CD-ROM приводов От 0 до 4 Расширенное управление электропитанием APM Отсутствует, присутствует, включено выключено Манипулятор мышь
Отсутствует, присутствует После вывода списка устройств, в программе необходимо реализовать задержку, затем возврат в меню. В случае выбора пункта тест памяти программа должна выполнять тестирование не менее 640Кб. памяти. В случае если память исправна, на экран выводиться сообщение тест пройден , в противном случае тест не пройден . Также необходимо реализовать задержку и возврат в меню. В случае выбора пункта выход , необходимо реализовать завершение работы программы и передачу управления
операционной системе DOS. 1.3. Требования техническим и программным средствам Программа выполнена на языке ассемблера 8086 процессора, соответственно ей необходим IBM PC – совместимый компьютер с процессором не ниже 8086, также программа может выполняться на компьютерах с процессорами старшего поколения например 80286 или 80386 , т.к. особенностью архитектуры 80х86 является преемственность на уровне машинных команд программы, написанные для младших моделей процессоров, без
всяких изменений могут быть выполнены на более старших моделях. Компилированный код программы занимает всего 2 Кб – это связано с отсутствием избыточного кода, которого очень много при использовании языков высокого уровня. В связи с этим программа может легко поместиться на дискету 360 Кб. Программа работает в текстовом режиме и не использует цветовой гаммы, поэтому ей достаточно монитора CGA. Кроме того она может без всяких изменений работать на мониторах старшего поколения таких, как EGA, VGA и SVGA. Так как программа тестирует 640 Кб оперативной памяти, этот объем является минимумом. 1.3.1. Обоснования выбора языка программирования Для написания данной программы был выбран язык ассемблера. В связи с тем, что он наиболее подходит для реализации такого рода задач, т.е. где требуется доступ к портам, выполнение специальных прерываний, доступ к области памяти
BIOS и т.д. Язык ассемблера, представляет собой фактически символьную форму записи машинного языка в нем вместо цифровых кодов операций вписывают привычные знаки операций или их словесные названия, вместо адресов – имена, а константы записывают в десятичное системе счисления. Программу, записанную в таком виде, вводят в ЭВМ и подают на вход специальному транслятору, называемому ассемблером, который переводит её на машинный язык, и далее полученную машинную программу выполняют.
Для любой ЭВМ можно придумать разные языки ассемблера, хотя бы потому, что можно по-разному обозначать машинные операции. В частности, и для ПК разработано несколько таких языков ASM-86, MASM, TASM . Для реализации данной задачи был выбран язык, который создан фирмой Borland и полное название которого – турбо ассемблер, сокращенно TASM. Надо отметить, что этот язык наиболее часто используется на
ПК. СПЕЦИАЛЬНЫЙ РАЗДЕЛ 2.1. Постановка задачи Разработать программу тестирования оперативной памяти и сбора сведений о ПК. Реализовать меню, в котором пользователю предлагается выбор из трёх пунктов 1 – сбор сведений о системе 2 – тест памяти 3 – выход. Сбор сведений должен осуществляться в виде списка устройств с текущим состоянием. Состояние от названия устройства должно отделяться двоеточием. Список устройств и возможных их состояний см. в таблице 1. Пункт тест памяти должен осуществлять проверку ячеек памяти на работоспособность. Существует два типа неисправностей ячеек памяти – постоянные нули – постоянные единицы . Вид неисправности постоянные нули заключается в следующем предположим, что бит 4 в байте, изображенном на рис. 1 – неисправный. В данный момент в байт записано число ноль восемь нулей в двоичной системе
cсчисления , если считать содержимое этого байта, то на выходе получиться ноль – вроде бы он исправен. 7 6 5 4 3 2 1 0 0 0 0 0 0 0 0 0 рис. 1 Но это лишь только видимость, если в этот байт записать число FFh восемь единиц в шестнадцатеричной системе счисления , что в двоичной системе счисления эквивалентно восьми единицам, то получится картина, представленная на рис. 2. В этом случае, если считать содержимое этого байта, на выходе получиться
EFh, то есть, записывая в бит 4 единицу, мы при считывании все равно получаем ноль. Следовательно бит 4, а значит и байт, неисправен. 7 6 5 4 3 2 1 0 1 1 1 0 1 1 1 1 рис. 2 Вид неисправности постоянные единицы схож с видом постоянные нули . Разница состоит лишь в том, что в виде постоянные нули неисправные биты находятся всегда в нулевом состоянии, а в виде постоянные единицы в единичном.
В связи с этим необходимо реализовать проверку ячеек памяти на два вида неисправностей постоянные нули и постоянные единицы . 2.2. Описание структуры программы Программа была реализована с помощью нескольких пользовательских процедур и макросов см. таблицу 2 . Довольно часто в программах, особенно больших, приходится несколько раз решать одну и ту же подзадачу и поэтому приходится выписывать одинаковую группу команд, решающих эту подзадачу. Чтобы избежать повторного выписывания такой группы команд, ее обычно выписывают один раз и оформляют соответствующим образом, а затем в нужных местах программы просто передают управление на эти команды, которые, проработав, возвращают управление обратно. Такая группа команд, которая решает некоторую подзадачу и которая организована таким образом, называется процедурой. Нередко бывает полезным предварительное до начала трансляции преобразование текста программы.
Например, может потребоваться, чтобы какой-то фрагмент программы был продублирован несколько раз или чтобы в зависимости от некоторых условий в тексте программы были сохранены одни фрагменты и удалены другие. Подобную возможность предоставляют так называемые макросредства. Расширение языка ассемблера за счет этих средств обычно называют макроязыком. Программа, написанная на макроязыке, транслируется в два этапа.
Сначала она переводится на, так сказать, чистый язык ассемблера, т.е. преобразуется к виду, где нет никаких макросредств. Этот этап называется макрогенерация, его осуществляет специальный транслятор – макрогенератор. На втором этапе полученная программа переводится на машинный язык. Это этап ассемблирования, его осуществляет ассемблер. Таблица 2 Таблица процедур и макросов Название Тип
Назначение Movcur Макрос Перемещает курсор Clrscr Макрос Очищает экран Print Макрос Выводит на экран строку Press Макрос Реализует задержку ShowQuestion Процедура Выводит на экран меню SborSved Процедура Осуществляет сбор сведений TestMem Процедура Осуществляет тест памяти При выполнении программы на экран выводится аннотация, пользователь,
ознакомившись с программой, нажимает на любую клавишу, и на экран выводится меню с помощью процедуры ShowQuestion , в котором пользователь может выбрать интересующий его пункт меню – сбор сведений о ПК – тест памяти – выход. Если выбран первый пункт, выполняется процедура ShowSved. Внутри данной процедуры реализована очистка экрана, с помощью макроса ClrScr, а также диагностика оборудования и задержка, реализованные с помощью макроса press. После выполнения данной процедуры программа переходит в начало, т.е. в меню. В случае выбора второго пункта, выполняется процедура TestMem, тестирующая оперативную память ПК. Также внутри данной процедуры реализованы очистка экрана и задержка перед выходом в меню. Если выбран третий пункт, программа, не очищая экран, передает управление операционной системе DOS . 2.3. Описание алгоритма решения задачи
Если в оперативной памяти ПК имеется 2 в 20 степени ячеек, то для ссылок на эти ячейки нужны 20-разрядные адреса их принято называть физическими адресами. Ясно, что при большом объеме памяти большим будет и размер физических адресов, а это ведет к увеличению длины команд и к увеличению размера программ в целом. Это плохо. Чтобы сократить размеры команд, поступают следующим образом. Память условно делят на участки, которые принято называть сегментами.
Начальные адреса сегментов могут быть любыми, но на длину сегментов накладывается ограничение размер любого сегмента не должен превышать 64Кб. В этих условиях физический адрес А любой ячейки памяти можно представить в виде суммы A B ofs, где В – адрес сегмента, а ofs – смещение относительно адреса В. Таким образом ,если в команде надо указать физический адрес
А, то адрес сегмента B – прячем в так называемый сегментный регистр, а в команде указываем лишь этот регистр и слагаемое ofs. Это даёт экономию размера команд. В связи с этим максимальный объем сегмента равен 64Кб, а минимальный равен 16 байтам. Процедура теста памяти реализована с помощью вложенного цикла. Первый цикл увеличивает на единицу модификационный регистр
BP до тех пор, пока BP меньше 0A000h это последний сегмент 640 Кб . Внутри этого цикла реализован еще один цикл – он увеличивает на единицу модификационный регистр SI до тех пор, пока он меньше 16. Внутри вложенного цикла осуществляется непосредственно проверка памяти на неисправные биты сначала происходит проверка на постоянные единицы – в сегмент по адресу BP со смещением SI записывается ноль что в двоичной системе счисления означает восемь нулей , затем осуществляется проверка этого значения, т.е. нуля. Если это значение равно нулю, значит память исправна, в противном случае – не исправна. Затем происходит проверка на постоянные нули по тому же адресу записывается число FFh что в двоичной системе счисления означает восемь единиц , затем осуществляется проверка этого значения. Если значение равно FFh, значит память исправна, в противном случае – неисправна.
2.4. Отладка и тестирование Тестирование производилось с помощью отладчика Turbo Debugger корпорации Borland. Была выполнена трассировка всей программы. Трассировка – это процесс пошагового выполнения команд с листингом состояний всех регистров, флагов, сегмента данных на момент выполнения каждой команды. В ходе трассировки были обнаружены следующие ошибки неправильное определение состояния математического
сопроцессора – неправильно указанная маска очистки, так называемого слова equpment list , получаемого с помощью прерывания 11h зависание при вызове процедуры TestMem – ошибка в реализации алгоритма теста памяти – неправильно указанная метка перехода во вложенном цикле. Кроме того, было обнаружено множество ошибок в синтаксисе команд. Так как программа писалась на одном компьютере, проверить её на правильность определения конфигурации
ПК не представлялось возможным, поэтому, после завершения программы, она выполнялась на разных ПК с разными конфигурациями в ходе этого теста ошибок обнаружено не было – все аппаратные средства определялись правильно. Также невозможно было проверить программу на правильность теста памяти на практике, потому что она выполнялась на всех ПК с исправной памятью, а попытки найти ПК с заведомо неисправной оперативной памятью не увенчались успехом. Тем не менее теоретически тест должен работать правильно. 2.5. Инструкция к пользователю Для запуска программы выполните файл с именем kurs.com . Вашему вниманию представиться аннотация – внимательно прочитайте её, а затем нажмите любую клавишу на клавиатуре например, enter . Затем на экране высветится меню, изображенное на рис. 3. 1 – Сведения о системе 2 – Тест памяти 3 – Выход
Ваш выбор ? рис. 3 Для того, чтобы получить краткие сведения о вашем ПК – нажмите клавишу 1 , затем Enter на вашей клавиатуре, и на экран высветится список устройств с текущем состоянием. Для возврата в меню нажмите любую клавишу. Для того, чтобы протестировать оперативную память вашего ПК – нажмите клавишу, 2 затем Enter на вашей клавиатуре, и на экране высветится сообщение о состоянии
памяти вашего ПК. Для возврата в меню нажмите любую клавишу. Для того, чтобы выйти из программы – нажмите клавишу 3 , затем Enter на вашей клавиатуре. 2.6. Заключение о результатах проектируемой задачи В ходе выполнения поставленной в курсовом проекте задачи были приобретены навыки реализации сложных ассемблерных программ с использованием макросов и процедур.
Кроме того, был получен огромный опыт и умение работы с CMOS область памяти, где хранятся сведения о конфигурации ПК на низком уровне, т.е. с использованием прерывания BIOS 11h и 70h порта, а также опыт использования дополнительных сегментных регистров и регистров модификаторов. Реализованная программа может быть полезна при диагностике оборудования на относительно старых моделях
ПК, поскольку в программе используется система команд 8086 процессора, который был выпущен в 1979 г. корпорацией Intel, и сейчас эта модель процессора является устаревшей. Приложение 1 7.1 СИСТЕМЫ СЧИСЛЕНИЯ Любое неотрицательное число в позиционной системе счисления СС может быть представлено в виде D Cn-1 bn-1 Cn-2 bn-2 C1 b1 C0 b0 C-1 b-1 C-2 b-2 , где D – десятичный эквивалент числа, Ci – значение i-го разряда, b – основание системы счисления,b в степени i – вес i-го разряда и n число разрядов целой части числа. В вычислительной технике ниболее распространены двоичная BIN , десятичная DEC , шестнадцатиричная HEX и непозиционная двоично-десятичная BCD системы счисления. В BCD системе вес каждого разряда равен степени 10, как в десятичной системе, а каждая цифра i-го разряда кодируется 4-мя двоичными цифрами.
Восьмиричная СС OCT применяется реже. Первые 16 чисел представлены в таблице 1. Двоичное число 10010011 1 2 7 1 2 4 1 2 1 1 2 0 147 DEC . Для перевода числа из двоичной системы в 16 – ную, его необходимо разбить начиная справа на группы по 4 двоичных цифры и каждую группу представить 16 – ной цифрой из таблицы. Для обратного перевода каждая HEX цифра заменяется четверкой двоичных, незначащие нули слева отб- расываются.
Двоично-десятичное число можно записывать и десятичными цифрами, например 1997, и двоичными – 0001 1001 1001 0111. Каждое десятичное число можно представить в виде BCD, например 19 DEC 19 BCD , но их двоичные представления не равны 19 DEC 10011 BIN , а 19 BCD 1 1001 BIN . Не каждая запись из нулей и единиц имеет двоично-десятичный эквивалент. Например, 11001001 BIN ? BCD C9 HEX 201 DEC , т.к. десятичной цифры 12 1100 несуществует!
7.2 МАШИННОЕ ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИМикропроцессоры обрабатывают упорядоченные двоичные наборы. Минимальной единицей информации является один бит. Далее следуют – тетрада 4 бита , байт byte 8 бит , двойное слово DoubleWord 16 бит или длинное LongWord 16 бит и учетверенное слова. Младший бит обычно занимает крайнюю правую позицию.
7.3 ЧИСЛА С ФИКСИРОВАННОЙ ТОЧКОЙ Такие числа могут быть как целыми, так и дробными. Точка мысленно фиксируется рядом с любым разрядом. Если она располагается справа от младшего бита, то число целое, если слева от старшего – число дробное. Далее будут рассматриваться только целые числа с фиксированной точкой, для нецелых чисел чаще применяется показательная форма, о которой пойдет речь дальше. Естественным представлением целого неотрицательного числа является двоичная система счисления. Кодирование отрицательных чисел производится тремя наиболее употребительными способами, в каждом из которых крайний левый бит – знаковый. Отрицательному числу соответствует единичный бит, а положительному – нулевой. Каждый способ оценивается по скорости и затратам на выполнение сложения и изменения знака числа, т.к. вычитание есть сложение с измененным знаком одного операнда.
1.Прямой код. Изменение знака производится просто, путем инверсии бита знака. Пусть 00001001 9, тогда 10001001 -9. Если при сложении двух чисел в этом коде знаки совпадают, то трудностей нет. Если знаки различаются необходимо найти наибольшее число, вычесть из него меньшее, а результату присвоить знак наибольшего слагаемого. 2.Обратный код, инверсный или дополнительный до 1 . Изменение знака производится просто – инверсией всех бит 00001001 9, а 11110110 -9.
Сложение также выполняется просто, т.к. знаковые биты можно складывать. При переносе единицы из левого старшего бита, она должна складываться с правым младшим . Например 7 -5 2. 0111 7 1010 -5 инверсия 0101 5 1 01 1 010 2 Сложение в обратном коде происходит быстрее, т.к. не требуется принятие решения, как в предыдущем случае. Однако суммирование бита переноса требует дополнительных действий.
Другим недостатком этого кода является представление нуля двумя способами, т.к. инверсия 0 00 равна 1. 11 и сумма двух разных по знаку, но равных по значению чисел дает 1 11.Например 00001001 9 11110110 -9 1. Кстати, из этого примера понятно почему код называется дополнительным до 1 . Этих недостатков лишен 3.Дополнительный или дополнительный до 2 код. Число с противоположным знаком находится инверсией исходного и добавлением к результату единицы. Например, найти код числа -9. 00001001 9 11110111 -9 11110110 – инверсия 00001000 – инверсия 1 1 11110111 -9 00001001 9 Проблемы двух нулей нет. 0 0, -0 1 1 0 перенос из старшего бита не учитывается .Сложение производится по обычным для неотрицательных чисел правилам. 00001001 9 11110111 -9 1 0 Из этого примера видно, что в каждом разряде двух равных по модулю чисел складываются две единицы, что и определило название способа.
Этот метод применяется наиболее часто, и когда говорят о дополнительном коде, то имеется в виду дополнительный до 2-х код. 7.4 ДИАПАЗОН ЦЕЛЫХ ЧИСЕЛ С ФИКСИРОВАННОЙ ТОЧКОЙ Беззнаковые числа 0 D 2 n – 1. n – число разрядов Байт 0 – 255 DEC Слово 0 – 65535 00 0 – 11 1 BIN 00 0 – 11 1 0 – FF HEX 0 – FFFF Числа со знаком -2 n-1 D 2 n-1 -1. n – число разрядов.
Байт -128 – 127 DEC Слово -32768- 32767 10 0 – 01 1 BIN 10 0 – 01 1 80 – 7F HEX 8000 – 7FFF 7.5 ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ ВЕЩЕСТВЕННЫЕ Вещественные числа хранятся и используются в ЭВМ в показательной форме, т.е. в виде двух составляющих мантиссы и порядка. Различия в способах такого представления чисел заключаются в количестве байтов отводимых под порядок
и мантиссу и небольших отличиях в форме их хранения. Например в четырехбайтовом формате под мантиссу отводится 3 байта и один байт для хранения порядка КВ – короткий вещественный формат . D M 2 E-127 Последовательность расположения байтов в различных ЭВМ может быть разной. D – десятичный эквивалент числа , M – нормализованная мантисса, Е – смещенный порядок,
SM – бит знака мантиссы. 7.6 ДИАПАЗОН ПРЕДСТАВЛЕНИЯ ВЕЩЕСТВЕННЫХ ЧИСЕЛ У нормализованной мантиссы первая значащая цифра единица мысленно находится слева от запятой, а справа располагаются 23 разряда – 1,xx xx. Поэтому Mmax 1,111 11 1 1 2 1 4 1 8 2, а Mmin 1,000 00 1 для положительных чисел SM 0 и -1 и -2 для отрицательных, SM 1 . Порядок числа Emax 10 254, а Emin 01 1. Теперь нетрудно определить диапазон представления положительных чисел от Dmax Mmax 2 254-127 3,4 10 38 до Dmin Mmin 2 1-127 1,17 10 -38 . Точность определяется числом достоверных десятичных цифр. При 23 двоичных разрядах мантиссы 2 23 примерно равно 10 7, т.е. достоверными являются только 6-7 значащих десятичных знаков, а не 38. Необходимо отметить, что значения порядка 1 и 0 по международному стандарту
IEEE 754 и 854 предназначены для кодирования денормализованных чисел, отрицательной и положительной бесконечностей, неопределенности и, так называемых Не-чисел. 7.7 ДВОИЧНО-ДЕСЯТИЧНЫЙ КОД Двоично-десятичный код ДДК или Binary Coded Decimal BCD может быть упакованным, когда в одном байте хранятся две десятичные цифры, либо неупакованным – по одной цифре в байте.
Упакованное число 1996 представляется в виде двух байтов 0001 1001 и 1001 0110. Для знака числа отводится дополнительный байт, например в формате ДД девять байтов отводится для размещения 18-ти цифр, а в старшем бите десятого байта находится знак числа. 7.8 БУКВЕННО-ЦИФРОВОЙ КОД Для вывода информации на устройства отображения, например дисплей или принтер, а также для ввода или передачи данных используются буквенно-цифровые коды.
Буквы, цифры, математические символы, знаки препинания, символы для рисования линий, управляющие символы и некоторые другие кодируются однобайтовыми числами. Существует несколько разновидностей таких кодов, например ASCII, КОИ-7, КОИ-8, альтернативный код ГОСТ, основной код ГОСТ и другие. ASCII и 7-ми битовый код для обмена информацией
КОИ-7 отображают первые 128 символов и входят в состав остальных кодировок. Дополнительные символы и русский алфавит входят в восьмибитовые расширенные коды КОИ-8, альтернативный и основной . Общее число символов в этих кодах равно 256. Таблица некоторых кодов приведена ниже. Следует отметить, что нулевой код NULL не кодирует цифру ноль и вообще никак не отображается. Символ Код HEX Символ Код HEX Символ Код HEX ничего 00 A 41 А 81 0 30 B 42 Б 82 1 31 C 43 В 83 9 39 Z 5A Я 9F 3A 5B а A0 ASCII кодировка альтернативная кодировка В Internet для русского языка используется кодировка КОИ-8. В настоящее время разработан и используется 16-ти битовый Unicode с 65536 различными симвоволами. 7.9 ВОСЬМИСЕГМЕНТНЫЙ
КОД Служит для отображения образа BCD или HEX цифры высвечиваемой на индикаторе в виде набора 0 и 1. Может быть принято следующее соответствие между битами и сегментами Внизу приведен битовый набор для высвечивания цифры 4. Единицы обычно соответствуют светящимся сегментам. 7.10 НЕОДНОЗНАЧНОСТЬ ПРЕДСТАВЛЕНИЯ ДВОИЧНЫХ НАБОРОВ Набор единиц и нулей хранящихся в регистре или ячейке
памяти двоичный набор для микропроцессора ничего не означает. Пусть в регистре находится набор из восьми битов 10000110. Он может быть интерпретирован следующим образом, как 1 двоичное число 10000110, имеющее а шестнадцатиричный эквивалент 86 HEX , б восьмиричный эквивалент 206 OCT , в десятичный эквивалент числа без знака 134 DEC , 2 дополнительный код отрицательного числа -122
DEC , 3 двоично-десятичное упакованное число 86 BCD , 4 альтернативный код буквы Ж , 4 код КОИ-8 символа , 5 восьмисегментный код цифры 1 6 часть вещественного числа, 7 реализация множества,включающего 3 элемента из 8-ми, 8 часть адреса ячейки памяти или внешнего устройства,
9 код операции и т.д. Поэтому ответственность за интерпретацию двоичных наборов возлагается на программиста. Например, попытка сложить ASCII коды 1 2 не даст в сумме код 3 , а даст 31 HEX 32 HEX 63 HEX , что соответствует коду латинской буквы c . Приложение 2 СТРУКТУРНАЯ СХЕМА МИКРОПРОЦЕССОРА Огромное количество микропроцессоров МП не позволяет рассмотреть их особенности, поэтому выбор пал на родоначальника семейства 80×86 МП К1810ВМ86 88 8086 8088 . Такой выбор оправдан, во-первых преобладающим парком ЭВМ с этим МП, во-вторых тем, что все МП этого семейства при включении начинают работу в реальном режиме МП 8086, и в-третьих – программной совместимостью их ассемблеров снизу вверх. На рис 1. приведена структурная схема МП8086 и внешний вид типового микропроцессора. Устройство управления декодирует байты программы и управляет работой операционного устройства и шинного
интерфейса. Операционное устройство МП состоит из 4-х шестнадцатиразрядных регистров общего назначения РОН AX,BX,CX,DX , из 4-х регистров указателей адресных регистров SP,BP,SI, DI и арифметико-логического устройства АЛУ с регистром признаков операций флагов F . РОН служат для хранения промежуточных результатов операций, т.е. операндов. Помимо общих, каждый из этих регистров имеет и некоторые специальные функции, о которых будет сказано
далее. Каждый РОН может раcсматриваться, как состоящий из двух независимых 8-ми разрядных регистров AH, AL, BH, BL, CH, CL и DH, DL. Адресные регистры хранят 16-ти битовые указатели адреса на области памяти. В SP StackPointer находится текущий адрес вершины стека – специально организованной области памяти, которая будет описана далее. Регистр BP Base Pointer хранит любой базовый адрес в области стека.
Два регистра SI и DI Source и Destination Index адресуют области памяти, называемые источником и приемником данных. Шинный интерфейс, на рис.1 его узлы отмечены двойной чертой, выполняет операции обмена между МП и памятью или внешними устройствами. В сегментных регистрах CS,SS,DS,ES хранятся указатели на 64-х килобайтные области памяти называемые сегментами. Значения этих указателей могут перекрываться. Адрес байта в ячейке памяти получается суммированием содержимого одного из сегментных регистров и одного из регистров SP,SI,DI,IP . Например адрес текущего байта программы, извлекаемого из памяти определяется суммой адресов, хранящихся в регистре кодового сегмента CS и указателе команд IP . В регистре IP хранится 16-битовый адрес байта в кодовом сегменте к которому микропроцессор дожен обратиться. Подробнее об этом будет сказано далее.
Связь с внешними устройствами осуществляется через специальные тристабильные схемы с повышенной нагрузочной способностью и называемые буферами. Текущий байт программы направляется в очередь команд шесть однобайтовых регистров расположенных конвейером по принципу первым вошел – первым вышел или FIFO . Конвейер позволяет одновременно выполнять команду из очереди и загружать следующую, повышая производительность МП. Буферные тристабильные элементы увеличивают мощность сигналов до стандартных значений
ТТЛ. 8.2 РЕГИСТР ФЛАГОВ По результатам операций АЛУ устанавливает либо сбрасывает отдельные биты в регистре флагов F. x обозначает, что содержимое этого бита не имеет значения. Некоторые операции влияют только на отдельные флаги, а другие совсем на них не воздействуют, поэтому при описании флагов подразумевается выполнение тех команд операций , которые влияют на эти флаги. В дальнейшем, в тексте, фраза содержимое XX будет обозначаться круглыми скобками –
XX . ZF – флаг признак нулевого результата Zero , устанавливается в 1, если получен нулевой результат, иначе ZF 0. CF – флаг переноса Carry устанавливается, если в результате выполнения операции из старшего бита переносится или занимается 1 при сложении или вычитании, иначе CF 0. На CF влияют также команды сдвига и умножения. SF – флаг знака результата Sign равен единице, если результат отрицательный, т.е. он дублирует старший знаковый бит результата. PF – флаг четности Parity . PF 1, если сумма по модулю два всех битов результата равна нулю число единичных битов – четное . AF – флаг дополнительного переноса Auxiliary устанавливается, если есть перенос из старшего бита младшей тетрады бит D3 в младший бит старшей тетрады бит D4 . Используется в операциях над упакованными BCD числами.
OF – флаг переполнения Overflow устанавливается, когда результат операции превысит одно- или двухбайтовый диапазон чисел со ЗНАКОМ, а также в некоторых других случаях. Другое определение OF 1, если перенос заем в старший бит результата не равен переносу заему из старшего бита. Рассмотрим в качестве примера сложение двух однобайтовых чисел 125 4 129 выходит за пределы -128 127 чисел со знаком для беззнаковых чисел 129 – корректный результат .
0 1 1 1 1 1 0 1 125 0 0 0 0 0 1 0 0 4 1 0 0 0 0 0 0 1 129 128 или -127 0 1 Перенос в бит D7 равен 1, а из бита D7 0, в результате сложения чисел OF 1, CF 0, ZF 0, SF 1, PF 0, AF 1. Остальные три флага будут рассмотрены далее. Содержимое регистра признаков называется также словом состояния процессора программы и обозначается PSW. ОРГАНИЗАЦИЯ ПАМЯТИ И ВЫЧИСЛЕНИЕ АДРЕСА МП 8086 имеет 20-ти разрядную шину адреса
ША, позволяющую обращаться к 2 20 или примерно к одному миллиону ячеек памяти. 16-ти битовая шина данных ШД может пересылть информацию байтами или словами. Память обычно организована в виде линейного одномерного массива байтов, причем два соседних байта могут рассматриваться как слово. Все мегабайтное пространство памяти условно делится на 16 сегментов объемом по 64Kb. Микропроцессору доступны в каждый момент четыре – кодовый сегмент, где хранится программа, стековый сегмент, сегмент данных программы и дополнительный сегмент данных. Начальные адреса этих сегментов хранятся в регистрах CS,SS,DS и ES. Так как эти регистры 16-ти битовые, а все адресное пространство 20-ти битовое, то МП начальный сегментный адрес в 20-ти битовом сумматоре сдвигает на четыре бита влево эквивалентно умножению на 16 и складывает с содержимым одного из регистров
IP,SP,DI,SI . Полученное число называется физическим адресом. Например, извлекая из памяти очередной байт кода программы МП формирует физический адрес по формуле Физический адрес IP CS 16, где IP – смещение, эффективный или исполнительный адрес, CS – сегментный адрес, а CS 16 – называется начальным сегментным адресом.
Организация памяти приведена на рис.2. 8.4 ПРОЦЕССОРНЫЙ БЛОК ПБ включает микропроцессор, стабилизируемый кварцем генератор импульсов, два устройства для формирования адресных и управляющих сигналов и двунаправленный буфер шины данных. Схема ПБ представлена на рис.3. Для уменьшения общего количества выводов МП, по некоторым из них в разные моменты передаются разные сигналы, поэтому младшие 16 линий адреса
и шина данных совмещены мультиплексированы . Конденсатор C до включения питания разряжен. В начальный момент времени t0 подается напряжение питания на выводы . Начиная с этого момента времени на входе RES действует логический 0 до момента t1, когда напряжение на конденсаторе C достигнет порогового значения логической 1. В течение интервала t0 t1 выходной сигнал RESET имеет активный уровень лог.1.
Микропроцессор переводится в исходное состояние. При этом в регистр CS записывается код FFFFh, а в регистр IP код 0000h. Когда C зарядится и сигнал RES станет 1 , на входе RESET микропроцессора сигнал снизится до пассивного уровня. Начинается основной цикл работы. МП извлекает из ячейки памяти с адресом FFFF 0000 первый байт команды, который чаще всего является кодом безусловного перехода к тому месту в памяти, где находится начало программы. В процессе работы можно перезапустить МП с помощью кнопки SW. Конденсатор C разряжается до нуля и процесс запуска повторяется. МП может работать в двух режимах в максимальном и минимальном. Минимальный режим ограничивает адресуемый объем памяти до 64Kb.
В большинстве приложений в приборостроении такого объема достаточно, поэтому сигнал MX MN 1. Формирователи сигналов ШУ,ША и ШД шины управления адреса и данных , выполнены на элементах ИЛИ, регистрах и шинных формирователях и служат также для увеличения мощности этих сигналов. Генератор G формирует последовательность импульсов CLK, называемых тактовыми. Выполнение команды производится в течение интервалов времени, называемых
циклами. Если в цикле есть обращение к памяти или к внешним устройствам, то он называется циклом шины. Цикл шины содержит 4 обязательных такта T1 T4. В такте T1 микропроцессор передает по совмещенной шине адрес данные адрес ячейки памяти или внешнего устройства ВУ , подключенного к шинам ШУ,ША и ШД. В такте T2 производится выбор направления обмена данными с памятью или ВУ, а в тактах T3,T4 – передача данных. Если ЗУ запоминающее устройство или
ВУ медленные, то на вход готовности RDY посылается сигнал RDY 0, по которому МП вставляет циклы ожидания TW, до тех пор, пока не будет установлена готовность ВУ или ЗУ RDY 1 . Если в цикле нет обращения к шине, то МП формирует холостые циклы TI. Для разделения сигналов совмещенной шины адрес данные ШАД AD15 0 их необходимо демультиплексировать с помощью регистра защелки адреса
RG и двунаправленного буфера BD. При обращении к памяти в том числе при выборке команды микропроцессор передает по ШАД адрес ячейки памяти. Этот адрес записывается в D-триггеры регистра RG сигналом ALE генерируемым микрпроцессором в этот момент и поступающим на синхровходы D-триггеров. Адрес в регистре сохраняется на время последующей передачи данных. Следом по ШАД передаются, либо данные от микропроцессора к ВУ или ЗУ, либо в обратном направлении. МП должен, во-первых, обеспечить правильное направление передачи буфера BD и , во-вторых, открыть разрешить тристабильные элементы буфера для передачи данных. Первую задачу решает сигнал МП DT R DT R 0 передача данных от МП – Transmit, DT R 1 прием данных МП – Receive . Вторая задача решается генерацией МП сигнала DEN Data Enable . Чтение или ввод данных в один из регистров
МП осуществляется с помощью инверсных сигналов шины управления ШУ MEMR чтение из памяти , IOR ввод из ВУ , называемыми еще стробами чтения. Запись или вывод данных из МП по шине данных сопровождается стробами записи MEMW запись в память ЗУ , или IOW вывод во внешнее устройство ВУ . Четверка стробов, которые являются основными сигналами шины управления, формируется из сигналов
чтения, записи RD, WR и сигнала M IO, определяющего к чему производится обращение к ЗУ или ВУ. Формирование этих сигналов производится с помощью простой комбинационной схемы, содержащей 4 элемента ИЛИ и один инвертор. 8.5 МИКРОПРОЦЕССОРНАЯ СИСТЕМА С ТРЕМЯ ШИНАМИ Работой всех устройств подключаемых к процессорному блоку управляет дешифратор DC, к входам которого подводятся линии шины адреса.
Обычно дешифраторов бывает несколько. Если используется не все адресное пространство для памяти и ВУ, то на дешифратор заводятся не все линии адреса, чаще всего несколько старших разрядов ША. Например, если на DC завести 4 линии A19 A16, то все адресное пространство будет разбито на неперекрывающиеся блоки по 2 20 2 4 64Кб, принадлежащие каждому из 16-ти 2 4 16 устройств ЗУ или ВУ, подключенных к шинам на рис.4 показаны 7 устройств .
Часть из них могут использовать все отводимое им адресное пространство, например ПЗУ и ОЗУ, другие только несколько адресов. Типовая МПС, показанная на схеме содержит микросхему программируемого периферийного интерфейса ППИ PPI или IOP , к которой через три 8-битовых независимых канала PA,PB и PC можно подключать периферийные устройства, например принтер, клавиатуру, 8-ми сегментный дисплей или ЦАП и АЦП. Через ППИ может производиться обмен данными с другими МПС или ЭВМ. Ввод с клавиатуры и вывод на дисплей могут производиться специальными микросхемами. Связь с удаленными устройствами или абонентами сетей может осуществляться с помощью универсального асинхронного последовательного приемо-передатчика УАПП-UART программируемый связной интерфейс ПСИ-PCI или
IOS . К выводам RxD – приемник и TxD – передатчик через линию связи подключаются передатчик и приемник другого абонента или устройства. Если связь производится через модем, то доступны любые сети. Для формирования точных, различных по частоте и длительности сигналов, в т.ч. и звукового диапазона используется программируемый интервальный таймер ПИТ-PIT, имеющий три независимых 16-ти разрядных двоичных счетчика.
Задержка, длительность или частота выходного сигнала каждого счетчика кратна 3 65535 периодам входного сигнала. Если в системе используется режим прерывания выполнения основной программы внешними устройствами, требующими безотлагательного вмешательства микропроцессора, то может применяться программируемый контроллер прерываний ПКП – PIC устройство собирающее заявки на обслуживание от ВУ с входов IRi . Подробно прерывания будут рассмотрены ниже.
Обмен данными между МП и ЗУ или одним из ВУ возможен только при появлении на выходе дешифратора DC единственного сигнала CS 0, поступающего на то устройство с которым будет производиться запись или чтение байта данных. Остальные невыбранные устройства будут в пассивном состоянии, т.к. их сигналы CS 1. Байт информации на ШД считывается ВУ, ЗУ или МП в строго ограниченном интервале времени во время действия одного из управляющих сигналов чтения записи MEMR, MEMW из памяти или в память, или во время действия одного из сигналов управления вводом выводом IOR, IOW в из ВУ. Быстрый обмен данными может производиться с помощью устройства прямого доступа к памяти ПДП DMA . 8.6 СТЕК Область памяти с упрощенной схемой адресации, к которой МП обращается по принципу последним вошел – первым вышел LIFO . Байты программы в оперативной памяти располагаются последовательно по нарастающим адресам.
Стек заполняется по последовательно убывающим адресам. Во избежание перекрытия этих двух областей памяти стек обычно располагается в старших адресах. Начальный адрес стека, называемый дном bottom записывается в регистр SP командой MOV SP,0fffeh. Вместо 0fffeh – адрес предпоследнего байта сегмента, может быть другое значение, но выравненное по двухбайтовым, т. е. четным адресам.
Текущее значение содержимого SP называется, также адресом вершины стека top . Если адрес вершины совпадает с адресом дна – стек считается пустым. Рассмотрим механизм помещения в стек и извлечения из него данных на примере команд PUSH AX и POP BX. Пусть начальное значение аккумулятора AX равно 874c. Команда PUSH выполняется в четыре этапа
Адрес в SP уменьшается на 1 SP SP – 1. По этому адресу помещается старший байт 87 SP AH . Содержимое SP снова уменьшается на 1 SP SP – 1. По полученному адресу загружается младший байт 4c SP AL . Действие команды POP аналогично описанному процессу, но в происходит в обратном порядке BL – SP , SP – SP 1, BH – SP , SP – SP 1. Байты в стек помещаются по правилу старший байт по старшему
адресу . На рис.7 показан пустой стек до выполнения команды PUSH AX и после ее выполнения, а на рис.8 после выполнения команды POP BX. Преимущество стека в том, что программисту не нужно заботиться об абсолютных значениях адресов переменных, но в этом таится и опасность, если текущее содержимое указателя стека будет потеряно, при неаккуратных действиях программиста, то работа компъютера станет непредсказуемой и он, как говорят в таких случаях, зависнет . В программах стек используется для 1 сохранения и извлечения адреса возврата из подпрограмм командами ассемблера CALL и RET IRET , 2 хранения локальных переменных, 3 передачи фактических параметров подпрограммам трансляторами с языков высокого уровня , 4 временного хранения содержимого регистров фоновой программы при ее прерывании. 8.7 СПОСОБЫ ВВОДА-ВЫВОДА Обмен данными между ЭВМ и
ВУ или ЗУ называется вводом-выводом ВВ . Существует четыре основных способа ВВ. Программный ВВ ВВ по прерываниям Прямой доступ к памяти ПДП или DMA Транзакции MCS-96 В первых двух случаях в обмене данными участвует микропроцессор. В режиме ПДП функции управления обменом берет на себя специальное устройство – контроллер ПДП, причем МП в это время в обмене данными не участвует.
В 4-ом способе пересылки производятся параллельно с работой МП периферийным сервером транзакций. 8.7.1 ПРОГРАММНЫЙ ВВОД-ВЫВОД Для внешних устрйств выделяеся адресное пространство, либо не входящее в состав ЗУ, либо являющееся его частью. Следовательно программный ВВ может быть двух типов с помощью команд ассемблера ввод
IN и вывод OUT с использованием всех команд пересылки ассемблера MOV, LODSB В пределах 64K блока карта распределения памяти для первого случая показана на рис.5 слева. В пределах интервала 0000 XXXX адреса ВУ и ЗУ пересекаются. Поэтому для однозначного обращения к ячейкам памяти или ВУ в процессорном блоке формируются управляющие пересылкой стробирующие импульсы –
IOR, IOW для ввода или вывода данных во внешнее устройство и MEMR, MEMW для чтения или записи в память.Емкость ЗУ для размещения программ и данных не уменьшается. Карта распределения памяти для второго случая показана на рис.5 справа. Под внешние устройства выделяется часть адресного пространства ЗУ. Емкость ЗУ уменьшается на количество адресов отводимых для ВУ. Второй способ позволяет адресоваться к ВУ с помощью всех команд оперирующих с памятью. Основное достоинство программного ВВ в простоте. Но при выполнении ввода, например с клавиатуры, МП затрачивает до 99,99 времени на ожидание, не выполняя при этом другой полезной работы. Избавиться от этого недостатка позволяет ВВ по прерываниям. 8.7.2 ВВОД-ВЫВОД ПО ПРЕРЫВАНИЯЮ В общем случае прерывания могут вызываться внешнними устройствами внешние
прерывания , командами прерываний программные прерывания автоматически самим МП внутренние прерывания , например при попытке деления на 0. В этом разделе будут рассмотрены внешние прерывания. Работу МП можно разделить во времени между двумя независимыми программами фоновой, которая выполняет основную задачу и программой ВВ данных. Когда ВУ подготовит данные для передачи, оно посылает сигнал
запроса на прерывание непосредственно на вход МП INTR или в специальное устройство – контроллер прерываний. В процессе обслуживания прерывания выполняются следующие действия 1. ВУ самостоятельно, либо через контроллер прерываний посылает сигнал прерывания INT R на одноименный вход МП 2. МП завершает выполнение текущей команды и,если преывания разрешены командой ассемблера STI EI для 8085 , то подтверждает разрешение сигналом
ШУ -INTA 3. В МП по ШД передается тип номер прерывания – N 4. Содержимое PSW, а также CS,IP адрес возврата , скорректированное с учетом сброса очереди помещается в стек 5. Сбрасываются флаги IF флаг разрешения прерываний и TF флаг трассировки , причем т.к. IF 0 дальнейшие прерывания запрещаются 6. В IP загружается содержимое двух байтов с начальным адресом 4
N, а в CS – содержимое следующих двух байтов . Эти 4 байта называются вектором указателем прерывания. 7. Начинает выполняться подпрограмма – обработчик прерывания. INT SUBR STI PUSH AX здесь команды MOV AL,5 обработчика прерывания POP AX IRET Если допускаются вложенные прерывания, то вначале помещается команда STI- разрешение преываний, запрещенных в п.5. Инструкции push и pop сохраняют и восстанавливают содержимое регистров фоновой задачи, если эти же регистры используются и обработчиком прерывания в примере регистр AX . 8. Команда IRET извлекает из стека адрес возврата – IP,CS и содержимое PSW 9. МП прдолжает работу с адреса возврата. При выполнении программных прерываний по команде INT N действия выполняются с п.3. N находится в пределах 0
N 255, поэтому четырехбайтовые вектора прерываний занимают первые 1024 байта памяти. 8.7.3 ПРЯМОЙ ДОСТУП К ПАМЯТИ ПДП И ТРАНЗАКЦИИ Обмен большим количеством байтов, между ВУ например дисковым накопителем и памятью с помощью предыдущих двух методов малоэффективен, т.к. обмен происходит по цепочке ВУ – аккумулятор AX или AL – память или наоборот. В режиме ПДП при поступлении запроса от ВУ на вход
HOLD, МП разрешает обмен выходным сигналом HLDA. Микропроцессор на время обмена отключается от ШУ,ШД и ША переводя их в третье состояние по входам OE буферных элементов сигналом BUSEN 1 .Специальная микросхема контроллер ПДП использует освободившиеся шины для высокоскоростного прямого обмена ВУ – память. Скорость обмена достигает многих мегабит сек.
На рис.6 показан процесс выполнения основной фоновой программы – интервалы времени начало t1, t2 конец и выполнение процедуры передачи массива данных, на рисунке этот отрезок времени обозначен двойной линией. На диаграмме А ЭВМ задействована только для передачи отрезок t1 t2 , в остальное время компьютер бездействует. Во втором варианте – диаграмма Б , код программы передачи жестко встроен в фоновую задачу. В третьем варианте В передача массива оформлена в виде подпрограммы прерывания, причем если запроса
на прерывание не поступит,то суммарное время на выполнение фоновой программы уменьшится на t2-t1. При использовании режима ПДП сохраняются преимущества метода прерывания, время на передачу сокращается – диаграмма Г , но фоновая задача по прежнему прерывается. В последнем случае передача данных производится почти без нарушения хода программы параллельно во времени Д . Транзакции реализованы в некоторых семействах однокристальных микроЭВМ например в MCS-96. ЗАДАЧИ И УПРАЖНЕНИЯ Одна подпрограмма вызывает другую.Укажите короткий адрес возврата из вложенной прoцедуры. Пояснение Вложенная подпрограмма это подпрограмма, которая вызывается из другой подпрограммы. Вызов подпрограммы сопровождается помещением в стек адреса возврата. Стек заполняется начиная с дна. Короткий адрес – двухбайтовый адрес в пределах одного кодового сегмента.
Байты в стек помещаются по правилу старший байт по старшему адресу . Теперь нетрудно ответить на предложенный вопрос 4dba. В тексте программы следуют подряд команды PUSH AX PUSH CX POP DX POP BX. Чему будет равно содержимое регистра BH? Рисунок стека соответствует промежуточному состоянию до выполнения команд
POP . Пояснение В стек дважды что-то помещается и дважды что-то извлекается, причем последние два байта помещаются в регистр BX. Перефразируя правило последним вошел – первым вышел в последним вышел – первым вошел , придем к выводу, что содержимое AX засылается в регистр BX. Команда PUSH AX помещает два байта в стек по правилу старшая половина двухбайтового регистра – по старшему адресу . Ответ c9 В тексте программы следуют подряд команды
POP AX POP DX. Чему будет равно содержимое регистра DL? Ответ 4c На временных диаграммах внизу приведены управляющие сигналы на выходах микропроцессора без сохpанения точных вpеменных пpопоpций . Что осуществляется в момент времени отмеченный знаком ? Чтение данных из памяти, запись данных в память вывод данных в порт, ввод данных из порта, ничего из указанного выше. Пояснения Если DEN 0 разрешение данных возможно 4 случая для приведенных диаграмм 1
M IO 0, RD 0 активны сигналы ввод вывод IO и чтение-ввод RD . 2 M IO 0, WR 0 активны сигналы ввод вывод IO и запись-вывод WR . 3 M IO 1, RD 0 активны сигналы обращения к памяти M и чтение-ввод RD . 4 M IO 1, WR 0 активны сигналы обращения к памяти M и запись-вывод WR . Ответ Вывод данных в порт. Приложение 3 ОСНОВНЫЕ ПОЛОЖЕНИЯ АЛГЕБРЫ ЛОГИКИ В отличие от аналоговых электронных устройств, в цифровых устройствах ЦУ входные и выходные сигналы могут принимать ограниченное количество состояний. В соответствии с логическим соглашением ГОСТ 2.743-82 , в зависимости от конкретной физической реализации элементов ЦУ, более положительному значению физической величины, H – уровень, соответствует состояние логическая 1 , а менее положительному значению ,
L – уровень – логический 0 . Такое соглашение называется положительной логикой. Обратное соотношение называется отрицательной логикой. В ГОСТ е 19480 – 89 даны наименования, определения и условные обозначения основных параметров и характеристик цифровых микросхем. Теоретической основой проектирования ЦУ является алгебра-логики или булева алгебра, оперирующая логическими переменными.
Для логических переменных, принимающих только два значения,существуют 4 основных операции. Операция логическое И AND конъюнкция или логическое умножение, обозначается или . Операция логическое ИЛИ OR , дизъюнкция или логическое сложение, обозначается или . Операция логическое НЕ NOT , изменение значения, инверсия или отрицание, обозначается чертой над логическим выражением. Инверсия иногда будет в тексте обозначаться знаком .
Операция эквивалентности обозначается . Следующие соотношения являются аксиомами. 1 0 0 0 1 1 1 1 2 1 1 1 0 0 0 2 3 1 0 0 1 1 0 1 1 0 0 3 4 1 0 0 1 4 Из 1, 2 и 1 ,2 следует x x x и x x x. 5 Из 1, 3 и 2 ,3 следует x 0 x и 0 x 0. 6 Из 2, 3 и 1 ,3 следует 1 x 1 и x 1 x. 7 Из 3 и 3 следует x x 1 и x x 0. 8 Из 4 и 4 следует x x. 9 И, наконец, из 1,1 , 2,2 , 3,3 и 4,4 следует x0 x1 x0 x1 и x0 x1 x0 x1 .
10 Последние выражения 10 называют принципом двойственности или теоремой Де Моргана инверсия логической суммы равна логическому произведению инверсий и наоборот . Соотношения двойственности для n переменных, часто записывают в виде x1 xn x1 xn и x1 xn x1 xn 11 На функции И и ИЛИ распространяются обычные алгебраические законы – переместительный, сочетательный и распределительный, которые легко доказываются методом перебора x1 op x0 x0 op x1 – переместительный, x2 op x1 op x0 x2 op x1 op x0 – сочетательный и x2 x1 x0 x2 x1 x2 x0 и x2 x1 x0 x2 x1 x2 x0 – распределительный, где операция op может быть, либо И, либо ИЛИ. Наряду с тремя основными логическими функциями, называемыми также переключательными, существуют и другие. 1.2 ПЕРЕКЛЮЧАТЕЛЬНЫЕ ФУНКЦИИ Для n – логических переменных аргументов существует 2n их комбинаций или двоичных наборов. На каждом таком наборе может быть определено значение функции 0 или 1.
Если значения функции отличаются хотя бы на одном наборе, функции – разные. Общее число переключательных функций ПФ от n аргументов равно N 22n. Для n 2, N 16. При n 3, N 256 и далее очень быстро растет. Практическое значение имеют 16 функций от 2-х переменных, т.к. любое сложное выражение можно рассматривать как композицию из простейших. В таблице 1 приведены некоторые из
ПФ для n 2. i-номер набора входных переменных x1 и x0. ЗАПОМНИТЕ СЛЕДУЮЩИЕ ОПРЕДЕЛЕНИЯ. Функция И равна единице, если равны единице ВСЕ ее аргументы. Функция ИЛИ равна единице, если равен единице ХОТЯ БЫ один аргумент. Функция ИСКЛЮЧАЮЩЕЕ ИЛИ XOR равна единице, если равен единице ТОЛЬКО один ее аргумент. 1.3 УСЛОВНЫЕ ОБОЗНАЧЕНИЯ ЛОГИЧЕСКИХ
ФУНКЦИЙ НА СХЕМАХ Количество входов логического элемента, участвующих в формировании логической функции, называется коэффициентом объединения – Коб не путать с коэффициентом разветвления . У всех выше приведенных схем, за исключением инвертора, коэффициент объединения равен двум. Промышленностью выпускаются схемы с Коб 2,3,4,8. Для получения схем с другим числом входов основные элементы можно объединять. Например, если требуется пятивходовая схема
И, то ее можно получить, используя сочетательный закон следующим способом x0 x1 x2 x3 x4 x0 x1 x2 x3 x4 x0 x1 x2 x3 x4, т.е. требуются две двухвходовые и одна трехвходовая схемы И, для первого варианта, либо одна двухвходовая и одна четырехвходовая – для второго рис.1 . Можно использовать и восьмивходовую схему И, подав на незадействованные входы 1 , либо некоторые из переменных, в соответствии с выражениями 5 или 7 . 1.4 СПОСОБЫ ПРЕДСТАВЛЕНИЯ ЛОГИЧЕСКИХ ФУНКЦИЙЦелью проектирования цифрового устройства является получение его логической функции ЛФ и соответствующей ей схемной реализации. ЛФ могут иметь различные формы представления 1 словесное, 2 графическое, 3 табличное, 4 алгебраическое, 5 на алгоритмическом языке например VHDL и 6 схемное. В качестве примера, рассмотрим функцию
Y от двух переменных x1 и x0, заданную словесным описанием Y 1, если переменные НЕ РАВНЫ и Y 0, если x1 x0. Такую ЛФ удобно назвать функцией НЕРАВНОЗНАЧНОСТИ. Переходим к табличному представлению Y таблица 2 . Табличное представление значений ЛФ для всех наборов входных переменных называется таблицей истинности. В общем виде переход от табличного представления к алгебраическому может осуществляться
по формуле 12 , одной из основных в алгебре логики. Выражение 12 называется совершенной дизъюнктивной нормальной формой ЛФ СДНФ . mi – минтерм или логическое произведение всех переменных i-го двоичного набора, входящих в прямом виде, если значение этой переменной в наборе равно 1, и в инверсном виде, если ее значение равно 0. fi – значение ЛФ на i – ом наборе. Доказательство 12 базируется на теореме разложения, в соответствии
с которой любую ЛФ f от n-переменных можно разложить по переменной xi в виде f x n-1 , ,xi ,x0 xi f x n-1 , ,0, ,x0 xi f x n-1 , ,1, ,x0 . Это выражение для xi 0 равно 0 f x n-1 , ,0, ,x0 0 f x n-1 , ,1, ,x0 f x n-1 , ,0, ,x0 . При xi 1 оно будет равно 1 f x n-1 , ,1, ,x0 1 f x n-1 , ,1, ,x0 f x n-1 , ,1, ,x0 , т.е. при любых значениях xi теорема разложения справедлива. Теорему разложения можно применить n раз и тогда ЛФ будет разложена по всем своим переменным.
В виде примера рассмотрим функцию F f x1,x0 от двух переменных. Разложение этой функции по переменной x1 даст F x1 f 0,×0 x1 f 1,×0 . Продолжая эту операцию для переменной x0, получим F x1 x0 f 0,0 x0 f 0,1 x1 x0 f 1,0 x0 f 1,1 x1 x0 f 0,0 x1 x0 f 0,1 x1 x0 f 1,0 x1 x0 f 1,1 . 12.1 Выражение 12.1 позволяет записать все переключательные функции от двух переменных, используя только три основных логических операции. Рассмотрим разложение функций F7- ИЛИ и F1- И , для чего необходимо обратиться к соответствующим строчкам таблицы 1. Функция И на двоичных наборах входных переменных x1 и x0 00,01,10,11 принимает значения 0,0,0,1. Записывая выражение 12.1 для этих значений получим F1 x1,x0 x1 x0 0 x1 x0 0 x1 x0 0 x1 x0 1 x1 x0, что соогласуется с ее определением.
Таким же образом, находим алгебраическое выражение функции F7- ИЛИ , которая, соответственно, на тех же входных наборах принимает значения 0,1,1,1. Тогда, в соответствии с 12.1 , F7 x1,x0 x1 x0 0 x1 x0 1 x1 x0 1 x1 x0 1. Вынося за скобки в двух последних слагаемых x1, получим F7 x1 x0 1 x1 x0 1 x0 1 . На основании аксиомы 8 , выражение в скобке равно 1 и
F7 x1 x0 1 x1. Применяя распределительный закон, найдем x1 x1 x0 x1 x1 x0. Возвращаясь к таблице 2, получим Y 0 x1 x0 1 x1 x0 1 x1 x0 0 x1 x0 x1 x0 x1 x0 x1 x0 F6 функцияия неравнозначности . С помощью формулы 12 любую, сколь угодно сложную, логическую функцию можно представить в виде трех основных ЛФ И , ИЛИ , НЕ , представляющих собой логический базис. 1.5 ЛОГИЧЕСКИЙ
БАЗИСНабор простейших ЛФ, позволяющих реализовать любую другую функцию называется логическим базисом ЛБ . Функции И, ИЛИ, НЕ не являются минимальным ЛБ, т.к. сами могут быть представлены через другие функции, например через F8 ИЛИ -НЕ или F14 И – НЕ . Следовательно базис И – НЕ является минимальным. Реализацию НЕ,И,ИЛИ в базисе ИЛИ – НЕ произвести самостоятельно, используя перечисленные аксиомы.
1.6 СХЕМНЫЕ ОСОБЕННОСТИ ЛОГИЧЕСКИХ ЭЛЕМЕНТОВ Приведенные выше логические элементы ЛЭ И, ИЛИ, НЕ, И-НЕ и другие могут иметь некоторые схемотехнические особенности. 1.6.1 БАЗОВЫЙ ЛОГИЧЕСКИЙ ЭЛЕМЕНТ На рисунке приведена упрощенная схема И-НЕ и его условное обозначение. Напряжения на базах транзисторов VT1 и VT2 находятся в противофазе и, если x0 x1 1, то нижний транзистор открыт, а верхний закрыт, так как x0 x1 0 . Потенциал коллектора VT2 в этом случае примерно равен нулю и следовательно y 0. При других значениях x0 и x1 нижний транзистор закрыт, а верхний открыт и на выходе схемы – высокий уровень, т.е. схема работает как элемент И-НЕ. Выходы нескольких БЛЭ категорически нельзя соединять вместе, потому что, если n-1 элементов находятся в состоянии 1 , а n-ый в состоянии 0 , то n-1 транзисторов VT1 будут сливать sink токи в единственный транзистор
VT2 n-го элемента. Суммарный ток может превысить допустимое значение и VT2 выйдет из строя. 1.7 ЭЛЕМЕНТ С ОТКРЫТЫМ КОЛЛЕКТОРОМЛогический элемент И-НЕ с открытым коллектором ОК см.рис.2. слева обозначается в поле элемента ромбом с чертой внизу. К открытому коллектору снаружи могут подключаться резисторы, обмотки реле и двигателей, светодиоды и т.д. Открытые коллекторы нескольких элементов в отличие от базового логического элемента могут соединяться
вместе, образуя монтажное И рис.2 – справа для прямых значений переменных т.к. y y0 y1 1 при y0 y1 1. Иногда такую схему называют монтажное ИЛИ , потому что y x0 x1 x2 x3 в соответствии с соотношением двойственности равно x0 x1 x2 x3 рис.2 . Логический элемент И с открытым эмиттером, обозначается ромбом, но с чертой сверху. 1.8 ЭЛЕМЕНТЫ И – ИЛИ – НЕ И РАСШИРИТЕЛИ Такие схемы объединяют несколько элементов И, подключенных выходами к элементу ИЛИ-НЕ рис.3 .
Если количества переменных a,b, e недостаточно, используются элементы-расширители, подключаемые к входам расширения C и E входы для открытых коллектора и эмиттера . Символ 1 обозначает функцию И, объединяемую по ИЛИ рис.4 . Здесь и далее символом обозначаются вспомогательные входы у логических элементов. В этих схемах, как и вообще в элементах ИЛИ, неиспользуемый вход ИЛИ д.б. подключен к 0. Поэтому, если одна из секций И незадействована, на один из ее входов необходимо подать 0. В противном случае Y всегда будет равен 0. Это особенность схем, выполненных по ТТЛ Ш технологии, т.к. неподключенный логический вход этих схем эквивалентен логической 1 правда при этом ухудшаются некоторые характеристики микросхемы .
1.9 ТРИСТАБИЛЬНЫЕ ЭЛЕМЕНТЫ Наряду с двумя логическими состояниями существует третье технологическое состояние, когда выход элемента отключается от внутренней схемы. При этом сопротивление между выходом и землей становится очень большим и выход микросхемы не оказывает никакого влияния на подключенные к нему выходы других микросхем. Выходы нескольких таких элементов также могут соединяться вместе.
Такое включение , разновидность монтажного И , применяется там, где несколько источников сигналов по очереди подключаются к входам одного или нескольких приемников, не мешая друг другу. Третье состояние называют также высокоимпедансным или Z – состоянием. Схема И-НЕ с Z-состоянием выхода приведена на рис.5. слева, а ее условное обозначение – справа. Если сигнал OE 0, транзистор VT3 закрыт и включенные встречно диоды не оказывают влияния на
логические выходы элемента И. Напряжения на базах транзисторов VT1 и VT2 находятся в противофазе и, если x0 x1 1, то верхний транзистор закрыт, а нижний открыт. Потенциал коллектора VT2 примерно равен нулю и следовательно y 0. При других значениях x0 и x1 нижний транзистор заперт, а верхний открыт и на выходе схемы – высокий уровень, т.е. при OE 0 схема работает как обычный элемент
И-НЕ. Картина существенно изменится при OE 1. Транзистор VT3 откроется до насыщения и на базах транзисторов VT1 и VT2 потенциал опустится примерно до нуля, запирая их. Выход y окажется отключенным от внутренней логической схемы. На схемах тристабильные элементы обозначаются ромбом с поперечной чертой или буквой Z. Такие элементы используются там, где необходима передача инфориации по одной линии от нескольких источников к одному или нескольким приемникам. Причем, так как линия одна, то чтобы выходы пассивных источников не искажали информацию на выходе активного источника, они должны переводиться в третье состояние. Z – состояние используется по этой причине в микросхемах памяти, шинных формирователях. Дополнительный инверсный вход относится к категории управляющих или функциональных.
Функция входа зашифрована в его обозначении Output Enable – разрешение выхода OE ,а значение активного уровня на этом входе,при котором функция выполняется, равно 1, если вход прямой, и равно 0, если вход инверсный, как на схеме. 1.10 МИНИМИЗАЦИЯ ЛОГИЧЕСКИХ ФУНКЦИЙ Полученные по формуле СДНФ 12 выражение может быть преобразовано не всегда к виду, имеющему меньшее число переменных и операций
по сравнению с исходным. Такое преобразование называется минимизацией. Рассмотрим пример. Имеется три двоичных датчика xi. Необходимо реализовать ЛФ Yмажор принимающую значение 1, когда равны 1 значения двух и более датчиков. Такая функция называется мажоритарной. Ее таблица истинности имеет вид По формуле 12 Yмажор x2 x1 x0 x2 x1 x0 x2 x1 x0 x2 x1 x0. 3,5,6,7 – строчки таблицы .
Полученному выражению соответствует схема на рис.6. Схема содержит 4 трехвходовых элемента И и 1 четырехвходовый элемент ИЛИ . Нахождение минимальной формы ЛФ производится методом алгебраических преобразова- ний, с помощью таблиц Карно или машинными методами для больших проектов. 1.11 ТАБЛИЦА КАРНО Таблица Карно ТК это видоизмененная запись таблицы истинности.
Для функции мажоритарности из последнего примера ТК выглядит следующим образом Правила построения ТК следующие 1 Количество клеток ТК равно количеству строк таблицы истинности. 2 Слева и сверху располагаются значения аргументов. Порядок размещения аргументов таков, что в двух соседних по горизонтали и вертикали клетках отличается значение только одного аргумента поэтому соседними считаются и клетки, находящиеся на противоположных краях таблицы . 3 В клетки заносятся соответствующие значения ЛФ. 4 Единичные клетки объединяются в прямоугольники импликанты по 2 i клеток. 5 Для каждого прямоугольника записывается произведение тех аргументов, которые в соседних клетках не изменяют своего значения. 6 Переменные входят в произведение в прямом виде, если их значение в соседних клетках равно 1, в противном случае в инверсном. 7
Полученные произведения складываются по ИЛИ в искомую ЛФ. В примере имеется 3 прямоугольника – A,B,C, причем Ya x2 x0 x1 в соседних клетках меняет свое значение, поэтому в конъюнкцию не входит . Yb x1 x0 и Yс x2 x1. Yмажор Ya Yb Yc x2 x0 x1 x0 x2 x1. 13 Соответствующая схема рис.7. проще, чем на рис.6. 1.12
ПРЕОБРАЗОВАНИЕ ЛФ К БАЗИСУ И-НЕ И И-ИЛИ-НЕ Применяя к выражению 13 аксиому двойного отрицания 9 получим Yмажор x2 x0 x1 x0 x2 x1 14 Формуле 14 соответствует схема рис.8,слева в базисе И-ИЛИ-НЕ. Применяя к выражению 14 соотношение двойственности 11 получим x2 x0 x1 x0 x2 x1 . Последнему выражению соответствует схема в базисе И-НЕ рис.8, справа . 1.13 ВРЕМЕННЫЕ ПАРАМЕРЫ ЛОГИЧЕСКИХ
ЭЛЕМЕНТОВРассмотрим реакцию инвертора на изменение входного сигнала рис.9 . Инерционные свойства инвертора приводят к задержке сигнала при его прохождении от входа к выходу. Процесс изменения напряжения от низкого уровня L к высокому H, называется фронтом сигнала положительным перепадом, положительным фронтом , а обратный процесс – спадом отрицательным перепадом, отрицательным фронтом .
Если существенно их взаимное расположение, то фронт может быть передним и задним. Длительность фронтов на рис.9 обозначена t1,0 – отрицательный и t0,1 – положительный. Величинами tзд.р.0,1 и tзд.р.1,0 обозначается время задержки распространения сигнала от входа до выхода при переходе из 0 в 1 и наоборот рис.9 . Минимальная длительность импульса на входе элемента tи.мин пропорциональна среднему значению tзд.р.ср. равному полусумме tзд.р.0,1 и tзд.р.1,0. Максимальная частота входных импульсов Fмакс обратно пропорциональна tзд.р.ср. Из сказанного следует, что быстродействие элемента тем выше, чем меньше tзд.р.ср. Определения вышеуказанных величин с их отечественными и международными обозначениями приведены в разделе обозначения некоторых параметров микросхем. Быстродействие схемы зависит также от алгебраической формы представления ЛФ. Пусть y a b c a d a b c d. Первой форме
ДНФ соответствует схема A , а второй – схема B см. рис.10. Если среднее время задержки сигнала в каждом элементе одинаково, то 2tзд.р.ср. 3tзд.р.ср. и двухъярусные схемы СДНФ в общем случае быстрее. Правда в записи со скобками может уменьшиться количество элементов и или проводников в схеме B на один провод меньше . 1.14 ПЕРЕХОДНЫЕ ПРОЦЕССЫ
В ЛОГИЧЕСКИХ СХЕМАХ Отличие времени задержки tзд.р. от нуля при прохождении сигнала через логическую схему может приводить к возникновению помех в выходном сигнале. Эти помехи имеют вид коротких импульсов, и в некоторых случаях приводят к серьезным сбоям в работе схем. Рассмотрим устройство на рис.11. Если элементы схемы не вносят задержки сигнала, а x0 и x1 находятся в противофазе, т.е. x0 x1, то y x1 x1 1. Если же каждый из пяти
ЛЭ имеет задержку tзд.р тогда x0 запаздывает относительно x0 на 4tзд.р. и на выходе схемы возникает незапланированный отрицательный импульс интервал 1 2 , сдвинутый на tзд.р. элемента И-НЕ интервал 0 1 . Процесс прохождения входных сигналов до общего выхода называется состязаниями или гонками . Вредный эффект гонок может быть устранен несколькими способами, один из которых заключается в добавлении к ЛФ дополнительного слагаемого. Пусть некоторая
ЛФ равна F x1 x2 x1 x0, тогда при x2 x0 1 может появиться помеха, вызванная тем, что сигнал x1 задержан относительно x1 на величину задержки инвертора см. рис.12 . Добавление лишнего импликанта в таблице обведен точками устраняет проблему, т.к.при критической ситуации, когда x2 x0 1, дополнительная составляющая x0 x2 1 и функция F x1 x2 x1 x0 x0 x2 равна всегда 1 при x2 x0 1. В устройствах индикации такие короткие помехи можно игнорировать, так как они будут незаметны для глаз. Список литературы СА Майоров, ВВ Кириллов, АА Приблуда Введение в микро-ЭВМ http www.assembler.webservis.ru http www.kalashnikoff.ru http www.vlata.com