Напишите программу, которая моделирует работу процессора - Pascal ABC

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

1. Напишите программу, которая моделирует работу процессора. Процессор имеет 4 регист-ра, они обозначаются R0, R1, R2 и R3. Все команды состоят из трех десятичных цифр: код операции, номер первого регистра и номер второго регистра (или число от 0 до 9). Коды команд и примеры их использования приведены в таблице:
Код операцииОписаниеПримерПсевдокод
1запись константы128 R2 := 8
2копирование значения203 R3 := R0
3сложение 331 R1 := R1 + R3
4вычитание 431 R1 := R1 – R3
Обратите внимание, что результат записывается во второй регистр. Команды вводятся последовательно как символьные строки. После ввода каждой строки программа показывает значения всех регистров.

Код к задаче: «Напишите программу, которая моделирует работу процессора - Pascal ABC»

textual
var s:string;
    a,b:integer;
    r:array[0..3] of integer;
    i:byte;
begin
for i:=0 to 3 do
r[i]:=0;
writeln('Вводите коды команд, окончание вввода 000');
repeat
repeat
readln(s);
if s='000' then
 begin
  writeln('Программа завершена');
  exit;
 end;
val(s,a,b);
if(b<>0)or not(s[1] in ['1'..'4'])
or not(s[2] in ['0'..'3'])
or((s[1] in ['2'..'4'])and not(s[3]in ['0'..'3']))
then writeln('Код введен неверно, повторите');
until (b=0)and(s[1] in ['1'..'4'])and(s[2] in ['0'..'3'])
or((s[1] in ['2'..'4'])and (s[3]in ['0'..'3']));
case s[1] of
'1':r[strtoint(s[2])]:=strtoint(s[3]);
'2':r[strtoint(s[3])]:=r[strtoint(s[2])];
'3':r[strtoint(s[3])]:=r[strtoint(s[3])]+r[strtoint(s[2])];
'4':r[strtoint(s[3])]:=r[strtoint(s[3])]-r[strtoint(s[2])];
end;
for i:=0 to 3 do
write('R',i,'=',r[i],'  ');
writeln;
until s='000';
end.

6   голосов, оценка 3.833 из 5


СОХРАНИТЬ ССЫЛКУ
Похожие ответы