Учебник по ассемблеру (ASM)
 

Ассемблер в примерах - Паскаль и ассемблер

Вопрос:
Помогите решить задачу, Дана программма на паскале заменить оператор for ,repeat, while на код ассемблера!
Var 
   i,m:integer;
   A:array [13..21] of integer;
Begin
   m:=0;
   i:=21;
   repeat
       m:=m+i;
       if m<50 then 
       A[i]:=5*i
       Else A[i]:=m;
       dec(i)
    until i<13;   
for i:=13 to 21 do
      write(A[i]:4);writeln;
End.
Мой вариант:
{1} program test0000;
{2} var
{3} c,d: byte;
{4} k: integer;
{5} A: array [3..10] of integer;
{6}
{7} begin
{8} k:=6;
{9} d:=0;
{10} for c:=3 to 10 do
{11} begin
asm
{12 if k

Ответ:
Решение:
{21.	Program test0021;}
Var
   i,m:integer;
   A:array [13..21] of integer;
label A10,B10,C10,D10;
Begin
   m:=0;
   asm
{   i:=21;}
     mov	ax,21
{   repeat}
   A10:
     mov	i,ax
   end;
       m:=m+i;
       if m<50 then
       A[i]:=5*i
       Else A[i]:=m;
   asm
{       dec(i)}
       mov	ax,i
       dec	ax
{    until i<13;}
    cmp	ax,13
    jae	A10
   end;
{for i:=13 to 21 do}
asm
  mov   ax,13
  jmp   B10
C10:
  mov   ax,i
  inc   ax
B10:
  mov   i,ax
  cmp	ax,21
  ja	D10
end;
      write(A[i]:4);
asm
  jmp   C10
D10:
end;
      writeln;
      readln;
End.

   Вперёд
   Содержание