Сборник задач и упражнений для лабораторного практикума по курсу "ЭВУ и системы" (изучение архитектуры и системы команд INTEL-совместимых микропроцессоров). Коршунов А.Д. - 4 стр.

UptoLike

Составители: 

4
1. Команда MOV и арифметические команды
В нижеследующих примерах следует не только показать результат (число в регистре), но и уметь
объяснить, как именно была написана программа, доказать её правильность.
1. Вычислить значение выражения (53+8)*2 + (150-60)/3. Полученный результат
записать в регистр DX. Ответ: 152.
2. Вычислить значение выражения (1260-450)/2 + 310*3. Полученный результат
записать в регистр SI. Ответ: 1335.
3. Вычислить значение выражения (176 / 2 + 23*3) - (125-50)/3. Полученный результат
записать в регистр BX. Ответ: 132.
4. Вычислить значение выражения (786+35)*3 + (125-50)/5. Полученный результат
записать в регистр DI. Ответ: 2478.
5. Вычислить значение выражения (5684 / 4 + 357 / 3 + 245 / 5)*3. Полученный
результат записать в регистр CX. Ответ: 4767.
6. Вычислить значение выражения (25*7 - 31*2 + 11*3)/2. Полученный результат
записать в регистр BL. В регистр BH записать 0. Ответ: 73.
7. Вычислить значение выражения 150 /3 + 78 / 2 + 365 / 5. Полученный результат
записать в регистр CL. В регистр CH записать 0. Ответ: 162.
8. Вычислить значение выражения (35 / 7)*(78 / 2)-190. Полученный результат
записать в регистр BH. В регистр BL записать 0. Ответ: 5.
9. Вычислить значение выражения (81 / 9)*(65 / 5)-110. Полученный результат
записать в регистр CH. В регистр CL записать 0. Ответ: 7.
10. Вычислить значение выражения 150 / 5 - 35 / 7 + 210 / 3. Полученный результат
записать в регистр DL. В регистр DH записать 0. Ответ: 95.
2. Команды логических операций, сдвигов, выделение битовых полей
В задачах нижеследующего раздела в качестве исходного значения предполагается байт, условно
названный здесь DataByte, который может быть предварительно записан (командой MOV) в один
из регистров МП либо вводиться из какого-либо порта (2 или 3) на вкладке «Ввод-вывод» системы
AsmEd. Студент должен разработать программу, которая выделяет данные из указанных бито-
вых
полей (каждое такое поле рассматривается как целое без знака), производит над ними указан-
ные действия и выводит результат либо в заданный регистр МП, либо в один из портов (2 или 3).
Систему тестов к каждой задаче разрабатывает преподаватель. Один тест дан для примера.
1. В исходном байте DataByte биты 0…3 содержат двоичный код, который обозначим
как А, биты 4…5 - код, который обозначим как В, биты 6…7 - код, который обозна-
чим как С. Вычислить А+2*В+2*С. Тест: ввод - 51h, вывод - 5.
2. В исходном байте DataByte биты 0…2 содержат двоичный код, который обозначим
как А, биты 3…5 - код, который обозначим как В, биты 6…7 - код, который обозна-
чим как С. Вычислить А-В+2*С. Тест: ввод - 8Fh, вывод - 10 (0Ah).
3. В исходном байте DataByte биты 0…1 содержат двоичный код, который обозначим
как А, биты 2…5 - код, который обозначим как В, биты 6…7 - код, который обозна-
чим как С. Вычислить В-A*С. Тест: ввод - BEh, вывод - 11 (0Bh).
4. В исходном байте DataByte биты 0…4 содержат двоичный код, который обозначим
как А, биты 5…6 - код, который обозначим как В, бит 7 - код, который обозначим
как С. Вычислить А+В+С. Тест: ввод - C7h, вывод - 10 (0Ah).
5. В исходном байте DataByte биты 0…2 содержат двоичный код, который обозначим
как А, биты 3…6 - код, который обозначим как В, бит 7 - код, который обозначим
как С. Вычислить В-A+С. Тест: ввод - D6h, вывод - 5.
                                                                                                   4

1. Команда MOV и арифметические команды
    В нижеследующих примерах следует не только показать результат (число в регистре), но и уметь
объяснить, как именно была написана программа, доказать её правильность.

1. Вычислить значение выражения (53+8)*2 + (150-60)/3. Полученный результат
   записать в регистр DX. Ответ: 152.
2. Вычислить значение выражения (1260-450)/2 + 310*3. Полученный результат
   записать в регистр SI. Ответ: 1335.
3. Вычислить значение выражения (176 / 2 + 23*3) - (125-50)/3. Полученный результат
   записать в регистр BX. Ответ: 132.
4. Вычислить значение выражения (786+35)*3 + (125-50)/5. Полученный результат
   записать в регистр DI. Ответ: 2478.
5. Вычислить значение выражения (5684 / 4 + 357 / 3 + 245 / 5)*3. Полученный
   результат записать в регистр CX. Ответ: 4767.
6. Вычислить значение выражения (25*7 - 31*2 + 11*3)/2. Полученный результат
   записать в регистр BL. В регистр BH записать 0. Ответ: 73.
7. Вычислить значение выражения 150 /3 + 78 / 2 + 365 / 5. Полученный результат
   записать в регистр CL. В регистр CH записать 0. Ответ: 162.
8. Вычислить значение выражения (35 / 7)*(78 / 2)-190. Полученный результат
   записать в регистр BH. В регистр BL записать 0. Ответ: 5.
9. Вычислить значение выражения (81 / 9)*(65 / 5)-110. Полученный результат
   записать в регистр CH. В регистр CL записать 0. Ответ: 7.
10. Вычислить значение выражения 150 / 5 - 35 / 7 + 210 / 3. Полученный результат
   записать в регистр DL. В регистр DH записать 0. Ответ: 95.


2. Команды логических операций, сдвигов, выделение битовых полей
   В задачах нижеследующего раздела в качестве исходного значения предполагается байт, условно
   названный здесь DataByte, который может быть предварительно записан (командой MOV) в один
   из регистров МП либо вводиться из какого-либо порта (2 или 3) на вкладке «Ввод-вывод» системы
   AsmEd. Студент должен разработать программу, которая выделяет данные из указанных бито-
   вых полей (каждое такое поле рассматривается как целое без знака), производит над ними указан-
   ные действия и выводит результат либо в заданный регистр МП, либо в один из портов (2 или 3).
   Систему тестов к каждой задаче разрабатывает преподаватель. Один тест дан для примера.

1. В исходном байте DataByte биты 0…3 содержат двоичный код, который обозначим
   как А, биты 4…5 - код, который обозначим как В, биты 6…7 - код, который обозна-
   чим как С. Вычислить А+2*В+2*С. Тест: ввод - 51h, вывод - 5.
2. В исходном байте DataByte биты 0…2 содержат двоичный код, который обозначим
   как А, биты 3…5 - код, который обозначим как В, биты 6…7 - код, который обозна-
   чим как С. Вычислить А-В+2*С. Тест: ввод - 8Fh, вывод - 10 (0Ah).
3. В исходном байте DataByte биты 0…1 содержат двоичный код, который обозначим
   как А, биты 2…5 - код, который обозначим как В, биты 6…7 - код, который обозна-
   чим как С. Вычислить В-A*С. Тест: ввод - BEh, вывод - 11 (0Bh).
4. В исходном байте DataByte биты 0…4 содержат двоичный код, который обозначим
   как А, биты 5…6 - код, который обозначим как В, бит 7 - код, который обозначим
   как С. Вычислить А+В+С. Тест: ввод - C7h, вывод - 10 (0Ah).
5. В исходном байте DataByte биты 0…2 содержат двоичный код, который обозначим
   как А, биты 3…6 - код, который обозначим как В, бит 7 - код, который обозначим
   как С. Вычислить В-A+С. Тест: ввод - D6h, вывод - 5.