hi how can i write the following statement in assembly language.
while (n>1){ if ( n is even) n : = n/2 else n:=3*n+1 }
@Opcode
8086? mips?
yes pls help @A.Avinash_Goutham
8086
@hartnn
In MIPS, your code will look like this: .data N: .word 30 .text main: add $t0, $zero, N # copy N into the register WHILE: blt $t0, 1, END # while (n > 1) sll $t1, $t0, 31 # shift out so only least sig bit remains beq $t1, 1, ODD # else { ... } sra $s0, $t0, 1 # n = n/2 add $t0, $s0, $zero # copy result back to temp register j WHILE ODD: sla $s0, $t0, 1 # multiply by two add $s0, $t0, $zero # add N add $s0, $zero, 1 # + 1 add $t0, $s0, $zero # copy result back into register j WHILE END: sw $t0, N # write N to memory jr $ra
@eSpeX what about 8086
@artofspeed and @nubeer
I do not have experience with the 8086 instruction set, it was my hope that you could take what you have learned and adapt the logic and instructions to match those that you are using.
how to use modulus using assembly
You won't really use modulus per se, you are dealing with binary, which is why I logically shifted the number to the left. Any 'odd' number will have to set the least significant bit, if it is a 0, then the number is even.
so tell me wat is the deffrence between 8086 and mips
They use a different instruction set, while they do basically the same thing, it is a difference in how the instruction is formed.
so to run it i need to install mips software or should i use MASM615
If I recall correctly, the MASM assembler interprets only the 8086 instruction set, if you want to compile MIPS, try using the QtSPIM assembler. http://sourceforge.net/projects/spimsimulator/
A cursory review of the x86 instructions show that they have some of the same instructions as MIPS, so it should be completely doable to convert the code I've given into instructions you can use with the 8086 assembler.
Join our real-time social learning platform and learn together with your friends!