+1 (315) 557-6473 
Programming Project Helper
1055 Order Completed
95 % Response Time
73 Reviews
Since 2012
Related Blogs

Where to Find the Best Assembly Programming Project Help in the UKAssembly programming has been a challenge for many students and so are homework and projects that require knowledge of assembly programming. The highly technical nature of assembly languages makes them the most feared languages in pro...

2020-08-10
Read More

Why should I Pay for Programming Homework?Programming is unlike many other courses in that there are objective measurements that can be made. If you write an essay in a history class, elements of that are subjective and as long as you cover certain key facts you should be able to get a reasonable gr...

2020-08-10
Read More

How Can Our Assembly Language Homework Help You Convert CAssembly language is often used in conjunction with C code as it is closer to the metal than Java or other byte code languages. Parameters are passed using the stack (and possibly registers depending on the platform and calling convention). Th...

2020-08-10
Read More

Programming Project Helper

Perth, Australia

Danny J


PhD. in Programming, Curtin University, Perth

Profession

Expert Programming Project Helper in Australia

Skills

Are you an Australian student who is having trouble tackling his/her programming projects? I have been there too, so I know the feeling. But why let these projects take away your peace of mind when you can just hire me to take care of them on your behalf? I have all the resources necessary to do the heavy lifting for you so you can focus on other things that matter to your academic and personal life. I am one of the top-rated programming project helpers in Australia and my skills in this domain have seen thousands of students excel in C, Java, Python, Haskell, PHP, and CSS, which are my main areas of expertise. I have handled both basic and advanced programming projects in these languages with over 1050 successful orders to my name. If you let me, I will help you with your programming tasks, guide you through the project preparation process, and show you how to effectively handle similar projects on your topic in the future. If this sounds like you would consider, just let me know and we will get to work.

Get Free Quote
0 Files Selected

Data Transfer in Registers

index1 = 0  // initial position in input string index2 = 0  // initial position in output string firstChar = 1    // set firstchar to 1 to change case of nextletter while input[index1] isnotzero do currentChar = input[index1] ifcurrentCharisnotspace ifcurrentCharis a letter iffirstChar == 1 then currentChar = uppercase(currentChar)            // convert to uppercase endif endif firstChar = 0                // nextcharis no longer a firstchar else firstChar = 1                // nextcharafter a spaceis a firstchar endif output[index2] = currentChar         // savecharacter in output index2 = index2 + 1                        // advance to next output position index1 = index1 + 1                        // advance to next input position endwhile output[index2] = 0      // saveend of string in output

BM assemblyProgram

MOV     [input] -> R1   // load input stringaddress MOV     [output] -> R2  // load output stringaddress MOV     1 -> R3         // firstchar = 1 MOV     1 -> R4         // constant 1 forincrements MOV     nofirst -> R5   // address of nofirstlabel MOV     -32 -> R6       // valueused to convertfromlower to upper loop:       MOV     [R1] -> R7      // load characterfrom input MOV     0 -> R0         // compare charwithzero JMPEQ   endloop, R7     // endtheloopifthecharisend of string MOV     +32 -> R0       // compare withspace JMPEQ   else, R7        // ifcharacterisspace, go to else MOV     "A" -> R0       // forcomparingwith A JMPLT   R5, R7          // ifcharis< 'A' it'snotletter MOV     "Z" -> R0       // forcomparingwith Z JMPLE   R5, R7          // ifcharis<= 'Z' it's a letter, no need to up MOV     "a" -> R0       // forcomparingwith a JMPLT   R5, R7          // ifcharis< 'a' it'snotletter MOV     "z" -> R0       // forcomparingwith z JMPGT   R5, R7          // ifcharis> 'z' it'snot a letter MOV     0 -> R0         // load 0 forcomparison JMPEQ   nofirst, R3     // iffirstcharis 0, skip ADDI    R7, R6 -> R7    // convertfromlower to uppercase nofirst: MOV     0 -> R3         // firstchar = 0 JMP     endif           // go to nextchar else: MOV     1 -> R3         // it's a space, firstchar = 1 endif: MOV     R7 -> [R2]      // savecharacter in output ADDI    R2, R4 -> R2    // increment position in output string ADDI    R1, R4 -> R1    // increment position in input string JMP     loop            // repeatloop endloop: MOV     R7 -> [R2]      // saveendingzerocharacter in output HALT                    // endtheprogram input:      DATA    80              // initialaddress of input string output:     DATA    C0              // initialaddress of output string 80:         DATA    "i2cs homework2"     // test input

Description

Whentheprogramis run, theregistersstartchanging and theprogramadvancesfrom position 00. Aftera fewsteps, thememorystarting at address C0 isfilledwiththecharactersfromthefirststring, withtheinitialcharactersbeingchanged to uppercase. WhentheprogramreachestheHaltinstruction, the output stringiscorrectlygeneratedstartingat address C0 in memory. Thenumber of instructionsusedbytheprogram to achievetheresultis: 331. The figure belowis a screenshot of theprogramafterbeing run.

Data Transfer in Registers

Thefollowing figure shows thememorycontentsfromaddress C0, whereit can be seenthatthestring “I2cs Homework 2” isgeneratedcorrectlybytheprogram.

Data Transfer in Registers

Technicaldescription

Thefollowingregisters are used in theprogram:

R0 → used to load valuesforcomparisons.

R1 → current input stringaddress, it has theaddressinput[index1] shown in thealgorithm

R2 → current output stringaddress, it has theaddress output[index2] shown in thealgorithm

R3 → firstcharvalue, it’sthefirstChar variable in thealgorithm

R4 → always has theconstantvalue 1, it’sused to do increments

R5 → address of nofirstlabel, it’sused to makeconditionaljumps

R6 → always has theconstantvalue -32, it’sused to convertlettersfromlower to uppercase

R7 → it’sthecurrentcharacter, corresponds to currentChar in thealgorithm

Themainloopwiththelabel “loop” corresponds to the “while” cycle in thealgorithm, Theelselabel in thecodecorresponds to the “else” part in thealgorithm. The “nofirst” labelcorresponds to the position of “firstChar = 0”  inthealgorithm. Thatis, the position afterthefirsttwoendif’s in thealgorithm. The “endif” in thecodecorresponds to thelastendif of thealgorithm, it’sthepartthatisexecutedifthecurrentcharacteris a space. Finally, the “endloop” label in thecodecorresponds to the position afterthe “endwhile” in thealgorithm.

Thememoryisaccessedusingindirectaddressing. In thecode, theregister R1 (R2 forthe output) holdstheaddress of thememory to be accessed, thevalue at this position isloadedusingtheexpression [R1] → register (orwrittenusingregister → [R2]).

Relationshipbetween machine code, assemblylanguage and a high-levellanguage

The machine codeisthelowestrepresentation of anexecutableprogram, itnormallyiswritten in binary and it can be directlyexecutedbythe machine. Theassemblylanguageis a layerabovethe machine code and allowsus to use textormnemonicsinstead of binary to write a program, howevertheinstructionsavailable in assemblyfollowthe machine codeveryclosely and sincetheycan’t be executeddirectlybythe hardware, theymust be translated to machine codeusingan “assembler”. Thehigh-levellanguagesgoanotherabovetheassemblylanguage and allowus to use abstract data types and control structuresbeyondwhatisavailable at the machine level. Theseimprovementsallowus to createcomplexprogramswithouthaving to thinkabouttheconstraintsimposedbythe machine code. Just as in theassemblylanguage case, theprogramswritten in a high-levellanguagecannot be understoodbythe machine so theymust be translated to machine codebeforethey can be executed. In this case, a specialprogramcalled a “compiler” isrequired to translatethehigh-levelcode to machine levelcode.

One of theapproachesthatcould be used to develop a compilerfor a computerthatinitiallycouldonly be programmed in machine codeis to writefirstanassembler in machine code, thecompilercouldthen be written in assemblylanguage and be assembled to machine codeusingthe machine codeassembler. Anotherapproachcould be to use a different machine to develop a “crosscompiler”. Thiscrosscompilerwould run in a different machine and thegeneratedexecutableswillcontain machine codeforthe machine wewant to use.