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

Ваш аккаунт

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

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

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

Деление чисел, хелп!

5.1K
12 июля 2007 года
12345678
93 / / 16.12.2006
Доброго времени суток. Как поделить число 99, например, на 4 и получить целое (в данном случае ето 24) и остаток (75 сотых)? Дело в том, что я уже читал на нашем форуме различную инфу об ассемблере и знаю что есть инструкция div для етого, но я невдуплил как ею пользоваться :( Так что помогите пожалуйста примером с хорошими коментариями, и желательно на fasm'е :)
23K
12 июля 2007 года
HumanAPI
18 / / 07.03.2007
val db 99
dvl db 4

mov al, [val] ;загружаем баит данных
div [dvl] ;делим
теперь в al целое от деления а в ah остаток

для слов целое от деления в ax остаток в dx
для двойных слов целое от деления в eax остаток в edx
5.1K
12 июля 2007 года
12345678
93 / / 16.12.2006
Делаю так:

 
Код:
val dw 99
  dvl dw 4

    mov eax,val
    div [dvl]  ;на етом месте вылетает ошибка


Что я неправильно делаю?
245
12 июля 2007 года
~ArchimeD~
1.4K / / 24.07.2006
Цитата:

val dw 99
dvl dw 4

mov eax,[COLOR="Red"]val[/COLOR]
div [dvl]


А метку val слабо в скобки квадратные взять? а то ты адрес делишь...

5.1K
12 июля 2007 года
12345678
93 / / 16.12.2006
>А метку val слабо в скобки квадратные взять? а то ты адрес делишь...

я так уже далел, вот результат:
Error: operand sizes do not match
1.9K
12 июля 2007 года
disasm
232 / / 06.02.2006
Не в этом дело! Надо перед div-ом регистр dx(edx) обнулять!

А ошибка Error: operand sizes do not match
из-за присваивания регистру eax слова, а не двойного слова

Короче, готовый код:
 
Код:
val dw 99
dvl dw 4

xor dx,dx
mov ax,[val]
div [dvl]
ax - частное
dx - остаток
5.1K
13 июля 2007 года
12345678
93 / / 16.12.2006
>Надо перед div-ом регистр dx(edx) обнулять!

О, вот теперь работает! Только как то криво... Частное выводиться правильно (24) а вот остаток - 3, вместо 75 :(
1.9K
13 июля 2007 года
disasm
232 / / 06.02.2006
А как может быть остаток 75 при делении на 4 ?????
99=4*24+3, все правильно. Что вы имеете ввиду под остатком?
7.8K
13 июля 2007 года
Tingo
201 / / 17.05.2007
для этого придется повторить операцию несколько раз с уножением на*10
и повторным деленмем.
5.1K
13 июля 2007 года
12345678
93 / / 16.12.2006
ну я под остатком имел ввиду 75 сотых, ето типа так: 99/4=24,75
1.9K
13 июля 2007 года
disasm
232 / / 06.02.2006
Так просто ничего не получится... Это тут 0.75 можно преобразовать в 75, а если получится 0.333333(3) ?
В этом случае может лучше использовать сопроцессор?
261
15 июля 2007 года
ahilles
1.5K / / 03.11.2005
небольшой мануал по FPU
http://rfteam.110mb.com/asm/5.php
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог