Как выполнить арифметическую операцию на языке ассемблер. (а+в)/с - 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
Объяснение кода листинга программы
- .DATA — сегмент данных, в котором хранятся константы
- dwA DW -18000 — определение переменной dwA со значением -18000
- dwB DW -17000 — определение переменной dwB со значением -17000
- dwC DW -35 — определение переменной dwC со значением -35
- ddRes DD ? — определение переменной ddRes, в которую будет записан результат вычисления выражения (а+в)/с
- .CODE — сегмент кода, в котором содержится последовательность команд для выполнения операции (а+в)/с
- MOV AX, @data — команда загрузки сегмента данных в регистр AX
- MOV DS, AX — команда выбора сегмента данных для работы с ним
- MOV AX, dwA — команда загрузки значения переменной dwA в регистр AX
- CWD — команда подготовки десятичной системы счисления для выполнения операций с дробными числами
- MOV BX, AX — команда загрузки значения регистра AX в регистр BX
- MOV CX, DX — команда загрузки значения регистра DX в регистр CX
- MOV AX, dwB — команда загрузки значения переменной dwB в регистр AX
- CWD — команда подготовки десятичной системы счисления для выполнения операций с дробными числами
- ADD AX, BX — команда сложения регистров AX и BX
- ADC DX, CX — команда сложения с учетом знаков регистров AX и BX и DX и CX соответственно
- IDIV dwC — команда выполнения деления с остатком, где в качестве делителя выступает значение переменной dwC
- CWD — команда подготовки десятичной системы счисления для выполнения операций с дробными числами
- MOV Word Ptr ddRes, AX — команда записи значения регистра AX в переменную ddRes
- MOV Word Ptr ddRes + SizeOf Word, DX — команда записи значения регистра DX в переменную ddRes, смещенную на размер слова в памяти