Вычислить значение выражения: ((2*c)-(d/3)) / (b-(a/4)) - Assembler

  1. Имеется пример ((2*c)-(d/3)) / (b-(a/4)) При клике на Btn1 значение выводится в Edit1 В качестве тестовых чисел я взял: a - 20 b - 10 c - 10 d - 30.Итоговый ответ должен получиться (20-(30/3))/(10-(20/4))=10/5=2 Использую ассемблерную вставку в Delphi


textual

Код к задаче: «Вычислить значение выражения: ((2*c)-(d/3)) / (b-(a/4)) - Assembler»

    ;((2*c)-(d/3))
    mov eax, c
    mov ebx, 2
    imul ebx
    push eax
    push edx
 
    mov  eax, d
    cdq
    mov  ebx, 3
    idiv ebx
    cdq
 
    pop  ebx
    pop  ecx
    sub  ecx, eax
    sbb  ebx, edx
    push ecx
    push ebx
 
    ;(b-(a/4))
    mov  eax, a
    cdq
    mov  ebx, 4
    idiv ebx
    mov  ebx, b
    sub  ebx, eax
 
    ;((2*c)-(d/3)) / (b-(a/4))
    pop  edx
    pop  eax
    idiv ebx
 
    mov r, eax

СДЕЛАЙТЕ РЕПОСТ

13   голосов, оценка 4.077 из 5



Похожие ответы
  1. Помогите найти ошибку. Все компилируется, но при запуске вылетает с ошибкой.

  1. Здравствуйте. Уравнение y = (12 + 3/8+6)*3+12. Ошибки: yyyy.asm(4) : invalid character in file yyyy.asm(5) : must be in segment block yyyy.asm(6) : syntax error : st yyyy.asm(7) : segment, group, or segment register expected Как вывести значение y на экран? И что в этом коде еще не хватает?

  1. Вычислить условный целочисленный выражение в форматах Integer и Word, используя команды сравнения. Результат проверить на область допустимых значений. Я думаю,что а и b запрашивать с консоли и проверять на то являетьсяли это числом.

  1. В заданном массиве A(N) необходимо вычислить среднее арифметическое значение элемента массива.

  1. У меня в регистре данных лежат два числа

  1. Ввести два 16-битовых целых числа А и В. Вычислить значение выражения: А^3 - В^2. Программа 1. Передача параметров через регистр. Тип процедуры – дальний. Программа 2. Передача параметров через глобальные переменные. Тип процедуры – дальний. Программа 3. Передача параметров через стек. Тип процедуры – ближний. В общем, начал я с первой задачи, но, так как рука не набита, не могу разобраться, как грамотно исполнить программу. В командной строке при запуске мной созданной программы выгружается бесконечный цикл символов. Собственно сам листинг:

  1. Найти элемент массива, имеющий максимальное абсолютное значение, и записать в RgCX(формат элементов массива - байт).

  1. Дан массив, состоящий из N целых элементов. Вычислить сумму модулей элементов массива,расположенных после первого отрицательного элемента. Массив и количество элементов N вводятся с клавиатуры. На тасме. Помогите плз

  1. Необходимо ввести с клавиатуры два знаковых числа, обозначаемых А и B в диапазоне от -9 до 9, вычислить A+B/2 ? вывести результат в 16-ричном виде в файл, пожалуйста помогите.