Files
templates/Labv3.cpp
2024-09-10 22:24:24 +03:00

69 lines
2.6 KiB
C++
Executable File
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Работа 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. Напишите программу, которая дает разный результат в разных
// моделях памяти.