OPDLab4/Pass
This commit is contained in:
@@ -76,7 +76,7 @@
|
||||
|
||||
- Также можно передавать аргументы для подпрограммы и используя регистры общего назначения (к сожалению, в БЭВМ он только один, и это AC).
|
||||
|
||||
- Третьим способом будет использование косвенной адресации. Для этого сразу под командой CALL можно указать заранее определённое подпрограммой количество аргументов. При этом в самой подпрограмме можно выгрузить вершину стека (которая в тот момент времени будет являться адресом первого аргумента), а после косвенной адресацией (а точнее, косвенной постинкрементацией) загрузить и использовать эти аргументы в подпрограмме. Далле остаётся только обратно загрузить уже увеличенное значение возврата подпрограммы, и программа начнет выполнение команд, которые идут уже после аргументов.
|
||||
- Третьим способом будет использование косвенной адресации. Для этого сразу под командой CALL можно указать заранее определённое подпрограммой количество аргументов. При этом в самой подпрограмме можно выгрузить вершину стека (которая в тот момент времени будет являться адресом первого аргумента), а после косвенной адресацией (а точнее, косвенной постинкрементацией) загрузить и использовать эти аргументы в подпрограмме. Далее остаётся только обратно загрузить уже увеличенное значение возврата подпрограммы, и программа начнет выполнение команд, которые идут уже после аргументов.
|
||||
|
||||
## Команды
|
||||
|
||||
@@ -176,10 +176,11 @@
|
||||
|
||||
- По спаду запишет это значение в регистр состояния.
|
||||
|
||||
- 4 такт: **MEM(AR) -> DR**
|
||||
- 4 такт: **SP + 1 -> SP**
|
||||
|
||||
- По фронту находит по адресу ячейку.
|
||||
- По спаду записывает значение этой ячейки в регистр данных.
|
||||
- По фронту пустит значение указателя стека в АЛУ и прибавит 1.
|
||||
|
||||
- По спаду запишет полученное значение в указатель стека.
|
||||
|
||||
*Флаги, соответственно, возьмутся из регистра состояния.*
|
||||
|
||||
|
||||
Reference in New Issue
Block a user