Даны две переменные 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
Листинг программы
  1. long int a;
  2. a=11223344;
  3. int b =5566;
Листинг программы
  1. mov AL, byte ptr b[0];
  2. xchg AL, byte ptr b[1] ;
  3. mov byte ptr b[0], AL ;
  4. mov AL, byte ptr b[1] ;
  5. xchg AL, byte ptr a[3] ;
  6. mov byte ptr b[1], AL ;
  7. mov AL, byte ptr a[2] ;
  8. xchg AL, byte ptr a[3];
  9. mov byte ptr a[2], AL;
  10. mov AL, byte ptr a[0];
  11. xchg AL, byte ptr b[1] ;
  12. mov byte ptr a[0], AL;

Решение задачи: «Даны две переменные A и B. Переставить байты в переменных по следующей схеме:»

textual
Листинг программы
  1. // ConsoleApplication1.cpp: определяет точку входа для консольного приложения.
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "locale.h"
  6. #include "stdio.h"
  7. #include "stdlib.h"
  8.  
  9.  
  10. int main()
  11. {
  12.     int A;
  13.     A = 0x11223344;
  14.     short int B;
  15.     B = 0x5566;
  16.  
  17.     printf("%x, %x\n", A, B);
  18.  
  19.     __asm {
  20.         mov al, byte ptr B[0];   /* копируем значение B[0] в регист al*/
  21.         xchg al, byte ptr B[1]; /* меняем местами значение в регистре al=66 со значением в B[1]. al=55*/
  22.         xchg al, byte ptr A[1];/*меняем местами значение регистра al=55 со значением в A[1]. al=33 */
  23.         xchg al, byte ptr A[0];/*меняем местами значение регистра al=33 со значением в A[0]. al=44 */
  24.         xchg al, byte ptr A[3];/* меняем местами значение регистра al=44 со значением в A[3]. al=11*/
  25.         mov byte ptr B[0], al;/* копируем значение al=11 в B[0]*/
  26.     }
  27.  
  28.     printf("\n%x, %x", A, B);
  29.  
  30.     getchar();
  31.     return 0;
  32. }

Объяснение кода листинга программы

  1. Объявлены две переменные: A и B
  2. Значение переменной A устанавливается на 0x11223344
  3. Значение переменной B устанавливается на 0x5566
  4. Выводится текущее значение переменных A и B (должно вывести 0x11223344, 0x5566)
  5. В блоке ассемблера выполняются операции по перестановке байтов в переменных A и B
  6. После выполнения ассемблерного блока, выводится новое значение переменных A и B (должно вывести 0x44332211, 0x6655)
  7. Программа завершается, ожидая нажатия любой клавиши

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 3.833 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы