Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/34: Рейтинг темы: голосов - 34, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 7

Переполнение слова

22.02.2010, 14:57. Показов 6477. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.

Имеется задача: сложить(или умножить - без разницы) два слова(слово - 8 бит). Если, допустим, принять за значения этих двух чисел все единицы (11111111 и 11111111) то результат уже не поместится в одинарное(8-битное) слово, да и в регистр ax, например.

Вопрос: как можно отследить переполнение в данных операциях, и как организовать запоминание вычисленного значения(например ,11111111 x 11111111 = 1111111000000001), чтобы с ним можно было работать в дальнейшем.

п.с. программа под DOS, .com приложение, модель памяти tiny

Заранее благодарю за ответ.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.02.2010, 14:57
Ответы с готовыми решениями:

Проверка на переполнение числом слова
Нужно найти максимальное число N, при котором N! не переполняет слова Моя программа выводит на экран 5, подскажите где ошибка ...

Переполнение
Добрый день! Программа должна выдавать сообщение с флагом OF, когда происходит переполнение Собственно вопрос в том, почему при 22000...

Переполнение деления
Здравствуйте! Мне необходимо решить пример в ввиде : 1*(1/2). Но после после линковки и запуска com файла через командную строку пишет:...

7
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
22.02.2010, 15:36
В слове, а ровно как и в регистрах типа ax, 16 бит, а не 8.

Цитата Сообщение от Maxixixi Посмотреть сообщение
Вопрос: как можно отследить переполнение в данных операциях, и как организовать запоминание вычисленного значения(например ,11111111 x 11111111 = 1111111000000001), чтобы с ним можно было работать в дальнейшем.
При умножении, емкость ответа в 2 раза больше, емкости операндов. Т.е. если операнды по 16 бит, например mul bx, то ответ будет в dx:ax.
Если же при вычислениях ответ все же не поместился, то устанавливается флаг CF.
0
0 / 0 / 0
Регистрация: 02.12.2009
Сообщений: 7
22.02.2010, 17:30  [ТС]
точно, в слове 16 бит, сорри за ошибку.

У меня еще один критичный вопрос: в ассемблере для представления знаковых чисел используют операцию дополнения до двух: В этом формате старший (7-й, 15-й, 31-й для байта, слова, двойного слова соответственно) бит всегда соответствует знаку числа 0 — для положительных и 1 — для отрицательных. Таким образом, схема с использованием дополнения до двух выделяет для положительных и отрицательных чисел равные диапазоны: -128 — +127 — для байта, -32 768 — +32 767 — для слов, -2 147 483 648 — +2 147 483 647 — для двойных слов.

Рассматривать если случай работы со словами.
Допустим у меня есть слово, как на ассемблере алгоритмически определить, является оно знаковым, или же нет?
То есть допустим есть 2 слова:

0000 0000 0000 0011 0010b и 1111 1111 1100 1110 (50 и -50).
Понятно, что так как в старшем бите у первого числа стоит 0, это отрицательное число, а во втором наоборот. С помощью каких операций, или илгоритма на ассемблере можно выполнить проверку на отрицательность?
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
22.02.2010, 18:00
Если число находится в регистре, получено только что в результате операции, то проще всего проверить флаг SF. А вообще можно просто проверять старший бит командой test.
Assembler
1
2
3
test word ptr [num],8000h
test al,80h
test eax,80000000h
1
0 / 0 / 0
Регистрация: 02.02.2010
Сообщений: 10
26.02.2010, 05:32
a kak teper umnojit na 4islo kotoroe stoit v dx:ax?
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.08.2014, 00:45
выполнить проверку на отрицательность можно вот так

Assembler
1
2
neg ax
js <метка>
0
Ушел с форума
Автор FAQ
 Аватар для Mikl___
16371 / 7683 / 1080
Регистрация: 11.11.2010
Сообщений: 13,757
02.08.2014, 03:22
Цитата Сообщение от proc3nt Посмотреть сообщение
выполнить проверку на отрицательность
а для чего нужен NEG? Для получения модуля? Вообще-то проверка на отрицательное число делается так
Assembler
1
2
test ax,ax
js <метка>
0
Прощай, Мир!
 Аватар для proc3nt
1673 / 831 / 253
Регистрация: 26.05.2012
Сообщений: 3,056
02.08.2014, 03:39
я написал можно, но не обязательно. ведь команда neg может изменять флаг sf. но, конечно, вариант с test'ом будет получше.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.08.2014, 03:39
Помогаю со студенческими работами здесь

Ошибка: переполнение деления
stk segment stack 'stack' db 256 dup(?) stk ends data segment...

Переполнение регистра на assembler
Подскажите как в программе сделать проверку переполнения регистра ? mov ax,4000H ;делимое mov bl,2 ;делитель -...

Не получается сделать переполнение
Не получается сделать переполнение,по условию задачи нужно вычислить правую и левую часть тождества на С и на Ассемблере,в 3х из 4х...

TASM Hello World переполнение строки
Устал искать причину, помогите новичку. hello DB 'Hello World!$' - компилирует hello DW 'Hello World!$' - переполнение

Переполнение при выполнении деления (div)
Приветствую. Использую asm вставки на C++. Пытаюсь написать функцию возвращающую результат деления a на b. short int asmdiv(short...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru