Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.05.2022, 08:20   #1
astat_man
Новичок
Джуниор
 
Регистрация: 10.05.2022
Сообщений: 1
По умолчанию оставление программ и использованием ассемблерной вставки!

Необходимо создать программу для вычисления примера ниже на ассемблере с использованием ветвления и ввод через C++ через консоль.
Ввод через cin;
Программа VisualStudio,
Числа целые;
Intel80x86

Пожалуйста! Скоро сдача
КОД:

A/B+C*A, если B<>0
Y:={
A+C*A, если B=0
astat_man вне форума Ответить с цитированием
Старый 10.05.2022, 10:05   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Вот от этой программы она отличается 2-я командами: одну переставить, вторую переписать. Но так и быть. Текст на ассемблере вот:
Код:
      push ebx
      mov eax, A
      mov ebx, C
      mov ecx, B
      imul ebx, eax
      jecxz false
      cdq
      idiv ecx
      false:
      add eax, ebx
      pop ebx
Шаблон возьмите из темы по ссылке.
macomics вне форума Ответить с цитированием
Старый 11.05.2022, 05:09   #3
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,639
По умолчанию

Вот так криво / г-код

Код:
#include <iostream>

using namespace std;

int main()
{
	int a;
	int b;
	int c;
	int r (0);
	cout << "Hello World!\n"; 
	cin >> a;
	cin >> b;
	cin >> c;

        // СОДЕРЖИМОЕ РЕГИСТРОВ
	int qax;
	int qbx;
	int qcx;
	int qdx;

	__asm
	{
		mov eax, a
		mov ebx, b
		mov ecx, c
		cdq
		
		test ebx, ebx 
		jz e1
		
		div ebx  // !!! EAX = EAX / EBX !!!

		mov ebx, eax // XXX mov edx, eax XXX

		mov eax,a
		mul ecx  // !!! EAX = EAX * ECX !!!

		add eax, ebx //  !!! EAX = EAX + EBX !!!

		mov r, eax // 8 2 1 // +++r:  12 +++

		jmp rt

		e1: // 8 0 1 // +++ r: 16 +++
		mul ecx  // !!! EAX = EAX * ECX !!!
		mov ebx, eax
		mov eax, a
		add eax, ebx //  !!! EAX = EAX + EBX !!!
		mov r, eax

		rt:
		mov qax, eax
		mov qbx, ebx
		mov qcx, ecx
		mov qdx, edx

	};

        // СОДЕРЖИМОЕ РЕГИСТРОВ
	cout << "qax: " << qax << "\n" <<
		"qbx: " << qbx << "\n" <<
		"qcx: " << qcx << "\n" <<
		"qdx: " << qdx << "\n" 
		;
	cout << "r: " << r << "\n";
	return 0;
}
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 11.05.2022, 11:25   #4
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Цитата:
Сообщение от challengerr Посмотреть сообщение
div ebx // !!! EAX = EAX / EBX !!!
mul ecx // !!! EAX = EAX * ECX !!!
Только вы кое-что пропустили. Тип int - знаковый, а команды у вас беззнаковые.
macomics вне форума Ответить с цитированием
Старый 24.09.2022, 06:16   #5
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

Хорошо , буду думать
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Старый 25.09.2022, 11:48   #6
Nif-naf
Форумчанин
 
Аватар для Nif-naf
 
Регистрация: 05.09.2016
Сообщений: 131
По умолчанию

Код:
#include"stdafx.h"
#include"iostream.h"
int _tmain(int argc, _TCHAR* argv[])
{ float d;
while(true){
cin>>a;
cin>>b;
cin>>c;
while(b!=0){
_asm{
finit
fild DWORD PTR c
fimul DWORD PTR a
fistp DWORD PTR d
fld DWORD PTR a
fld DWORD PTR b
fdiv ST(1), ST(0)
fxch ST(1)
fadd DWORD PTR d
fstp DWORD PTR d
fwait };
while(b=0){
_asm{
finit
fild DWORD PTR c
fimul DWORD PTR a
fistp DWORD PTR d
fwait };
cout<<d; } }
Немного о GoAsm.
Nif-naf вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вычислить выражение с использованием асембл. вставки c_pluspluser Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 09.05.2022 11:13
оставление программ и использованием ассемблерной вставки c_pluspluser Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 09.05.2022 08:14
Организация программ с использованием процедур .использованием параметров-значений и параметров переменных Фрейтор 40-500 Помощь студентам 0 02.11.2012 21:58
Организация программ с использованием процедур .использованием параметров-значений и параметров переменных Фрейтор 40-500 Помощь студентам 6 02.11.2012 21:46