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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.06.2011, 07:50   #1
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
Вопрос Ассемблер(NASM). Как оформить цикл "while" в NASM-е?

Ну что ж,уважаемые форумчане...начнём. Вообще говоря, мне нужна программа,написанная именно на NASM-е, которая позволит переводить числа из десятичной системы счисления и восьмеричную.
На самом деле теплится у меня надежда на то,что кто-то из вас когда-то писал такую штуку на NASM-е и у него завалялся код. Но прочь мечты и надежды. О проблеме. Проблема в том,что я не знаю(и не нагуглил ничего по этому поводу путнего),как оформить циклы в этом самом NASM-е. Мне нужен цикл "while". Так вот. Прошу помочь мне с этой проблемой...то есть написать пример использования цикла while в NASM-е.


Если можно,то с пояснениями.
Зелёный вне форума Ответить с цитированием
Старый 09.06.2011, 08:29   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Асма под рукой нет, но while в целом мог бы выглядеть как набор:
Код:
@началоцикла:
cmp что-то, с чем-то
jXX конеццикла
 ...
  Операторы цикла
  jmp @началоцикла
 ...
@метка конца цикла:
...
где jXX - одна из команд условного перехода
Кстати не лише поинтересоваться есть ли в нем макроподстановки типа .WHILE.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 09.06.2011, 08:37   #3
Зелёный
Пользователь
 
Регистрация: 26.11.2010
Сообщений: 29
По умолчанию

По-моему нет там .WHILE. В этом вся и сложность.

А нельзя ли всё же пример какой-нибудь простенький? хоть примерно...

"cmp что-то, с чем-то"-вот это для меня загадкой остаётся...


нельзя ли написать для примера...делить A на Б ,пока С(результат деления) не станет равен к примеру единице. Или что-то совсем простое...но ассемблерным кодом всё же, а не псевдокодом.
Зелёный вне форума Ответить с цитированием
Старый 09.06.2011, 17:02   #4
zotox
Форумчанин
 
Регистрация: 09.09.2008
Сообщений: 395
По умолчанию

Цитата:
делить A на Б ,пока С(результат деления) не станет равен к примеру единице
Держите:
Код:
main:
;begin program
mov ax, 0010
mov bx, 0002

;сам while
while:
idiv bx;на что делим
mov ah, 0;обнуляем остаток
cmp al, 1;al = результат деления
jne while;пока al <> 1, то выполняем цикл

;end program
zotox вне форума Ответить с цитированием
Старый 09.06.2011, 21:07   #5
mss
Заблокирован
 
Регистрация: 27.05.2010
Сообщений: 1,099
По умолчанию

Цитата:
делить A на Б ,пока ..не
какой же это вайл ?)
вайл вообще-то подразумевает ПРЕДусловие..
в твоем "примере" это должно было бы звучать "пока (не) чего-то там делить A на Б"

Разницу чуешь между "делить .. пока что-то там (не) приключилось" и "пока что-то там (не) приключилось .. делить" ?
mss вне форума Ответить с цитированием
Старый 10.06.2011, 16:04   #6
Studik
Пользователь
 
Аватар для Studik
 
Регистрация: 07.05.2010
Сообщений: 34
По умолчанию

Цитата:
Сообщение от mss Посмотреть сообщение
Разницу чуешь между "делить .. пока что-то там (не) приключилось" и "пока что-то там (не) приключилось .. делить" ?
В том и прелесть ассемблера. Ему пофиг хочешь цикл с пред условием или с пост условием. Суть прежняя а разница практически сводится к месту использования команды сравнения (например cmp). Думаю Зеленому необходимо просто изучить команды условного и безусловного перехода, а принципиального значения нет какой цикл он хочет организовать
Если бы все люди были идеальны, то любого человека можно было бы заменить любым другим...

Последний раз редактировалось Studik; 10.06.2011 в 16:07.
Studik вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как обойти "преобразование типа из "string" в "float" невозможно" lexluter1988 Помощь студентам 1 07.08.2010 12:23
Подскажите как оформить "промежуточное окно" Herly Общие вопросы Delphi 9 13.12.2009 23:06
Переливающиеся и мигающие ячейки. Или "Как красиво оформить документ." ru3000 Microsoft Office Excel 5 22.11.2009 20:07
Как "оформить" COM порт? Suter Работа с сетью в Delphi 5 26.02.2009 18:13