Даны две переменные A и B. Переставить байты в переменных по следующей схеме: - Assembler
Формулировка задачи:
Даны две переменные A и B. Переставить байты в переменных по следующей схеме:
Начальная нумерация байт
A = 11 22 33 44
B = 55 66
После перестановки
A = 44 22 55 33
B = 66 11
не могу разобраться с byte ptr.
делаю в visual studio
long int a; a=11223344; int b =5566;
mov AL, byte ptr b[0]; xchg AL, byte ptr b[1] ; mov byte ptr b[0], AL ; mov AL, byte ptr b[1] ; xchg AL, byte ptr a[3] ; mov byte ptr b[1], AL ; mov AL, byte ptr a[2] ; xchg AL, byte ptr a[3]; mov byte ptr a[2], AL; mov AL, byte ptr a[0]; xchg AL, byte ptr b[1] ; mov byte ptr a[0], AL;
Решение задачи: «Даны две переменные A и B. Переставить байты в переменных по следующей схеме:»
textual
Листинг программы
// ConsoleApplication1.cpp: определяет точку входа для консольного приложения. // #include "stdafx.h" #include "locale.h" #include "stdio.h" #include "stdlib.h" int main() { int A; A = 0x11223344; short int B; B = 0x5566; printf("%x, %x\n", A, B); __asm { mov al, byte ptr B[0]; /* копируем значение B[0] в регист al*/ xchg al, byte ptr B[1]; /* меняем местами значение в регистре al=66 со значением в B[1]. al=55*/ xchg al, byte ptr A[1];/*меняем местами значение регистра al=55 со значением в A[1]. al=33 */ xchg al, byte ptr A[0];/*меняем местами значение регистра al=33 со значением в A[0]. al=44 */ xchg al, byte ptr A[3];/* меняем местами значение регистра al=44 со значением в A[3]. al=11*/ mov byte ptr B[0], al;/* копируем значение al=11 в B[0]*/ } printf("\n%x, %x", A, B); getchar(); return 0; }
Объяснение кода листинга программы
- Объявлены две переменные: A и B
- Значение переменной A устанавливается на 0x11223344
- Значение переменной B устанавливается на 0x5566
- Выводится текущее значение переменных A и B (должно вывести 0x11223344, 0x5566)
- В блоке ассемблера выполняются операции по перестановке байтов в переменных A и B
- После выполнения ассемблерного блока, выводится новое значение переменных A и B (должно вывести 0x44332211, 0x6655)
- Программа завершается, ожидая нажатия любой клавиши
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д