Преобразовать код из С++ в код Ассемблера - Assembler
Формулировка задачи:
Прошу о помощи. В условии надо поменять местами первую четверть массива со второй, а третью с четвертой.
Нужно преобразовать данный кусок кода
Результат:
int a[16] = { 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 }; int t; for (int i = 0; i < 4; i++) { t = a[i]; a[i] = a[4 + i]; a[4 + i] = t; } for (int i = 0; i < 4; i++) { t = a[i + 8]; a[i + 8] = a[12 + i]; a[12 + i] = t; }
a[16] = {2, 2, 2, 2, 1, 1, 1, 1, 4, 4, 4, 4, 3, 3, 3, 3};
Решение задачи: «Преобразовать код из С++ в код Ассемблера»
textual
Листинг программы
.MODEL Small .STACK 100h .DATA a db 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4 LenArray equ $-a LenQuarter equ LenArray / 4 .CODE main proc far ; пролог mov ax,@data mov ds,ax ; DS = сегмент .DATA ;********************************************** ; Обмен 1 и 2 четвертей lea si, a lea di, a+LenQuarter mov cx, LenQuarter @@1and2: mov al, [si] mov bl, [di] xchg al, bl mov [si], al mov [di], bl inc si inc di loop @@1and2 ;********************************************** ; Обмен 3 и 4 четвертей lea si, a+2*LenQuarter lea di, a+3*LenQuarter mov cx, LenQuarter @@3and4: mov al, [si] mov bl, [di] xchg al, bl mov [si], al mov [di], bl inc si inc di loop @@3and4 ;эпилог mov ax,4C00h int 21h ; Выходим из программы main endp END main
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д