Выполнение подсчёта чисел - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д