Переставить биты в числе произвольной размерности представленном в виде массива чисел типа longint - Assembler

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

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

Пожалуйста, переведите программу из Паскаля в Ассемблер
program aeae;
uses crt;
const
N=100;
type
Fbin=text;
MyAr=array[1..N] of char;
var
F1,F2:Fbin;
Num,M,a:longint;
Ar1,Ar2:MyAr;
i,j,count,nn:integer;
ch:char;
begin
   clrscr;
   Assign(F1,'Y:\text1.txt');
   Reset(F1);
   Assign(F2,'Y:\text2.txt');
   Rewrite(F2);
   count:=0;
   while not eof(F1) do begin
      read(F1,ch);
      inc(count);
      Ar1[count]:=ch;
   end;
   for i:=1 to count do begin
      Ar2[i]:=Ar1[count+1-i];
   end;
   for i:=1 to count do
       write(F2,Ar2[i]);
   close(F1);
   close(F2);
   readln;
end.

Решение задачи: «Переставить биты в числе произвольной размерности представленном в виде массива чисел типа longint»

textual
Листинг программы
program test;
 
var
  A: array [0..99] of longint;
  LenA: integer;
begin
 
  asm
    LEA SI, [A]
    MOV DI, SI
    MOV CX, [LenA]
    SHL CX, 1
    SHL CX, 1
    ADD DI, CX
    SUB DI, 1
 
    @@for:
    MOV AL, [SI]
    MOV AH, [DI]
 
    MOV CX,8
    @@1:
    SHL AL,1
    RCR BL,1
    LOOP @@1
    MOV [DI], BL
 
    CMP SI,DI
    JE @@break
    MOV CX,8
    @@2:
    SHL AH,1
    RCR BL,1
    LOOP @@2
    MOV [SI], BL
 
    INC SI
    DEC DI
    CMP SI, DI
    JBE @@for
 
    @@break:
  end;
end.

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


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

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

14   голосов , оценка 3.357 из 5
Похожие ответы