Главная страница Микропроцессоры [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] перенос единиц из младших разрядов в старшие, если осуществляется поразрядное сложение разрядов с одинаковыми номерами, в каждом из которых размещалась «1»; - преобразование кода полученного результата из дополнительного или обратного в прямой; - передача результата для хранения в накопительный регистр микропроцессора. Рассмотрим еще один пример. Такая несложная операция, как обмен содержимым между двумя регистрами, представляет собой совокупность трех последовательных микроопераций: пересылки содержимого первого регистра во вспомогательный третий регистр для хранения; пересылки содержимого второго регистра в первый; пересылки из вспомогательного регистра сохраненного содержимого первого регистра во второй. Совокупность микроопераций, необходимых для выполнения конкретной операции, называется микропрограммой этой операции. Время, в течение которого выполняется одна микрооперация, называется машинным тактЬм, а время выполнения всех микроопераций называется машинным циклом или просто циклом команды. Цикл команды состоит из двух фаз: выборки, на которой команда выбирается из памяти и передается в микропроцессор, и исполнения команды в микропроцессоре В зависимости от типа команды на каждую фазу может быть затрачено разное число тактов, от этого зависит время выполнения каждой команды. Итак, команды программы хранятся в памяти микроЭВМ и в соответствии с логикой программы выбираются для исполнения. В памяти может храниться только двоичная информация, поэтому команды должны быть представлены в двоичной системе счисления. В этой системе при записи команды указывается, во-первых, числовое значение кода операции, чтобы определить, какую операцию должен выполнить микропроцессор, во-вторых, нужно в числовой форме задать адреса используемых в операции данных. Причем адреса в этом случае должны соответствовать номеру ячейки памяти, где хранятся данные, или номеру регистра. Запись команд, при которой указываются физические адреса операндов и коды операций, является записью программы в машинных кодах (на машинном языке). Например, команда сложения содержимого одного из регистров микропроцессора с ак- кумулятором на машинном языке записывается как совокупность двоичных единиц или нулей (10000010.) Язык ассемблера. Для составления сложных программ на микроэвм приходится использовать большое количество типов операторов, обращаться ко многим данным и следить за их размещением в памяти. В этом случае работа непосредственно с машинными кодами крайне неудобна. Одним из путей облегчения процесса написания программ является использование языка символического кодирования (языка ассемблера). Язык ассемблера позволяет осуществлять запись операторов не в машинных кодах, а в виде их символических эквивалентов. При этом программисту не требуется знать значения абсолютных физических адресов размещения данных. Символические языки программирования (язык ассемблера, автокод) для записи и представления команд и адресов используют алфавитно-цифровые символы. Символы, обозначающие коды операций, имеют мнемонический смысл, поэтому легко запоминаются. Так, рассмотренная выше команда сложения в символическом виде будет представлена следующим образом: ADDD. Отметим, что для выполнения программы, записанной на символическом языке, тем не менее, ее необходимо перевести в машинные коды, что осуществляется на этапе трансляции программой-транслятором с языка ассемблера. Программа на языке ассемблера состоит из совокупности операторов, каждый из которых при трансляции переводится в одну машинную команду. В этом случае мнемоническое обозначение кода операции заменяется машинным представлением, а для символических адресов вычисляются значения адресов машинных слов памяти, при этом учитываются методы адресации, используемые при символической записи команд. Для осуществления автоматического вычисления абсолютных адресов в программе, написанной на языке ассемблера, указывается абсолютный адрес размещения этой программы в памяти, а все остальные адреса вычисляются относительно адреса начала. Адрес начала размещения программы может быть фиксированным, а может задаваться специальными командами, управляющими трансляцией. Повышения эффективности языка ассемблера для написания программ можно добиться за счет объединения нескольких символических команд в группы, к которым можно обращаться Kaii к единому целому по од- ному признаку. Язык подобного типа называется макроассемблером. Программисты, использующие макроас-семблер, не должны интересоваться составом символических команд, входящих в программу, для них важна лишь выполняемая команда. Программы на мак-роассемблере более компактны, что обеспечиваег удобство их написания, отладки и внесения последую щих изменений. Оператор на языке ассемблера, так же как и на языке макроассемблера, записывается в виде строки, содержащей четыре поля: названия, операции,операнды,комментарии. Эти поля друг от друга отделяются раздели-тельными знаками, такими, как пробел, запятая, двоеточие, точка с запятой и т. д. В поле названия записывается символический адрес команды (метка). В результате трансляции метка будет заменена конкретным адресом команды в памяти. Метка команды позволяет обращаться к ней из любой точки программы. Под обращением к команде можно, например, понимать передачу ей управления для выполнения. Команды, к которым не будет обращения, могут не иметь метки. В поле операций записывается символическое обозначение кода операции выполняемой команды. В поле операндов указываются символические адреса данных, участвующих в операции. Комментарии используются для документирования и пояснения программы на языке ассемблера и на реализацию программы в машинных кодах влияния не оказывают. Поле комментария, как и метки, может отсутствовать. Поле операндов, как правило, должно быть записано в команде, а поле операции является обязательным. Возможна строка программы, в которой записан только комментарий. Ниже будут рассмотрены команды на символическом языке, реализованные в микропроцессоре серии К580ИК80. Команда пересылки из регистра в регистр MOV Pi, Ра. Команда занимает в памяти 1 байт, выполняется за пять тактов, время выполнения - 2,5 мкс. По команде содержимое регистра Ра передается в регистр Р,, при этом содержимое регистра Pj не изменяется. Команда пересылки из регистра в память MOV М, Р. Команда занимает в памяти 1 байт, выполняется за семь тактов, время выполнения - 3,5 мкс. По команде содержимое регистра Р передается в ячейку памяти С символическим адресом М. [0] [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] [13] [14] [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28] [ 29 ] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46] [47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58] [59] [60] [61] [62] [63] 0.017 |