Форум программистов
 
Регистрация на форуме тут, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль

Купить рекламу на форуме 15-35 тыс рублей в месяц

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы Поиск в этой теме
Старый 08.05.2022, 16:10   #1
c_pluspluser
 
Регистрация: 18.12.2021
Сообщений: 7
По умолчанию оставление программ и использованием ассемблерной вставки

Необходимо создать программу для вычисления примера ниже на ассемблере с использованием ветвления и ввод через C++ через консоль.

Пожалуйста! Скоро сдача

Код:
         A/B - B*C, если B<>0
Y:= { 
         A-C, если B=0
c_pluspluser вне форума Ответить с цитированием
Старый 08.05.2022, 17:46   #2
macomics
Форумчанин
 
Регистрация: 17.04.2022
Сообщений: 604
По умолчанию

Цитата:
Сообщение от c_pluspluser Посмотреть сообщение
и ввод через C++ через консоль.
Так через С++ или консоль? Числа целые или вещественные? Какой режим процессора? Какой компилятор?
Код:
; rcx = A, rdx = B, r8 = C
    mov rax, rcx
    mov rcx, rdx
    jrcxz @f
    cqo
    imul r8, rcx ; B*C
    idiv rcx ; rax = A/B, rdx = A%B
@@: sub rax, r8 ; A-C или (A/B) - (B*C)
; rax = Y
Вот вам на FASM x64 с целыми 64-битными числами со знаком

Последний раз редактировалось macomics; 09.05.2022 в 01:59.
macomics вне форума Ответить с цитированием
Старый 09.05.2022, 05:37   #3
c_pluspluser
 
Регистрация: 18.12.2021
Сообщений: 7
По умолчанию

macomics,

Ввод через cin;
Программа VisualStudio,
Числа целые;
В лабораторной указано Intel80x86
c_pluspluser вне форума Ответить с цитированием
Старый 09.05.2022, 07:04   #4
macomics
Форумчанин
 
Регистрация: 17.04.2022
Сообщений: 604
По умолчанию

Код:
#include <iostream>
using namespace std;

int Y(int A, int B, int C) {
  __asm {
      push ebx
      mov eax, A
      mov ecx, B
      mov ebx, C
      jecxz false
      cdq
      imul ebx, ecx
      idiv ecx
      false:
      sub eax, ebx
      pop ebx
  };
}

int main()
{
  int A, B, C;
  cout << "Input A = "; cin >> A;
  cout << "Input B = "; cin >> B;
  cout << "Input C = "; cin >> C;
  cout << endl << Y(A, B, C) << endl << "Press return. . ." << endl;
  getchar();
  return 0;
}
GCC C++ съедает. По идее и Visual Studio тоже проглотит.

ADD: От первоначального варианта не сильно отличается же.
ADD: на VS16.11 (msvc 19.29) точно работает

Последний раз редактировалось macomics; 09.05.2022 в 07:38.
macomics вне форума Ответить с цитированием
Старый 09.05.2022, 08:14   #5
c_pluspluser
 
Регистрация: 18.12.2021
Сообщений: 7
По умолчанию

macomics, благодарю, работает
c_pluspluser вне форума Ответить с цитированием
Ответ
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Организация программ с использованием процедур .использованием параметров-значений и параметров переменных Фрейтор 40-500 Помощь студентам 0 02.11.2012 21:58
Организация программ с использованием процедур .использованием параметров-значений и параметров переменных Фрейтор 40-500 Помощь студентам 6 02.11.2012 21:46
Оставление курсора на строке Breaknoise Общие вопросы C/C++ 1 11.09.2011 03:04
создание программ с использованием циклов tracer Помощь студентам 3 10.05.2011 19:29