Учебные материалы по математике | Лабораторная по ассемблеру | Matematiku5
Вузы по математике Готовые работы по математике Как писать работы по математике Примеры решения задач по математике Решить задачу по математике online

Лабораторная по ассемблеру


Лабораторная работа № 2

Выполнить Лабораторную работу № 6 (C++) с использованием фрагментов,
реализованных на языке Ассемблер.

В сишной части программы можно осуществлять только ввод и вывод информации!

Адрес двумерного можно положить в регистры esi, edi.

Чтобы взять значение по адресу, необходимо использовать запись [esi], [edi].

Чтобы перейти к следующему элементу, необходимо увеличить значение адреса на количество байт одного элемента.

Например:

#include <iostream>

using namespace std;

void main()

{

int n = 2, m = 2;

int **p = new int*[n];

for(int i = 0; i < n; ++i)

p[i] = new int [m];

p[0][0] = 111;

p[0][1] = 222;

p[1][0] = 333;

p[1][1] = 444;

int a, b, c;

_asm

{

mov esi, p // положили адрес строки матрицы

mov edi,[esi] // положили адрес первого элемента первой строки матрицы

mov eax,[edi] // положили первый элемент первой строки матрицы

mov a, eax

add esi,4 // перещли ко второй строке матрицы

mov edi,[esi] // положили адрес второй строки матрицы

mov ebx, [edi] // положили первый элемент второй строки матрицы

mov b, ebx

add edi,4 // перешли ко второму элементу второй строки матрицы

mov ecx,[edi] // положили второй элемент второй строки матрицы

mov c, ecx

}

cout << "p[0][0] = " << a << endl;

cout << "p[1][0] = " << b << endl;

cout << "p[1][1] = " << c << endl;

}

Наташа

Автор

Наташа — контент-маркетолог и блогер, но все это не мешает ей оставаться адекватным человеком. Верит во все цвета радуги и не верит в теорию всемирного заговора. Увлекается «нефрохиромантией» и тайно мечтает воссоздать дома Александрийскую библиотеку.

Распродажа дипломных

 Скидка 30% по промокоду Diplom2020

А ты боишься COVID-19?

 Пройди опрос и получи промокод