[Asm] Найти целую часть и остаток от деления
Заданы два числа <= 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;
}
как доделать?
А AL/AH находятся результат и остаток.Собственно,задача уже готова.Только nres*–это всё же переменная,в которую пишется результат,а не содержащая адрес другой переменной.Поэтому Mov nres,AX
#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");
}
С каких это пор jne стало "если больше" или "если меньше"?
Цитата: Phodopus
С каких это пор jne стало "если больше" или "если меньше"?
jne это вроде переход на метку
Но переход-то по условию!Условие «≠»
Цитата: @pixo $oft
Но переход-то по условию!Условие «≠»
да тут хоть с условием хоть без него, все равно не правильно работает((( подскажите как правильно должно быть
Это потому что изначальное задание некорректно