48264 (Программная модель процессоров семейства X86), страница 2

2016-07-30СтудИзба

Описание файла

Документ из архива "Программная модель процессоров семейства X86", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48264"

Текст 2 страницы из документа "48264"

Логическая интерпретация этих типов:

  • Целый тип со знаком — двоичное значение со знаком, размером 8, 16 или 32 бита. Знак в этом двоичном числе содержится в 7, 15 или 31-м бите соответственно. Ноль в этих битах в операндах соответствует положительному числу, а единица — отрицательному. Отрицательные числа представляются в дополнительном коде. Числовые диапазоны для этого типа данных следующие:

    • 8-разрядное целое — от –128 до +127;

    • 16-разрядное целое — от –32 768 до +32 767;

    • 32-разрядное целое — от –231 до +231–1.

  • Целый тип без знака — двоичное значение без знака, размером 8, 16 или 32 бита. Числовой диапазон для этого типа следующий:

    • байт — от 0 до 255;

    • слово — от 0 до 65 535;

    • двойное слово — от 0 до 232–1.

  • Указатель на память двух типов:

    • ближнего типа — 32-разрядный логический адрес, представляющий собой относительное смещение в байтах от начала сегмента. Эти указатели могут также использоваться в сплошной (плоской) модели памяти, где сегментные составляющие одинаковы;

    • дальнего типа — 48-разрядный логический адрес, состоящий из двух частей: 16-разрядной сегментной части — селектора, и 32-разрядного смещения.

  • Цепочка — представляющая собой некоторый непрерывный набор байтов, слов или двойных слов максимальной длины до 4 Гбайт.

  • Битовое поле представляет собой непрерывную последовательность бит, в которой каждый бит является независимым и может рассматриваться как отдельная переменная. Битовое поле может начинаться с любого бита любого байта и содержать до 32 бит.

  • Неупакованный двоично-десятичный тип — байтовое представление десятичной цифры от 0 до 9. Неупакованные десятичные числа хранятся как байтовые значения без знака по одной цифре в каждом байте. Значение цифры определяется младшим полубайтом.

  • Упакованный двоично-десятичный тип представляет собой упакованное представление двух десятичных цифр от 0 до 9 в одном байте. Каждая цифра хранится в своем полубайте. Цифра в старшем полубайте (биты 4–7) является старшей.

Рис. 4. Основные логические типы данных микропроцессора

Язык микроопераций. Ассемблер.

Структура программы на ассемблере:

Model small ;модель программы, или же количество памяти на сегмент

.data ;сегмент данных

;описание переменных

.stack 100h ;сегмент стека

.code ;сегмент данных

;процедуры, макрокоманды

main:

;основная программа

end main

Директивы резервирования памяти

Для описания простых типов данных в программе используются специальные директивы резервирования и инициализации данных, которые, по сути, являются указаниями транслятору на выделение определенного объема памяти. Если проводить аналогию с языками высокого уровня, то директивы резервирования и инициализации данных являются определениями переменных.

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

Директивы резервирования и инициализации данных простых типов имеют формат:

Рис. 5. Директивы описания данных простых типов

На рис. 5 использованы следующие обозначения:

  • ? показывает, что содержимое поля не определено, то есть при задании директивы с таким значением выражения содержимое выделенного участка физической памяти изменяться не будет. Фактически, создается неинициализированная переменная;

  • значение инициализации — значение элемента данных, которое будет занесено в память после загрузки программы. Фактически, создается инициализированная переменная, в качестве которой могут выступать константы, строки символов, константные и адресные выражения в зависимости от типа данных. Подробная информация приведена в приложении 1;

  • выражение — итеративная конструкция с синтаксисом, описанным на рис. 5.17. Эта конструкция позволяет повторить последовательное занесение в физическую память выражения в скобках n раз.

  • имя — некоторое символическое имя метки или ячейки памяти в сегменте данных, используемое в программе.

  • db — резервирование памяти для данных размером 1 байт. Директивой db можно задавать следующие значения:

    • выражение или константу, принимающую значение из диапазона:

      • для чисел со знаком –128...+127;

      • для чисел без знака 0...255;

    • символьную строку из одного или более символов. Строка заключается в кавычки. В этом случае определяется столько байт, сколько символов в строке.

  • dw — резервирование памяти для данных размером 2 байта. Директивой dw можно задавать следующие значения:

    • выражение или константу, принимающую значение из диапазона:

      • для чисел со знаком –32 768...32 767;

      • для чисел без знака 0...65 535;

    • выражение, занимающее 16 или менее бит, в качестве которого может выступать смещение в 16-битовом сегменте или адрес сегмента;

    • 1- или 2-байтовую строку, заключенная в кавычки.

  • ddрезервирование памяти для данных размером 4 байта. Директивой dd можно задавать следующие значения:

    • выражение или константу, принимающую значение из диапазона:

      • для i386 и выше:

        • для чисел со знаком –2 147 483 648...+2 147 483 647;

        • для чисел без знака 0...4 294 967 295;

    • относительное или адресное выражение, состоящее из 16-битового адреса сегмента и 16-битового смещения;

    • строку длиной до 4 символов, заключенную в кавычки.

  • df — резервирование памяти для данных размером 6 байт;

  • dpрезервирование памяти для данных размером 6 байт. Директивами df и dp можно задавать следующие значения:

    • выражение или константу, принимающую значение из диапазона:

        • для чисел со знаком –2 147 483 648...+2 147 483 647;

        • для чисел без знака 0...4 294 967 295;

    • относительное или адресное выражение, состоящее из 32 или менее бит (для i80386) или 16 или менее бит (для младших моделей микропроцессоров Intel);

    • адресное выражение, состоящее из 16-битового сегмента и 32-битового смещения;

    • строку длиной до 6 байт, заключенную в кавычки.

  • dq — резервирование памяти для данных размером 8 байт. Директивой dq можно задавать следующие значения:

    • относительное или адресное выражение, состоящее из 32 или менее бит

    • константу со знаком из диапазона –263...263–1;

    • константу без знака из диапазона 0...264–1;

    • строку длиной до 8 байт, заключенную в кавычки.

  • dt — резервирование памяти для данных размером 10 байт. Директивой dt можно задавать следующие значения:

    • относительное или адресное выражение, состоящее из 32 или менее бит

    • адресное выражение, состоящее из 16-битового сегмента и 32-битового смещения;

    • константу со знаком из диапазона –279...279-1;

    • константу без знака из диапазона 0...280-1;

    • строку длиной до 10 байт, заключенную в кавычки;

    • упакованную десятичную константу в диапазоне 0...99 999 999 999 999 999 999.

Очень важно уяснить себе порядок размещения данных в памяти. Он напрямую связан с логикой работы микропроцессора с данными. Микропроцессоры Intel требуют следования данных в памяти по принципу: младший байт по младшему адресу.

Для иллюстрации данного принципа рассмотрим листинг 1, в котором определим сегмент данных. В этом сегменте данных приведено несколько директив описания простых типов данных.

Листинг 1. Пример использования директив резервирования и инициализации данных. Программа вводит строку с клавиатуры.

model small

.stack 100h

.data

message db 'Массив байт, содержащих символьные переменные',10,13 '$'

po db 1, 3, 4, 5, 0fh, 0bh, 32, 01011b

perem_1 db 0ffh

perem_2 dw 3a7fh

perem_3 dd 0f54d567ah

k1 db 10

k2 db ?

mas db 10 dup ('?')

adr dw k1

adr_full dd perem_3

.code

start:

mov ax,@data

mov ds,ax

mov ah,0ah

mov dx,offset message ; mov dx, adr

int 21h

mov ax,4c00h

int 21h

end start


Система команд


Формат предложения ассемблера

[имя метки:] КОП [операнд1] [,операнд2] [;комментарии]

Команды пересылки данных

mov ,

можно

Нельзя

Должно быть

mov ах, вх; ах:=вх

mov ах,0а2h; ах:= 0а2h

mov per1,ax

mov ax,bh

mov per1, per2

mov ds,per1

mov cs,ds

mov cs,ax; пара cs:ip содержит адрес следующей команды

mov ah, bh

mov al, per2

mov per1,al

mov ax, per1

mov ds,ax

mov ax,ds либо push ds

mov cs,ax pop cs

xchg , ; двунаправленный обмен данными а:=в; в:=с; с:=а

xchg dl,dh; меняет местами данные

Команды ввода-вывода в порт

in аккумулятор,номер_порта — ввод в аккумулятор из порта

out порт,аккумулятор — вывод содержимого аккумулятора в порт 

Команды работы с адресами и указателями памяти

lea назначение,источник — загрузка эффективного адреса источника в регистр-назначение;

lea dx, x ; аналогично команде mov dx,offset x

lds назначение,источник — загрузка эффективного адреса источника в регистр назначения и загрузка указателя (адрес сегмента где содержится источник) в регистр сегмента данных ds;

les назначение,источник —-//-регистр дополнительного сегмента данных es;

lgs назначение,источник — -//- регистр дополнительного сегмента данных gs;

lfs назначение,источник — -//- регистр дополнительного сегмента данных fs;

lss назначение,источник — -//- регистр сегмента стека ss.

les dx,per1 ;полный указатель на per1 в пару es:dx

Команды работы со стеком

Для работы со стеком предназначены три регистра:

ss — сегментный регистр стека;

sp/esp — регистр указателя стека;

bp/ebp — регистр указателя базы кадра стека.

push источник — запись значения источник в вершину стека.

Алгоритм работы:

  • уменьшить значение указателя стека esp/sp на 4/2 (в зависимости от значения атрибута размера адреса — use16 или use32);

  • записать источник в вершину стека (адресуемую парой ss:esp/sp).

Размер записываемых значений — слово или двойное слово. Также в стек можно записывать непосредственные значения. В стек можно класть значение сегментного регистра cs. Другой интересный момент связан с регистром sp. Команда push esp/sp записывает в стек значение esp/sp по состоянию до выдачи этой команды

Команда push используется совместно с командой pop для записи значений в стек и извлечения их из стека

pop назначение — запись значения из вершины стека по месту, указанному операндом назначение. Значение при этом “снимается” с вершины стека.


Push ax

Push bx

push cx

p

ss:bp

op cx

pop bx

pop ax

push ax

pop bx ; аналогично команде mov bx,ax

pusha - размещение в стеке регистров общего назначения в следующей последовательности: ax, cx, dx, bx, sp, bp, si, di

pushad - размещение в стеке регистров общего назначения в следующей последовательности: eax, ecx, edx, ebx, esp, ebp, esi, edi

pushf - размещение в вершине стека (ss:sp) содержимого регистра флагов flags

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
428
Средний доход
с одного платного файла
Обучение Подробнее