Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > деление чисел (tasm)


Автор: paSha_X 14.5.2008, 00:06
Помогите пожалуйста преобразовать этот код для tasm, итли может у кого есть алшоритм другой...
Код

masm
model small
stack 256
.data
del_b label byte
del dw 29876
deltdb 45
.code ;сегмент кода
main: ;точка входа в программу
хог ах, ах
mov ah,del_b    ;старший байт делимого в ah
mov al,del_b+l  ;младший байт делимого в al
div delt    ;в al - частное, в ah - остаток
end main    ;конец программы


Автор: anwe 14.5.2008, 21:57
Код

.model tiny
.code
org 100h
start:
;хог ах, ах ;зачем, если в него в следующей строке заносятся данные?
mov ax,del ;заносится сразу слово
xor dx,dx ;перед делением, потом тут окажется остаток
div delt
ret
del dw 29876
delt dw 45 ;если размерность будет байт, то и разделит байт из al, а не слово из ax
end start

Автор: Mikl_ 15.5.2008, 11:11
paSha_X, можно и по-другому - если делитель известен заранее, тогда деление заменяют на умножение X/45=X*(65536/45)/65536=X*1456/65536
Код

.model tiny
.code
org 100h
start:
mov ax,del ;заносится сразу слово
mul delt ; результат в dx 
ret
del dw 29876
delt dw 1456 ;=65536/45
end start

Автор: paSha_X 15.5.2008, 20:17
Цитата(anwe @ 14.5.2008,  21:57)
Код

.model tiny
.code
org 100h
start:
;хог ах, ах ;зачем, если в него в следующей строке заносятся данные?
mov ax,del ;заносится сразу слово
xor dx,dx ;перед делением, потом тут окажется остаток
div delt
ret
del dw 29876
delt dw 45 ;если размерность будет байт, то и разделит байт из al, а не слово из ax
end start

anwe, пишет "переполнение деления" это что значит?

Автор: anwe 15.5.2008, 20:21
Цитата(paSha_X @  15.5.2008,  19:17 Найти цитируемый пост)
"переполнение деления" 

Прям так и пишет?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)