This is a question on a hand out, it asks:

What is the machine code that corresponds to the AVR Assembly Language Instruction inc r22? Enter your answer as a 16 bit binary number. There must be no spaces or punctuation marks - just enter sixteen 1's or 0's.

I found the corresponding machine code which is 1001 010d dddd 0011. I added the binaries together for 22 which is 16 + 6 so:

10000 + 110
= 010110

I assume from here that you just sub it into the d's hence,

1001 010d dddd 0011
1001 0101 0110 0011

And there's the 16 bit answer. Is this correct, or have I done this the wrong way?

  • \$\begingroup\$ Where did you find 1001 010d dddd 0011? \$\endgroup\$ – jippie Apr 14 '13 at 9:08
  • \$\begingroup\$ @jippie avr assembly documents \$\endgroup\$ – Sim Apr 14 '13 at 9:11
  • \$\begingroup\$ Do you have a link to it? \$\endgroup\$ – jippie Apr 14 '13 at 9:23
  • \$\begingroup\$ You want the AVR Instruction Set document - doc0856.pdf \$\endgroup\$ – Leon Heller Apr 14 '13 at 9:26
  • \$\begingroup\$ Did your teacher work in web design? "Enter your credit card with no spaces, because we can't figure out how to remove them before handing them to the processing API ...". \$\endgroup\$ – Kaz Apr 14 '13 at 15:59

Check it with the assembler!

The code I get for inc r22 is 0x9563, which is 1001010101100011. You are correct!

  • \$\begingroup\$ I have no idea how to use the assembler yet, i suck! Thank you \$\endgroup\$ – Sim Apr 14 '13 at 9:39
  • \$\begingroup\$ @jameskensington: Maybe you can improve your answer by describing how to "check it with the assembler"? \$\endgroup\$ – Rev1.0 Apr 14 '13 at 16:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.