Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2009, 12:01   #1
Mixim
Форумчанин
 
Регистрация: 29.10.2009
Сообщений: 259
Вопрос Проблема с командой CWD в TAsm

Я должен произвести расчет Y по формуле Y=(a*b-c+d)/e без использования сопроцессора. Создаю в TAsm модуль со следующим кодом для вычисления Y:
Код:
Model Large
.data
Extrn Y:dword, a:word, b:word, c:word, d:word, e:word
.code
Public Proc2
Proc2 proc far
mov Ax, a
imul b
sub Ax, c
add Ax, d
xor dx, dx
idiv e
cwd
mov word ptr Y, Ax
mov word ptr Y+2,Dx
ret
Proc2 endp
end
Когда при делении число получается целое, программа всё хорошо считает, но когда возникает дробное число, машина почему то выводить лишь целую часть этого числа.
Команда CWD должна записывать в регистр Ax целую часть от деления, а в регистр Dx дробную часть, но почему то она этого не делает.
Подскажите пожалуйста, что неправильно в этом коде
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
Mixim вне форума Ответить с цитированием
Старый 16.12.2009, 13:33   #2
Goodwin98
equ asm
Участник клуба
 
Аватар для Goodwin98
 
Регистрация: 02.05.2009
Сообщений: 1,605
По умолчанию

Команда CWD знаково расширяет ax до dx:ax , т.е. заносит в dx 0 или 0ffffh, но никак не разделяет числа на дробную и целую часть часть. И вообще она должна стоять перед делением вместо xor dx,dx, если по хорошему.
Какой вопрос - такой ответ. Не забываем пользоваться поиском, гуглом.
Помощь в выполнении работ по ассемблеру ICQ:2725322O4
Goodwin98 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TASM дело тонкое!:) (Где в TASM IDE?) 3.14oner Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 9 15.11.2011 16:20
Создание формы командой из DLL Alex Cones Общие вопросы Delphi 12 29.09.2009 18:06
не копирует фаил командой copyfile Dozent Общие вопросы Delphi 3 21.06.2009 00:25
Как вызвать командную строку с командой из Edit?? dolphin705 Общие вопросы Delphi 2 20.06.2009 00:33
Проблема с DPMI в TASM Rurisk Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 01.05.2008 23:17