Деление с остатком

Низкоуровневое программирование портов, микроконтроллеров и т.д.

Модератор: Andy

airyashov
Сообщения: 441
Зарегистрирован: 02 ноя 2007, 10:31

не в моих правилах, но вот ваш алгоритм вычисления, разберитесь для 1,1,1,1 работает
-2671

Код: Выделить всё

	;Вычисление выражения:
	int 3
	xor	AX,AX
	mov	AL, a		;помещаем в АL множитель a
	cmp	AX, 0
	jne	dalee_1
	mov	AH, 09h
	lea	DX, MsgErr
	int	21h
	jmp	dalee
dalee_1:
	mov 	AL, c		;помещаем в AL с
	imul	x		;умножаем на х
	mov	BX, AX		;переноси результат из АХ в ВХ
	mov	AX, d		;помещаем в АХ число 2807
	xor cx,cx
	mov cl,b
	imul cx			;умножаем на b
	sub	BX, AX		;вычитаем
	push	BX		;заносим числитель в стек
	mov	AL, a		;помещаем в AL а

	imul	a		;возводим в квадрат
	mov	BX, AX		;переноси результат из АХ в ВХ
	pop	AX		;достаем из стека числитель
;	xor	DX, DX		;обнуляем DX
	cwd			;расширяем числитель до двойного слова DX:AX
	
	idiv	BX		;делим числитель на знаменатель в АХ-целая часть, в DX-остаток
	push	BX		;убираем в стек знаменатель
	push	AX		;убираем в стек целую часть
	xor cx,cx
	mov cl,x
	mov	ax, e		;заносим в АХ е	
	imul	cx		;умножаем на х
	mov	BX, AX		;перемещаем DX:AX в CX:BX

	pop	AX		;достаем из стека целую часть дроби
	
	;cwd			;расширяем ес до двойного слова DX:AX
	add	AX, BX		;складываем с ранее найденным произведением
Ответить