A community for students.
Here's the question you clicked on:
 0 viewing
Mahlatse1
 2 years ago
how to make a while loop in assembly?
Mahlatse1
 2 years ago
how to make a while loop in assembly?

This Question is Closed

slotema
 2 years ago
Best ResponseYou've already chosen the best response.3You'll need something like the following structure: label: <loop body> ... <loop condition check> <conditional branch to 'label'> <loop's finished here>

Mahlatse1
 2 years ago
Best ResponseYou've already chosen the best response.0can u please show me with a simple example that does all those things

slotema
 2 years ago
Best ResponseYou've already chosen the best response.3which architecture? X86, amd64, MIPS?

slotema
 2 years ago
Best ResponseYou've already chosen the best response.3Here 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 dowhile 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 Ccode with gcc, you need to add the `S` flag. Then, gcc will only generate ASM for you.

slotema
 2 years ago
Best ResponseYou've already chosen the best response.3There 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

AuthenticationError
 2 years ago
Best ResponseYou've already chosen the best response.0that is why u have to analyse numbers correctly u'll get it

Mahlatse1
 2 years ago
Best ResponseYou've already chosen the best response.0OOOH! I SEE IT! @slotema

Mahlatse1
 2 years ago
Best ResponseYou've already chosen the best response.0@AuthenticationError WHAT DO YOU MEAN BY Numbers?

walters
 2 years ago
Best ResponseYou've already chosen the best response.0so using assembly @slotema how to do modulus because this is giving me errors a mod b

walters
 2 years ago
Best ResponseYou've already chosen the best response.0like looping if x is even is'nt i have to do modulus like in c and c+

slotema
 2 years ago
Best ResponseYou've already chosen the best response.3If 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).
Ask your own question
Sign UpFind more explanations on OpenStudy
Your question is ready. Sign up for free to start getting answers.
spraguer
(Moderator)
5
→ View Detailed Profile
is replying to Can someone tell me what button the professor is hitting...
23
 Teamwork 19 Teammate
 Problem Solving 19 Hero
 Engagement 19 Mad Hatter
 You have blocked this person.
 ✔ You're a fan Checking fan status...
Thanks for being so helpful in mathematics. If you are getting quality help, make sure you spread the word about OpenStudy.