Как выполнить арифметическую операцию на языке ассемблер. (а+в)/с - Assembler

Узнай цену своей работы

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

Как выполнить арифметическую операцию на языке ассемблер. (а+в)/с, где а, в, и с -двухбайтовые числа.а=-18000, в=-1700, с=-35, ответ должен получится 1000=000003EF...Использовать команду ADC, а так же расширение ( в термине не уверена)СWD-это потому что сумма получается слишком большая...А ответ нужно занести в R-четырехбайтное целое знаковое число. написала сама вот так:
MY_FUNC PROC
MOV AX,A
CWD
MOW DX,B
CWD
ADC AX,DX
IDIV C
RET
MY_FUNC ENDP
Догадываюсь, что написала бред -изучаю ассемблер первый месяц (студентка) и нифига не понимаю. Надеюсь, что кто-то подскажет, что с этим делать.

Решение задачи: «Как выполнить арифметическую операцию на языке ассемблер. (а+в)/с»

textual
Листинг программы
.DATA
dwA DW  -18000
dwB DW  -17000
dwC DW  -35
ddRes   DD  ?
.CODE
    MOV AX, @data
    MOV DS, AX
    MOV AX, dwA
    CWD
    MOV BX, AX
    MOV CX, DX
    MOV AX, dwB
    CWD
    ADD AX, BX
    ADC DX, CX
    IDIV    dwC
    CWD
    MOV Word Ptr ddRes, AX
    MOV Word Ptr ddRes + SizeOf Word, DX

Объяснение кода листинга программы

  1. .DATA — сегмент данных, в котором хранятся константы
  2. dwA DW -18000 — определение переменной dwA со значением -18000
  3. dwB DW -17000 — определение переменной dwB со значением -17000
  4. dwC DW -35 — определение переменной dwC со значением -35
  5. ddRes DD ? — определение переменной ddRes, в которую будет записан результат вычисления выражения (а+в)/с
  6. .CODE — сегмент кода, в котором содержится последовательность команд для выполнения операции (а+в)/с
  7. MOV AX, @data — команда загрузки сегмента данных в регистр AX
  8. MOV DS, AX — команда выбора сегмента данных для работы с ним
  9. MOV AX, dwA — команда загрузки значения переменной dwA в регистр AX
  10. CWD — команда подготовки десятичной системы счисления для выполнения операций с дробными числами
  11. MOV BX, AX — команда загрузки значения регистра AX в регистр BX
  12. MOV CX, DX — команда загрузки значения регистра DX в регистр CX
  13. MOV AX, dwB — команда загрузки значения переменной dwB в регистр AX
  14. CWD — команда подготовки десятичной системы счисления для выполнения операций с дробными числами
  15. ADD AX, BX — команда сложения регистров AX и BX
  16. ADC DX, CX — команда сложения с учетом знаков регистров AX и BX и DX и CX соответственно
  17. IDIV dwC — команда выполнения деления с остатком, где в качестве делителя выступает значение переменной dwC
  18. CWD — команда подготовки десятичной системы счисления для выполнения операций с дробными числами
  19. MOV Word Ptr ddRes, AX — команда записи значения регистра AX в переменную ddRes
  20. MOV Word Ptr ddRes + SizeOf Word, DX — команда записи значения регистра DX в переменную ddRes, смещенную на размер слова в памяти

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы