- •Содержание
- •Переслать X байт по адресу y из порта z
- •Переслать X байт по адресу y в адрес z
- •Переслать X байт по адресу/в порт y из/в порт/память z
- •Организовать пдп пересылку X байт
- •Пример программы процессора со стековой организацией:
- •Пример программы процессора с аккумулятором:
- •Всякая каша
- •Билет 2
- •Билет 3
- •Билет 4
- •Билет 5
- •Лера скинула Билет 1
- •Билет 6
- •Билет 7
- •Билет 8
- •Билет 9
- •Билет 10
- •Сопроцессор
Билет 10
10. Составить функциональную схему расширения адресного пространства процессора К580 до 1 Мбайта методом базовых регистров. Привести ее преимущества и недостатки. Привести фрагмент программы, обеспечивающей пересылку ZZ байт из расширенной памяти процессора в базовую. Указать используемые способы адресации.
Код (такой же как в 9, но YYYY – начальный адрес в расширенной памяти, PPPP – начальный адрес в базовой памяти, количество регистров можно взять любое):
MVI A, XX ; непосредственная
OUT P1 ; запись в регистр проекцию
LXI B, YYYY ; непосредственная
LXI D, PPPP ; непосредственная
MVI B, 0 ; непосредственная
NEXT:
INR B ; В++ регистровая
MOV H, B ; HL<-BC регистровая
MOV L, C ; регистровая
MOV M, A ; M[HL]->A косвенная регистровая
MOV H, D ; HL<-DE регистровая
MOV L, E ; регистровая
MOV A, M ; А->M[HL] косвенная регистровая
INX B ; ВС++ регистровая
INX D ; DE++ регистровая
MVI A, ZZ ; непосредственная
CMP B ; регистровая
JNZ NEXT
Преимущества: Позволяет переносить в адресное пространство одновременно несколько страниц главной памяти; нет необходимости задавать адрес окна в регистре; в данном методе существенно то, что определен многозадачный режим работы, т.е. возможна организация, когда одна задача принимает данные, другая – обрабатывает и т.д.
Недостатки: Используется больше аппаратных средств; могут совпадать проекции окон.
Сопроцессор
(Среднее арифметическое и из него же можно получить сумму массива)
.386
.model flat, c
.code
; Определение публичных и внешних имен
public Srednia
Srednia proc C, arrptr:DWORD, arrlen:DWORD
local tmp ; временная перем., нужна из-за кривизниы Ынтеля
mov esi, arrptr ; esi-> на массив
mov ecx, arrlen ; кол-во элементов
fldz ; грузим в FPU нулик
op: lodsd ; в EAX - очередной элемент массива
mov dword ptr tmp, eax ; сохраняем его в tmp
fadd dword ptr tmp ; и уже отсюда прибавляем
loop op ; ECX раз
fild arrlen ; грузим в FPU кол-во элементов
fdivp st(1), st(0) ; и сумму эл-тов делим на их кол-во
fstp dword ptr tmp ; сохраняем среднее в tmp
mov eax, dword ptr tmp ; и только из него в EAX
ret
Srednia endp
End
