Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

[Asm] Найти целую часть и остаток от деления

70K
26 апреля 2011 года
xero
1 / / 26.04.2011
Нужно сделать в виде ассемблерной вставки в С++:

Заданы два числа <= 256. Найти целую часть от деления первого числа на второе и остаток деления. Записать две полученные величины одно за другим без пропуска битов в в ячейку памяти размером в два байта.

#include <iostream>
using namespace std;
int main()
{
byte num1,num2;
short nres;
cin>>num1>>num2;
_asm
{
mov ax,0
mov al,[num1]
mov bl,[num2]
div bl
mov [nres],ax

}
cout<<nres;
}

как доделать?
7
26 апреля 2011 года
@pixo $oft
3.4K / / 20.09.2006
А AL/AH находятся результат и остаток.Собственно,задача уже готова.Только nres*–это всё же переменная,в которую пишется результат,а не содержащая адрес другой переменной.Поэтому Mov nres,AX
71K
10 мая 2011 года
robert19
3 / / 10.05.2011
Есть такой код, но что то все равно не работает, можешь помочь в чем дело:
#include <iostream>
using namespace std;
int main(){
setlocale(LC_ALL,"Russian");
int num1,num2;
short nres;
cout<<"Введите 1-е число <= 256: ";
cin>>num1;
if (num1>256){
cout<<"Вы ввели число больше 256!"<<endl;
system("pause");
exit(1);
}
cout<<"Введите 2-е число <= 256: ";
cin>>num2;
if (num2>256){
cout<<"Вы ввели число больше 256!"<<endl;
system("pause");
exit(1);
}
__asm{
xor dx, dx ;обнулить dx
mov ax, word ptr num1
div word ptr num2
mov byte ptr nres[0], al ;результат в 1-й байт nres
cmp ah, 1 ;если результат больше 255,
jne L1
rol dl, 1 ;сдвинуть остаток влево на 1 бит
or dl, 1 ;и добавить к остатку перенос из первого байта результата

L1:
mov byte ptr nres[1], dl ;остаток во 2-й байт nres
}
cout<<nres<<endl;
system("pause");
}
14
11 мая 2011 года
Phodopus
3.3K / / 19.06.2008
С каких это пор jne стало "если больше" или "если меньше"?
71K
15 мая 2011 года
robert19
3 / / 10.05.2011
Цитата: Phodopus
С каких это пор jne стало "если больше" или "если меньше"?



jne это вроде переход на метку

7
15 мая 2011 года
@pixo $oft
3.4K / / 20.09.2006
Но переход-то по условию!Условие «&#8800;»
71K
17 мая 2011 года
robert19
3 / / 10.05.2011
Цитата: @pixo $oft
Но переход-то по условию!Условие «&#8800;»



да тут хоть с условием хоть без него, все равно не правильно работает((( подскажите как правильно должно быть

14
18 мая 2011 года
Phodopus
3.3K / / 19.06.2008
Это потому что изначальное задание некорректно
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог