Выполнение подсчёта чисел - Assembler
Формулировка задачи:
Привет всем, помогите, пожалуйста!
Задание:
Сума между числом и средним арифметическим двух других чисел.
Условно: a + ( (b+c)/2 ); Делаю в среде вижуал, подключая _asm .
Мой код:
#include "stdafx.h"
#include"conio.h"
#include <iostream>
using namespace std;
void main()
{
short a, b, c;
cout « "Sumator a+ (b+c)/2" « endl;
cout « "a=";
cin » a;
cout « "b=";
cin » b;
cout « "c=";
cin » c;
short res = 0;
_asm
{
mov ax, a
mov bx, b
mov cx, c
add bx, cx
cwd
mov cx, 2
div cx
add ax, cx
mov res, ax
}
cout « res;
cin.get();
}Решение задачи: «Выполнение подсчёта чисел»
textual
Листинг программы
mov ax,b add ax,c sar ax,1 add ax,a mov res,ax
Объяснение кода листинга программы
mov ax,b- Перемещение значения переменной b в регистр ax.add ax,c- Добавление значения переменной c к значению в регистре ax.sar ax,1- Умеренное сдвигание значения в регистре ax вправо на 1 бит.add ax,a- Добавление значения переменной a к значению в регистре ax.mov res,ax- Запись значения из регистра ax в переменную res.