Добавил:
Mymnan
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Сборка Часть1 / avmis_labs / неразобрано / 501 / Лаб_ММХ / Баран Т.Ю / mmx2
.cpp#include <iostream>
#include <windows.h>
#include <conio.h>
using namespace std;
void showMMXRegisters();
void minus();
int main()
{
int i, n, j, k;
char str2[] = "Tatyana Baran";
unsigned char str[100];
char c;
printf("Ar the beginning:\n\n");
showMMXRegisters();
printf("%s", str2);
n = strlen(str2);
str[n] = '\0';
k = n+1;
while(k<16)
{
str[k] = '\0';
k++;
}
for (i = 0; i < n; i++)
str[i] = str2[i];
printf("\n");
for (i = 0; i < n; i++)
printf("%d ", (int) str[i]);
printf("\n");
i = 0;
__asm {
mov esi, i
movq mm0, str[esi]
}
for (i = 0, j = 8; j < n; j += 8)
{
printf("\nRegisters\n\n");
__asm {
mov edi, j
movq mm1, str[edi]
}
showMMXRegisters();
minus();
showMMXRegisters();
__asm {
mov esi, i
movq str[esi], mm0
}
}
for (i = 0; i < 8; i++)
printf("%u ", str[i]);
c = getch();
return 0;
}
void minus()
{
__asm {
psubb mm0, mm1
}
}
void showMMXRegisters()
{
const int N = 8;
unsigned char str[N+1];
for (int i = 0; i < N; i++) {
str[i] = '0';
}
str[N] = 0;
__asm {
movq str, mm0
}
printf("MM0: ");
for (int i = 0; i < N; i++) printf("%u ", str[i]);
printf("\n");
__asm {
movq str, mm1
}
printf("MM1: ");
for (int i = 0; i < N; i++) printf("%u ", str[i]);
printf("\n");
__asm {
movq str, mm2
}
printf("MM2: ");
for (int i = 0; i < N; i++) printf("%u ", str[i]);
printf("\n");
__asm {
movq str, mm3
}
printf("MM3: ");
for (int i = 0; i < N; i++) printf("%u ", str[i]);
printf("\n");
__asm {
movq str, mm4
}
printf("MM4: ");
for (int i = 0; i < N; i++) printf("%u ", str[i]);
printf("\n");
__asm {
movq str, mm5
}
printf("MM5: ");
for (int i = 0; i < N; i++) printf("%d ", str[i]);
printf("\n");
__asm {
movq str, mm6
}
printf("MM6: ");
for (int i = 0; i < N; i++) printf("%d ", str[i]);
printf("\n");
__asm {
movq str, mm7
}
printf("MM7: ");
for (int i = 0; i < N; i++) printf("%d ", str[i]);
printf("\n\n");
}