IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> idiv asm-вставка, получить результат
sheka
сообщение 12.01.2012 17:40
Сообщение #1


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Каким образом можно получить результат
idiv bl
в переменную
f: float;
т.е. как его "собрать" из частей?

Сообщение отредактировано: sheka - 12.01.2012 17:40
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 12.01.2012 19:37
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Что такое переменная типа Float? Нет в Паскале такого типа... smile.gif

Приводи чуть больше кода, что за операнды, что на что ты делишь и почему надо собирать из частей, когда можно либо потом перенести число в вещественную переменную, либо сразу задействовать сопроцессор и работать с вещественной переменной?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 12.01.2012 20:08
Сообщение #3


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Тяжелый вопрос. Все что могу сказать, так это то, что некоторое число (у меня оно хранится в ах) мне нужно поделить на другое число (не больше 8 бит). После выполнения деления хотелось бы сделать
mov f, регистр
, но так же делать нельзя, ведь
Алгоритм работы idiv: (Показать/Скрыть)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 12.01.2012 21:28
Сообщение #4


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
некоторое число (у меня оно хранится в ах) мне нужно поделить на другое число (не больше 8 бит).
Поделил. Частное - в AL, остаток - в AH... Что именно надо занести в f, остаток или частное? Это все-таки целочисленное деление, не забыл? Еще раз: какого типа f? Я не знаю, что такое Float. Real - есть, Single/Double/Extended - есть. Больше ничего нет.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 12.01.2012 22:00
Сообщение #5


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


f типа Real. занести полностью дробное число.

Вот пытался просто вывести на экран:
q,w: shortint;
..
idiv cl
mov q, al
mov w, ah
..
writeln('result= ', q, '.', w);

выводит неправильный остаток
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 12.01.2012 22:22
Сообщение #6


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата(sheka @ 12.01.2012 21:00) *
выводит неправильный остаток
"Не верю" (С)

var
q,w: shortint;
begin
asm
xor ax, ax
mov ax, 121
mov cl, 10

idiv cl
mov q, al
mov w, ah
end;;
writeln('result= ', q, '.', w);
end.
Как и ожидалось, "result= 12.1", если поменять делитель на 11 - то выведет "result= 11.0". Что не так?

Проверяй остальные этапы. Здесь все нормально.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
sheka
сообщение 12.01.2012 22:43
Сообщение #7


Я.
****

Группа: Пользователи
Сообщений: 809
Пол: Мужской
Реальное имя: Саша

Репутация: -  11  +


Это я, видите ли, захотел, чтобы мне остаток писало в десятичном виде, цифрами после запятой. smile.gif

А все же, как записать полученный результат в переменную типа Real? Это же можно как-то сделать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
IUnknown
сообщение 12.01.2012 22:50
Сообщение #8


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Можно. Делить не в целочисленных регистрах, а в сопроцессоре:

fild делимое_целое
fidiv делитель_целое
fstp f
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 24.05.2024 13:05
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"