Предположим что вместе. Тогда будет каша - скажете вы. Ведь если инструкции хранить с операндами вместе, то их неразличить. Нет, ответим мы и укажем адрес первой инструкции и её размер, а после идёт операнд с определённым размером и опять инструкция. Предположим что раздельно. Да, но нам потребуется два потока памяти. Один под инструкции и второй под операнды. И флэшка у нас одна и две части из неё никак не выделить. Хорошо, будем половину памяти флэшки заполнять инструкциями, а вторую - операндами. Одним словом - как хотим, так и будем хранить. Только надо со всеми остальными ЭВМ согласовать.
Если лень перебирать вручную, можно воспользоваться программой
var k,l,r,x,f:integer; begin f := 3001; l := 0; r := 65534; x := (l + r) div 2; k := 1; while (x <> f) and (l < r) do begin writeln(k,' ',l,' ',r,' ',x); k := k + 1; if f < x then r := x - 1 else l := x + 1; x := (l + r) div 2 end; writeln(k,' ',l,' ',r,' ',x); end.
Var mas:array[1..1000, 1..1000] of integer; N,M,i,j,k:integer;
Begin Writeln('Введите размер матрицы N*M'); Write('N = '); readln(N); Write('M = '); readln(M);
if (M>1000) or (N>1000) or (M<1) or (N<1) then Writeln('Ошибка, указанные значения выходят за пределы матрицы') else Begin Writeln('Введите элементы матрицы');
k:=0; for i:=1 to N do for j:=1 to M do Begin readln(mas[i,j]); if (mas[i,j] mod 2 = 0) then k:=k+1; end;
Writeln(); Writeln('Исходная матрица');
for i:=1 to N do Begin for j:=1 to M do Begin Write(mas[i,j], ' ') end; Writeln(); end;
Writeln(); Writeln('Количество четных элементов = ',k); end;
Предположим что раздельно. Да, но нам потребуется два потока памяти. Один под инструкции и второй под операнды. И флэшка у нас одна и две части из неё никак не выделить. Хорошо, будем половину памяти флэшки заполнять инструкциями, а вторую - операндами.
Одним словом - как хотим, так и будем хранить. Только надо со всеми остальными ЭВМ согласовать.