val dw 99
dvl dw 4
mov eax,val
div [dvl] ;на етом месте вылетает ошибка
Деление чисел, хелп!
Доброго времени суток. Как поделить число 99, например, на 4 и получить целое (в данном случае ето 24) и остаток (75 сотых)? Дело в том, что я уже читал на нашем форуме различную инфу об ассемблере и знаю что есть инструкция div для етого, но я невдуплил как ею пользоваться :( Так что помогите пожалуйста примером с хорошими коментариями, и желательно на fasm'е :)
dvl db 4
mov al, [val] ;загружаем баит данных
div [dvl] ;делим
теперь в al целое от деления а в ah остаток
для слов целое от деления в ax остаток в dx
для двойных слов целое от деления в eax остаток в edx
Код:
Что я неправильно делаю?
Цитата:
val dw 99
dvl dw 4
mov eax,[COLOR="Red"]val[/COLOR]
div [dvl]
А метку val слабо в скобки квадратные взять? а то ты адрес делишь...
я так уже далел, вот результат:
Error: operand sizes do not match
А ошибка Error: operand sizes do not match
из-за присваивания регистру eax слова, а не двойного слова
Короче, готовый код:
Код:
val dw 99
dvl dw 4
xor dx,dx
mov ax,[val]
div [dvl]
ax - частное
dx - остаток
dvl dw 4
xor dx,dx
mov ax,[val]
div [dvl]
ax - частное
dx - остаток
О, вот теперь работает! Только как то криво... Частное выводиться правильно (24) а вот остаток - 3, вместо 75 :(
99=4*24+3, все правильно. Что вы имеете ввиду под остатком?
и повторным деленмем.
ну я под остатком имел ввиду 75 сотых, ето типа так: 99/4=24,75
В этом случае может лучше использовать сопроцессор?
небольшой мануал по FPU