Преобразовать код из С++ в код Ассемблера - Assembler

Узнай цену своей работы

Формулировка задачи:

Прошу о помощи. В условии надо поменять местами первую четверть массива со второй, а третью с четвертой. Нужно преобразовать данный кусок кода
Листинг программы
  1. int a[16] = { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 };
  2. int t;
  3. for (int i = 0; i < 4; i++)
  4. {
  5. t = a[i];
  6. a[i] = a[4 + i];
  7. a[4 + i] = t;
  8. }
  9. for (int i = 0; i < 4; i++)
  10. {
  11. t = a[i + 8];
  12. a[i + 8] = a[12 + i];
  13. a[12 + i] = t;
  14. }
Результат:
Листинг программы
  1. a[16] = {2, 2, 2, 2, 1, 1, 1, 1, 4, 4, 4, 4, 3, 3, 3, 3};

Решение задачи: «Преобразовать код из С++ в код Ассемблера»

textual
Листинг программы
  1. .MODEL  Small
  2.  
  3. .STACK  100h
  4.  
  5. .DATA
  6.  
  7.     a       db  1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4
  8.     LenArray    equ $-a
  9.     LenQuarter  equ LenArray / 4
  10.  
  11. .CODE
  12.  
  13. main    proc far
  14.         ; пролог
  15.     mov ax,@data
  16.         mov ds,ax         ; DS = сегмент .DATA
  17.  
  18.  
  19. ;**********************************************
  20. ; Обмен 1 и 2 четвертей
  21.     lea si, a
  22.     lea di, a+LenQuarter
  23.  
  24.         mov     cx, LenQuarter
  25. @@1and2:
  26.         mov     al, [si]
  27.         mov     bl, [di]
  28.         xchg    al, bl
  29.         mov     [si], al
  30.         mov     [di], bl
  31.         inc     si
  32.         inc     di
  33.         loop    @@1and2
  34. ;**********************************************
  35. ; Обмен 3 и 4 четвертей
  36.     lea si, a+2*LenQuarter
  37.     lea di, a+3*LenQuarter
  38.  
  39.         mov     cx, LenQuarter
  40. @@3and4:
  41.         mov     al, [si]
  42.         mov     bl, [di]
  43.         xchg    al, bl
  44.         mov     [si], al
  45.         mov     [di], bl
  46.         inc     si
  47.         inc     di
  48.         loop    @@3and4
  49.        
  50.         ;эпилог
  51.         mov ax,4C00h
  52.         int 21h     ; Выходим из программы
  53. main    endp
  54.  
  55. END     main

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


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

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

7   голосов , оценка 3.714 из 5

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

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

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