Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тест2.doc
Скачиваний:
75
Добавлен:
30.03.2015
Размер:
203.26 Кб
Скачать
  1. Архитектура ia32. Аппарат виртуальной памяти (рисунки необязательны).

Элементарное программно-аппаратное решение - использование возможности базирования адресов. Суть его состоит в следующем: пусть имеется исполняемый программный модуль. Виртуальное адресное пространство этого модуля лежит в диапазоне [0, Акон]. В ЭВМ выделяется специальный регистр базирования Ябаз., который содержит физический адрес начала области памяти, в которой будет размещен код данного исполняемого модуля. При этом исполняемые адреса, используемые в модуле будут автоматически преобразовываться в адреса физического размещения данных путем их сложения с регистром Кбаз.

Рассмотрим более сложные механизмы организации виртуальной памяти. Пусть имеется вычислительная система, функционирующая в мультипрограммном режиме. Один из них занимает ресурсы ЦП. Другие ждут завершения операций обмена, третьи - готовы к исполнению и ожидают предоставления ресурсов ЦП. При этом происходит завершение выполнявшихся процессов и ввод новых, это приводит к возникновению проблемы фрагментации ОЗУ. При размещении новых программ/процессов в ОЗУ ЭВМ (для их мультипрограммной обработки) образуются свободные фрагменты ОЗУ между программами/процессами. Суммарный объем свободных фрагментов может быть достаточно большим, но, в то же время, размер самого большого свободного фрагмента недостаточно для размещения в нем новой программы/процесса. В этой ситуации возможна деградация системы. Путь решения этой проблемы - использование более развитых механизмов организации ОЗУ и виртуальной памяти,

  1. Архитектура ia32. Организация страничной памяти.

Страничная организация памяти предполагает разделение всего пространства ОЗУ на блоки одинакового размера - страницы. Обычно размер страницы равен 2k В этом случае адрес, используемый в данной ЭВМ, будет иметь следующую структуру:

Модельная (упрощенная) схема организации функционирования страничной памяти ЭВМ следующая: Пусть одна система команд ЭВМ позволяет адресовать и использовать m страниц размером 2k каждая. То есть виртуальное адресное пространство программы/процесса может использовать для адресации команд и данных до m страниц. В виртуальном адресе размер поля определяется максимальным числом виртуальных страниц - m.

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

1) Получить среднее арифметическое трёх чисел. Результат записать в стек.

.model tiny

.code

org 100h

start:

; <al:ah> = <ax>;

mov al,A

add al,B

add al,C

mov bl,3

div bl

xor ah,ah

push ax

;pop ax

ret

.data

A db 35

B db 16

C db 80

end start

2) Получить ab. Результат записать в стек.

.model tiny

.code

org 100h

start:

mov ax,1

mov cl,b

cmp cl,0

jg then_more ; если b>0

jz then_zero ; если b=0

then_more:

mul a

loop then_more

then_zero:

push ax

;pop ax

ret

.data

a dw 7

b db 4

end start

3) Получить сумму N первых членов арифметической прогрессии с первым членом равным a. Результат записать в стек.

model tiny

.code

org 100h

start:

mov cl,N

xor bl,bl

mov al,a

summa_loop:

add bl,al

add al,d

loop summa_loop

push bx

;pop ax

ret

.data

a db 7

d db 2

N db 5

end start

4) Получить сумму N первых членов геометрической прогрессии с первым членом равным b. Результат записать в стек.

.model tiny

.code

org 100h

start:

mov cl,N

xor bl,bl

mov al,b

summa_loop:

add bl,al

mul q

loop summa_loop

push bx

;pop bx

ret

.data

b db 3

q db 2

N db 5

end start

5) Сравнить два числа и большее записать в стек.

.model tiny

.code

org 100h

start:

mov ax,a

cmp ax,b

jl menshe

jmp bolsheravno

menshe:

mov ax,b

bolsheravno:

push ax

;pop ax

ret

a dw 2

b dw 3

end start

6) Вычислить b2–4ac. Результат записать в стек.

.model tiny

.code

org 100h

start:

mov ax,b

mul b

mov bx,ax

mov ax,4

mul a

mul c

sub bx,ax

push bx

;pop bx

ret

.data

a dw 2

b dw 10

c dw 5

end start

7) Вычислить a∙2b, не используя операцию умножения (0<b<8). Результат записать в стек.

.model tiny

.code

org 100h

start:

mov cl,b

mov ax,2

cmp b,1

je next

dec cl

vstepenb_loop:

add ax,ax

loop vstepenb_loop

next:

mov cl,a

cmp a,0

jg apositive

jl anegative

;xor bx,bx

jmp result

apositive:

add bx,ax

dec cl

cmp cl,0

jnz apositive

jmp result

anegative:

sub bx,ax

inc cl

cmp cl,0

jnz anegative

jmp result

result:

push bx

;pop bx

ret

.data

a db 0

b db 3

end start