Top.Mail.Ru
Ответы

Задача на ассемблере.

Всем привет, нужно решить два примера на ассемблере. Максимум 20 строк
1)Y:= (A+B)*(F-E), если F<>E или (A+B),если F=E
2)Y:= (A/B)^(X-1) - Z

Команды для написания кода:

1. INP A - ввод слова из канала ввода и запись его по адресу A.

2. OUT A - вывод содержимого ячейки памяти с адресом A в канал вывода.

3. MOVR R,A - загрузка регистра R содержимым ячейки памяти с адресом A.

4. MOVM R,A - запись содержимого регистра R в ячейку памяти с адресом A.

5. ARM R,A - сложить содержимое регистра R с содержимым ячейки памяти с

адресом A.

6. SRM R,A - из содержимого регистра R вычесть содержимое ячейки памяти с

адресом A.

7. MRM R,A - перемножить содержимое регистра R и ячейки памяти с адресом

A.

8. DRM R,A - поделить содержимое регистра R на содержимое ячейки памяти

с адресом A.

9. ARR R1,R2 - сложить содержимое регистров R1 и R2.

10. SRR R1,R2 - из содержимого R1 вычесть содержимое R2.

11. MRR R1,R2 - содержимое регистра R1 умножить на содержимое регистра

R2.

12. DRR R1,R2 - содержимое регистра R1 поделить на содержимое регистра R2.

13. AMM A1,A2 - сложить содержимое ячеек памяти с адресами A1 и A2.

14. SMM A1,A2 - из содержимого ячейки с адресом A1 вычесть содержимое

ячейки памяти с адресом A2.

15. MMM A1,A2 - перемножить содержимое ячеек памяти с адресами A1 и A2.

16. DMM A1,A2 - содержимое ячейки памяти с адресом A1 поделить на

содержимое ячейки памяти с адресом A2.

17. JMP A - безусловный переход по адресу A.

128

18. JV A - переход по переполнению по адресу A.

19. JP A - переход по положительному результату по адресу A.

20. JPV A - переход по переполнению или положительному результату по

адресу A.

21. JZ A - переход по нулевому результату.

22. JZV A - переход по неотрицательному и неположительному результату.

23. JZP A - переход по положительному или нулевому результату.

24. JZPV A - переход по неотрицательному результату.

25. JN A - переход по отрицательному результату.

26. JNV A - переход по отрицательному результату или переполнению.

27. JNP A - переход по отрицательному или нулевому результату.

28. JNPV A - переход по ненулевому результату.

29. JNZ A - переход по отрицательному или нулевому результату.

30. JNZV A - переход по неположительному результату.

31. JNZP A - переход по непереполнению.

32. LOOP A - организация цикла со счетчиком в регистре 0.

33. STOP - останов

есть два примера для решения первой и второй задачи

1. Для выражения с ветвлением
MMM C,A C*A
AMM B,NULL B+0 (для установки регистра признаков)
JZ OUR переход по "0" на вывод результата
JP PLUS переход по "+" (B > 0)
DMM B,A B/A
AMM C,B B/A + C*A
JMP OUR безусловный переход на вывод результата
PLUS: DMM A,B A/B
AMM C,A C*A + A/B
OUR: OUT C вывод результата в канал вывода
STOP останов
A: .DW 2 значения
B: .DW 2 переменных
C: .DW 6 выражения
NULL: .DW 0 ячейка для хранения 0
END
2. Для циклического выражения:
MOVR 0,N загрузить в регистр 0 N
MOVR 1,ONE загрузить в регистр 1 единицу
CYCL: JZ OU1 при нулевом результате перейти по символическому адресу OU1
MRR 1,0 перемножить содержимое регистров 1 и 0
LOOP CYCL замкнуть цикл по символическому адресу CYCL
OU1: MOVM 1,FACT записать результат по адресу FACT
OUT FACT вывести результат в канал вывода
STOP останов
N: .DW 5 значение N
ONE: .DW 1 константа “1”
FACT: .DS ячейка памяти для результата
END

По дате
По рейтингу
Аватар пользователя
Гуру

ну ты програмист

Аватар пользователя
Мудрец

чувак, ты для чего учишься на программера, если спрашиваешь как решить. это ведь не школьная программа у тебя, ты сделал осознанный выбор в профессии, на которую сейчас учишься. никто на работе за тебя программировать не будет, поэтому пробуй сам, либо бросай учебу, если это не твоё.



Видео по теме