how to make a while loop in assembly?
You'll need something like the following structure: label: <loop body> ... <loop condition check> <conditional branch to 'label'> <loop's finished here>
can u please show me with a simple example that does all those things
which architecture? X86, amd64, MIPS?
x86
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.
wat are this ( $)
i'm getting errors
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
that is why u have to analyse numbers correctly u'll get it
@slotema i get it
OOOH! I SEE IT! @slotema
@AuthenticationError WHAT DO YOU MEAN BY Numbers?
so using assembly @slotema how to do modulus because this is giving me errors a mod b
like looping if x is even is'nt i have to do modulus like in c and c+
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).
Join our real-time social learning platform and learn together with your friends!