2015-04-27 2 views
1

Я пытаюсь работать с nasm от C и просто нелегко с основами nasm. Im пытается преобразовать простой в то время как цикл, как этотПростая петля в NASM от C

while(j < k) 
{k = k + 1; 
j = j + 2; 
count = count + 1; 
} 

Я знаю, что это будет выглядеть как

Loopee: 

???? 
add dword [k], 1 
add dword [j], 2 
add dword [count], 1 

, но я не уверен, как структурировать время цикла, где она закругляется только до J не меньше k.

+0

Вы видели эту ссылку? [сборка для сравнения двух чисел] (http://stackoverflow.com/questions/1123396/assembly-to-compare-two-numbers) – Tamerz

+1

Сначала напишите на C, затем используйте свой компилятор для создания asm (например, 'gcc -S ... '), затем используйте сгенерированный asm в качестве шаблона для вашего собственного кода. –

+1

Чтобы написать код сборки, вы должны сначала понять набор инструкций процессора. Вот ссылка ** [ссылка] (http://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-manual-325462.html) ** к документации. Это всего 3400 страниц, поэтому вы можете закончить чтение завтра :) – user3386109

ответ

2

Цикл while похож на инструкцию IF, за исключением того, что в нижней части тела вы безоговорочно возвращаетесь к IF (начало цикла).

Смежные вопросы