|
Ассемблер в примерах - Паскаль и ассемблер
- Вопрос:
- Помогите решить задачу, Дана программма на паскале заменить оператор 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.
| |