Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361

Делимое не делится на делитель?

05.11.2010, 12:07. Показов 1321. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
У мну в учебнике написано так:
Если делитель имеет размер 2 байта. Тогда делимым будет число, находящееся в паре регистров
DX:AX. Результат будет помещен в регист AX.
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <iostream>
using namespace std;
 
int main() {
  
  
   unsigned short k=2;
  
  _asm {
   MOV AX,10
   DIV k
   MOV k,AX
  }
 
  cout << k;
  return 0;
}
Я сделал как они просят ,но почемуто выводится не 5 ,а 32773 почему так?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2010, 12:07
Ответы с готовыми решениями:

Найти делимое, зная делитель и остаток
Доброго времени суток. Помогите решить задачу: найти делимое, зная делитель и остаток. То есть это все представлено в виде: х mod A = 1....

Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N,
решить нужно с функциями пользователя на языке си. вот, я около этого... помогите, будьте бобры #include &lt;stdio.h&gt; #include...

Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N, иначе НОД (N, M)= =НОД (M mod N, N).
Найти наибольший общий делитель чисел M и N. Используйте теорему Эйлера: Если M делится на N, то НОД (N, M)=N, иначе НОД (N, M)= =НОД (M...

6
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
05.11.2010, 12:49
Цитата Сообщение от ElvenDragon Посмотреть сообщение
Тогда делимым будет число, находящееся в паре регистров
DX:AX
Ну и что у вас в dx при этом будет ?
1
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
05.11.2010, 17:40  [ТС]
Хм я не думал что такой прикол будет типа DX должно быть равно 0 при умножении такого небыла.

#include <iostream>
using namespace std;

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
int main() {
  
  
   unsigned short k=2;
  
  _asm {
    MOV AX,10
    MOV DX,0
    DIV k
    MOV k,AX
  }
 
  cout << k;
  return 0;
}
Ну теперь все норм.

Добавлено через 1 час 9 минут
Еще вопрос.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <iostream>
using namespace std;
 
int main() {
  
    int k;
  
  _asm {
    
    MOV EAX,-2
    MOV EDX,0
    MOV ECX,2
    IDIV ECX
    MOV k,EAX
  }
  
  cout << k;
  return 0;
}
Почему получается 2147483647 а не -1?
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
05.11.2010, 19:01
Опять таки вы не дочитали предложение
Цитата Сообщение от ElvenDragon Посмотреть сообщение
Тогда делимым будет число, находящееся в паре регистров
EDX:EAX. Результат будет помещен в регист EAX.
Используйте команды cdq(Convert Double to Quard ) и cwd (Convert Word to Double) для знакового расширения eax в edx и ax в dx соответственно.
0
4190 / 1838 / 221
Регистрация: 06.10.2010
Сообщений: 4,124
05.11.2010, 19:29
если eax=-2, то edx должен содержать -1, а не 0.
0
 Аватар для ElvenDragon
3 / 8 / 1
Регистрация: 12.07.2009
Сообщений: 361
06.11.2010, 11:11  [ТС]
Да вот ток мне интересно почему -1 в регистре EDX так повлияло на результат расскажите что произошло?
0
22 / 22 / 0
Регистрация: 12.07.2010
Сообщений: 42
07.11.2010, 04:08
Команда idiv - делит знаковые числа. Знак числа определяется старшим битом числа.
В вышеописаном случае необходимо было поделить -2 на 2, но для команды деления делимое и частное выглядело так:
Code
1
2
3
00000000h:fffffffeh     00000000fffffffeh
-------------------  =  -----------------
    fffffffeh              fffffffeh
т.е. положительное и очень большое число (4294967294d) делилось на отрецательное и очень малое (-2d).
Если числитель -2, то это необходимо указывать так
Code
1
2
3
00000000h:fffffffeh     fffffffffffffffeh
-------------------  =  -----------------
    fffffffeh              fffffffeh
что и делает указанная выше команда cdq - заполняя все биты регистра edx знаковым (старшим, левым) битом из числа eax.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.11.2010, 04:08
Помогаю со студенческими работами здесь

задача. Самое маленькое делимое
2520 — самое маленкое число, которое делится без остатка на все числа от 1 до 10. Какое самое маленькое число делится нацело на все числа...

Получить делимое, наиболее близкое к заданному числу
Нужна функция которой на вход подается целое число и делитель, а на выходе получается целое число наиболее близкое к поданному на вход, но...

Найти наименьшее общее делимое числам, N и M, которые вводит пользователь
Всем доброго время суток , можете пожалуйста помочь с программой - очень нужно и буду рад если вы поможете )))) Задание: Найти...

Найти натуральное число M такое, что M делится на N и сумма цифр M делится на N
256 мегабайт, 2 секунды Задано натуральное число N (1 ≤ N ≤ 100 000). Найдите натуральное число M такое, что M делится на N и сумма...

Если а делится на b или b делится на а, то вывести 1, иначе— любое другое число
Даны два целых числа а и b. Если а делится на b или b делится на а, то вывести 1, иначе— любое другое число. Условные операторы и...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru