Ask your own question, for FREE!
Computer Science 28 Online
OpenStudy (anonymous):

how to make a while loop in assembly?

OpenStudy (anonymous):

You'll need something like the following structure: label: <loop body> ... <loop condition check> <conditional branch to 'label'> <loop's finished here>

OpenStudy (anonymous):

can u please show me with a simple example that does all those things

OpenStudy (anonymous):

which architecture? X86, amd64, MIPS?

OpenStudy (anonymous):

x86

OpenStudy (anonymous):

Here a simple example that calculates 2 * n: movl $0, %eax # i = 0 movl $0, %ebx # result = 0 movl $10, %ecx # n = 10 jmp check # without this jmp, it'd be a do-while loop loop: addl $2, %ebx # result = 2 * result addl $1, %eax # i++ check: cmp %ecx, %eax jl loop # Jump if i < n Btw, most compilers can also output assembly code. If you compile some C-code with gcc, you need to add the `-S` flag. Then, gcc will only generate ASM for you.

OpenStudy (walters):

wat are this ( $)

OpenStudy (anonymous):

i'm getting errors

OpenStudy (anonymous):

There are two different syntaxes for writing x86 ASM: AT&T and Intel. The code I wrote is in AT&T syntax while your assembler probably expects Intel syntax. @walters The $ is part of the AT&T syntax to indicate an immediate (or constant) value. % indicates a register. A quick (but not tested yet) rewrite: mov eax, 0 mov ebx, 0 mov ecx, 10 jmp check loop: add ebx, 2 add eax. 1 check: cmp eax, ecx jl loop

OpenStudy (anonymous):

that is why u have to analyse numbers correctly u'll get it

OpenStudy (walters):

@slotema i get it

OpenStudy (anonymous):

OOOH! I SEE IT! @slotema

OpenStudy (anonymous):

@AuthenticationError WHAT DO YOU MEAN BY Numbers?

OpenStudy (walters):

so using assembly @slotema how to do modulus because this is giving me errors a mod b

OpenStudy (walters):

like looping if x is even is'nt i have to do modulus like in c and c+

OpenStudy (anonymous):

If you really have different questions, you should start a new thread, so Mahlatse1 won't get a lot of notifications. For modulo, you'll need to do a division. After e.g. `div eax, ebx`, eax will contain the quotient and edx will contain the remainder. But divisions are costly. If you just want to check whether or not a number is even, there are faster ways of doing that. Like checking the LSB of the number (if it's 1, the number is odd).

Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!
Can't find your answer? Make a FREE account and ask your own questions, OR help others and earn volunteer hours!

Join our real-time social learning platform and learn together with your friends!