69 lines
2.6 KiB
C++
Executable File
69 lines
2.6 KiB
C++
Executable File
// Работа LAB3
|
||
// Шаблон программы
|
||
// Массивы и способы адресации
|
||
|
||
// Директивы Препроцессора
|
||
// Включение файлов в которых описаны прототипы ф-ций
|
||
// с целью сообщения компилятору о типах ф-ций и их аргументах
|
||
#include <dos.h>
|
||
#include <bios.h>
|
||
#include <stdio.h>
|
||
#include <conio.h>
|
||
// #pragma inline // Подключение встроенного Ассемблера
|
||
|
||
// Объявление переменных
|
||
int iB=0x1234;
|
||
int A[90]={0,1,2,3,4,5,6,7,8,9};
|
||
|
||
// Основная программа - функция
|
||
// void - она не возвращ значений
|
||
void main(void)
|
||
{
|
||
// Объявление переменных
|
||
int iA=0x5678;
|
||
clrscr();
|
||
printf ("\n Программа заполнения массива \n");
|
||
// Заполняем массив на уровне команд Си
|
||
for (int i=0; i<10; i++)
|
||
{
|
||
// ??????? Вставте команды
|
||
printf (" \n %d ", A[i]);
|
||
}
|
||
getch();
|
||
// Заполняем массив из ассемблера
|
||
asm mov si,0
|
||
e2:
|
||
asm {
|
||
lea bx,A
|
||
mov cx,10
|
||
mov ax,0
|
||
};
|
||
e1: asm mov [bx],ax // ???? Выберите способ адресации
|
||
asm add bx,2
|
||
asm loop e1
|
||
// ??? Выведите одном массив
|
||
asm add si,10 // Задается шаг массива
|
||
asm mov ax,100
|
||
asm cmp ax,si
|
||
asm ja e2
|
||
// ??? Выведите двумерный массив
|
||
for (i=0; i<20; i=i+4)
|
||
{ printf (" \n ");
|
||
for (int j=0; j<4; j++)
|
||
{ printf (" "); // ???? Вставте команду
|
||
}
|
||
}
|
||
getch();
|
||
}
|
||
|
||
// Задания
|
||
// 1. Напишите две программы заполнения одномерного массива на Си и Асс
|
||
// выведите на экран значения элементов массива
|
||
// 2. Считайте массив двумерным. Заполните его четные строки любым числом,
|
||
// используя разные способы адресации
|
||
// - косвенно-регистровая адресация
|
||
// - базово-индексная адресация
|
||
// Сравните количество команд при двух способах адресации.
|
||
// 3. Определите место массива в сегменте данных с использов. TD
|
||
// 4. Напишите программу, которая дает разный результат в разных
|
||
// моделях памяти.
|