Шпаргалка по предмету "Основы информатики"

Автор работы: Пользователь скрыл имя, 18 Марта 2015 в 02:52, шпаргалка

Описание работы

Ответы на вопросы к экзамену по предмету "Основы информатики".

Файлы: 1 файл

Архитектура ЭВМ.docx

— 219.75 Кб (Скачать файл)

В качестве операнда порт можно использовать регистр DX, что позволяет легко изменять номер порта, например при необходимости пересылать одни и те же данные в несколько различных портов.

Команды пересылки адреса передают не содержимое переменных, а их адреса.

Команда загрузки исполнительного адреса

Команда LEA (load effective address — загрузить исполнительный адрес) пересылает смещение ячейки памяти в любой 16-битовый регистр общего назначения, регистр указателя или индексный регистр.

Команда загрузки указателя и регистра сегмента данных LDS

Команда LDS (load pointer using DS — загрузить указатель с использованием регистра DS) считывает из памяти 32-битовое двойное слово и. загружает первые 16 битов в заданный регистр, а следующие 16 битов - в регистр сегмента данных DS.

Команда загрузки указателя и регистра дополнительного сегмента LES

Команда LES (load pointer using ES - загрузить указатель с использованием регистра ES) идентична команде LDS, но загружает номер блока в регистр ES, а не в DS.

Команды помещения флагов в стек PUSHF и извлечения флагов из стека POPF

Эти команды пересылают содержимое регистра флагов в стек и обратно. Они в сущности идентичны командам PUSH и POP, но в них не требуется указывать операнд, так как под ним подразумевается регистр флагов.

Как и в случае команд PUSH и POP, команды PUSHF и POPF всегда используются парами. Другими словами, каждой команде PUSHF должна соответствовать исполняемая позже команда POP.

Арифметические команды

Прежде чем приступить к изучению арифметических команд, рассмотрим такую форму представления чисел, как десятичные числа.

Десятичные числа — специальный вид представления числовой информации, в основу которого положен принцип кодирования каждой десятичной цифры числа группой разрядов из 4-х бит. При этом каждый байт числа содержит 1 или 2 десятичные цифры в так называемом двоично-десятичном коде (BCD — Binary Coded Decimal), Микропроцессор может хранить такие числа в2-х форматах:

-    упакованный формат — в байте 2 десятичные цифры, при этом старшая  цифра занимает старшие 4 бита, диапазон  представления чисел в одном  байте составляет 00-99;

-    неупакованный формат - в байте 1 цифра в 4 младших битах. Старшие  биты все имеют нулевое значение  и называются зоной.

Описываются BCD-числа неупакованные, как DB, а упакованные как DT. Цифры неупакованного числа перечисляются через “,” а упакованного- как обычное десятичное число, например:

PER_1 DB 2,3,4,5,6,8,2 ;неупаков. 2865432

PER_2 DT 9875645 ; упаков. 9875645.

Как мы увидим из рассмотрения арифметических команд, описание BCD-чисел и алгоритм их обработки являются делом вкуса программиста.

Арифметические команды сведены в таблицу

 

 

 

 

 

15.Ассемблер. Команды переходов. Процедуры.

Язык ассемблера (автокод) — язык программирования низкого уровня. В отличие от языка машинных кодов, позволяет использовать более удобные для человека мнемонические (символьные) обозначения команд. При этом для перевода программы с языка ассемблера в понимаемый процессором машинный код требуется специальная программа, называемая ассемблером. Ассемблер - это программное средство, предназначенное для преобразования исходного текста программы, содержащего мнемонические имена команд и операндов, в последовательность двоичных кодов, которые представляют собой исполняемые команды для процессора.

Команды перехода

Команда перехода — команда процессора, которая нарушает естественный порядок исполнения команд, вынуждая выбирать и исполнять последующие команды с произвольно заданного адреса. Используется для организации условных операторов, циклов, для связи с подпрограммами. Если счётчик команд программно доступен (как регистр), любая команда модификации счётчика команд будет служить командой перехода. Команда перехода нарушает естественный порядок выполнения команд посредством загрузки в программный счетчик адреса команды, к которой осуществляется переход. Команды, изменяющие содержимое регистров CS и IP, называются межсегментными переходами, а модифицирующие лишь содержимое IP - внутрисегментными. Межсегментные передачи управления реализуются только командами безусловных переходов.

Команды условных переходов

Все команды условных переходов имеют следующий формат:

Второй байт содержит 8-битное смещение (в доп. коде) относительно следующей команды в программе. Эффективный адрес перехода находится путем расширения знака D8 и прибавления его к содержимому IP после инкремента IP для адресации следующей по порядку команды. Отрицательное смещение - переход назад, положительное - вперед относительно следующей команды (адрес перехода находится в диапазоне от -128 до +127 байт).

Команды безусловных переходов

Имеется пять команд безусловного перехода. Три команды осуществляют переход к точке в текущем сегменте кода (внутрисегментные), а две - в другой сегмент (межсегментные). Все команды однооперандные и имеют одинаковую мнемонику JMP.

Форматы команд:

а) внутрисегментные:

прямой короткий [IP]:=[IP] + DIS

прямой близкий [IP]:=[IP] + DISP

косвенный [IP] ‹— [EA]

б)межсегментные:

прямой далекий [IP] ‹— DISP     [CS] ‹— Сегментный адрес

косвенный [IP] ‹— [EA]     [IP] ‹— [EA+2]

Внутрисегментные переходы реализуются с помощью 8-битного смещения от текущего содержимого IP, 16-битного смещения от IP или получения адреса перехода из ячейки памяти, адресуемой командой. Вычисление 8-битного смещения реализуется так же, как в командах условных переходов, и имеет те же ограничения. Вычисление 16-битного смещения выполняется аналогично, но переход производится в любую точку текущего сегмента. Благодаря игнорированию переноса из 16-го бита текущий сегмент интерпретируется как кольцо. Следовательно, хотя ассемблер вычисляет смещение как число в дополнительном коде, диапазон составляет от -[IP] до 216-[IP] (а не от 215 до 215-1).

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

Процедура – группа команд для решения конкретной подзадачи.

Синтаксис процедуры:

имя_процедуры PROC [[модификатор_языка ] язык] [расстояние ]

команды

[имя_процедуры ] ENDP

Пример

model small

.stack 100h

.data

.code

my_proc procnear

ret

my_proc endp

start:

end start

процедуру можно распологать в конце программы либо вкладывать в другую. Во втором случае неоходимо предусмотреть обход тела процедуры, ограниченного директивами PROC и ENDP, с помощью JMP/

Команда CALL осуществляет вызов процедуры (подпрограммы). Синтаксис команды:

call [модификатор] имя_процедуры

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

Команда RET считывает адрес возврата из стека и загружает его в регистры CS и EIP/IP, тем самым возвращая управление на команду, следующую в программе за командой CALL Синтаксис команды:

ret [число]

Необязательный параметр [число] обозначает количество элементов, удаляемых из стека при возврате из процедуры.

Как и в случае команды JMP, вызов процедуры командой CALL может быть внутрисегментным и межсегментным.

С директивой PROC используются еще несколько директив: ARG, RETURNS, LOCAL, USES. Их назначение — помочь программисту выполнить некоторые рутинные действия при вызове и возврате из процедуры (заодно и повысив надежность кода).

Директивы ARG и RETURNS назначают входным и выходным параметрам процедуры, передаваемым через стек, символические имена. Директива USES в качестве параметров содержит имена используемых в процедуре регистров.

Необязательный параметр [число] задает значение, удаляемое из стека при возврате из процедуры - в байтах (use16) или в словах (use32)

Параметры процедур

Передача значений в процедуру называется передачей параметров.

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

Передавать параметры можно

·      через регистры

·      через стек

·      через общую область памяти

·      с помощью директив extern и public

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

16.Ассемблер. Команды управления циклами. Команды  прерывания.

Язык ассемблера (автокод) — язык программирования низкого уровня. В отличие от языка машинных кодов, позволяет использовать более удобные для человека мнемонические (символьные) обозначения команд. При этом для перевода программы с языка ассемблера в понимаемый процессором машинный код требуется специальная программа, называемая ассемблером.

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

Команды  управления  циклами  -  это   близкие   (NEAR)  относительные  переходы.  Операнд - метка  является  8-битным   смещением   (относительно  текущего состояния указателя команд  IP),  поэтому команды могут выполнить  переход только на 127 байт вперед или на 128 байт назад.

Команда LOOP Производит декремент регистра  CX  и, если  CX не равен  0, происходит  переход к началу цикла. Регистр флажков не модифицируется. Формат команды:

Примечание:  Команда эквивалентна последовательности  DEC и  JNZ,  но экономит байт  памяти и один цикл времени.

Команды  LOOPE / LOOPZ  Производят  декремент  регистра  CX  и, если  CX  не равен 0, а флажок  ZF  равен  1, происходит  переход  к  началу  цикла. Длина  команд  равна  2  байтам, а  время  выполнения -  6 тактам (без  перехода) и 18 (с переходом). Регистр флажков не модифицируется. 

Команды  LOOPNE / LOOPNZ Производят  декремент  регистра  CX  и, если  CX  не равен 0, а флажок ZF  равен  0, происходит  переход  к  началу  цикла. Длина  команд  равна  2  байтам, а  время  выполнения -  6 тактам (без  перехода) и 18 (с переходом). Регистр флажков не

Команды прерываний

Прерывание — это приостанов выполнения программы с целью выполнения какой-то более важной или нужной в данный момент другой программы или процедуры, после завершения которой продолжается выполнение программы с того места, где она была прервана. Прерывание позволяет компьютеру приостановить любое свое действие и временно переключиться на другое, как заранее запланированное, так и неожиданное, вызванное непредсказуемой ситуацией в работе машины или ее компонента. Каждое прерывание вызывает загрузку определенной программы, предназначенной для обработки возникшей ситуации — программы обработки прерываний.

Команды прерывания позволяют воспользоваться встроенными системными ресурсами (программами обработки прерываний) из программы пользователя. Под системными ресурсами понимаются программы, входящие в главную исполнительную программу ЭВМ, которая называется BIOS — базовая система ввода-вывода. В функции этой системы входит: запоминание символов, набираемых на клавиатуре, изображение символов на экране дисплея, обмен данными между устройствами, присоединенными к ЭВМ: дисководами, принтером и т.п. Чтобы обратиться к этим возможностям ЭВМ, пользовательская программа должна быть прервана и должна быть выполнена системная функция, после чего пользовательская программа продолжается со следующей после обращения к системным функциям команды. Эти функциональные возможности и выполняют команды прерывания, которые описаны в таблице

Формат команд прерывания

Мнемокод

Формат

INT

INT тип_прерывания

INTO

INTO

IRET

IRET


В команде прерывания INT тип_прерывания представляет собой номер прерывания, которых в ЭВМ IBM насчитывается 256 (типы прерываний имеют номера 0-255):

-  тип 0 —  возникает при делении на 0 или  если частное от деления превышает  разрядную сетку;

Информация о работе Шпаргалка по предмету "Основы информатики"