1. Напишите и отладьте программу, которая меняет местами значения регистров R2 и R3 с стека (не используя других регистров общего назначения).
2. Введите текст программы MOV 12,R0 CALL SQR STOP SQR: MUL R0,R0 RET Заполните таблицу, выполнив программу пошагово с клавиши F7 (пошаговое выполнение с входом в подпрограммы): (Указано на скрине)
3. Напишите и отладьте программу с подпрограммой, которая вычисляет куб числа, записанного в регистр R0.
4. Напишите и отладьте программу с подпрограммой, которая и строит RGB-код цвета, 4-битные составляющие которого (R, G и B) записаны, соответственно, в регистры R0, R1 и R2. Результат должен быть получен в регистре R0.
5. Выполните предыдущее задание при условии, что параметры передаются через стек, а значения регистров R1 и R2 не должны измениться.
6. Отладьте программу с рекурсивной подпрограммой, которая вычисляет факториал числа, записанного в регистр R0. При выполнении в пошаговом режиме (клавиша F7) наблюдайте, как изменяется регистр SP и содержимое стека.
7. Решите предыдущую задачу, применив подпрограмму без рекурсии.
ответ на фото. Это выражение можно записать иначе,как я его записала. Обрати на это внимание.
Обьяснение:
1)для трех переменных А,В,С записываются все возможные логические комбинации значений(первые три колонки)
2) т.к в твоем выражении эти А,В,С инверсируются, в следующих трех колонках производится инверсия(отрицание,логическое НЕ). Значения записываются наоборот. Если была 1,станет 0. Если был 0,станет 1.
3) полностью твое логическое выражение можно записать подругому. Это в последней колонке показано. Между этими значениями происходит логическое ИЛИ(ЛОГИЧЕСКОЕ СЛОЖЕНИЕ)
const
n=5;
m=5;
var
a:array [1..n,1..m] of integer;
i,j,k,t:integer;
begin
writeln('Исходная матрица:');
for i:=1 to n do
begin
for j:=1 to m do
begin
a[i,j]:=random(8)-4;
write(a[i,j]:2,' ')
end;
writeln
end;
for i:=1 to n do
for j:=1 to m-1 do
for k:=j+1 to m do
if a[i,j]>a[i,k] then
begin
t:=a[i,j];
a[i,j]:=a[i,k];
a[i,k]:=t
end;
writeln('Полученная матрица:');
for i:=1 to n do
begin
for j:=1 to m do
write(a[i,j]:2,' ');
writeln
end;
end.
ответ на фото. Это выражение можно записать иначе,как я его записала. Обрати на это внимание.
Обьяснение:
1)для трех переменных А,В,С записываются все возможные логические комбинации значений(первые три колонки)
2) т.к в твоем выражении эти А,В,С инверсируются, в следующих трех колонках производится инверсия(отрицание,логическое НЕ). Значения записываются наоборот. Если была 1,станет 0. Если был 0,станет 1.
3) полностью твое логическое выражение можно записать подругому. Это в последней колонке показано. Между этими значениями происходит логическое ИЛИ(ЛОГИЧЕСКОЕ СЛОЖЕНИЕ)