Newline. Если попытаться один к одному переписать эту программу на Турбо-Паскале, то получится примерно следующее:
Finish
code ends
end start
Если попытаться один к одному переписать эту программу на Турбо-Паскале, то получится примерно следующее:
Program S(input,output);
VarX: array[1..100] of integer;
Y: array[1..200] of integer;
bx: ↑integer; Sum,cx,ax: integer;
Procedure Summa;
Label L;
Begin
ax:=0;
L: ax := ax + bx↑; bx:=bx+2; {так в Паскале нельзя}
dec(cx); if cx<>0 then goto L
End;
Begin {Ввод массивов X и Y}
cx:=100; bx:=↑X[1]; {так в Паскале нельзя} [25]
Summa; Sum:=ax;
cx:=200; bx:=↑Y[1]; {так в Паскале нельзя}
Summa; Sum:=Sum+ax; Writeln(Sum)
End.
Как видим, это очень плохой стиль программирования, так как неявными параметрами процедуры являются глобальные переменные. Решая эту задачу на Паскале, мы бы написали, например, такую программу:
Program S(input,output);
Type Mas=array[1..N] of integer;
{так в Паскале нельзя, N – не константа}
Var X,Y: Mas;
Sum: integer;
FunctionSumma(Var A: Mas, N: integer): integer;
Var i,S: integer;
Begin S:=0; for i:=1 to N do S:=S+A[i]; Summa:=S End;
Begin {Ввод массивов X и Y}
Sum:=Summa(X,100); Sum:=Sum+Summa(Y,200); Writeln(Sum)
End.
Однако для того, чтобы так же хорошо писать на Ассемблере, нам понадобятся другие соглашения о связях между процедурой и основной программой. Вспомним, что хорошо написанная процедура в языке Паскаль получает все свои аргументы как фактические параметры и не использует имён глобальных переменных. При программировании процедур на языке Ассемблера мы будем использовать так называемые стандартные соглашения о связях.
Дата добавления: 2015-10-05; просмотров: 819;