Convert C code into assembly PIC12F508

Thread Starter

Vindhyachal Takniki

Joined Nov 3, 2014
594
1. I have written code for PIC12F508. Code has 3 C files & 4 header files.
Code compiles successfully.

2. I need to convert into assembly. First thing came into mind is to check diasssembly.
Below is the part of disassembly code & c code comments removed from it:

Code:
   00F     A9F     GOTO 0x9f

   0A0     912     CALL 0x12

   0A1     800     RETLW 0

   013     A9E     GOTO 0x9e
   014     FFF     XORLW 0xff
   015     FFF     XORLW 0xff
   016     FFF     XORLW 0xff
   017     FFF     XORLW 0xff
   018     FFF     XORLW 0xff
   019     FFF     XORLW 0xff
   01A     FFF     XORLW 0xff
   01B     FFF     XORLW 0xff
   01C     FFF     XORLW 0xff
   01D     FFF     XORLW 0xff
   01E     FFF     XORLW 0xff
   01F     FFF     XORLW 0xff
   020     FFF     XORLW 0xff
   021     FFF     XORLW 0xff
   022     FFF     XORLW 0xff
   023     FFF     XORLW 0xff
   024     FFF     XORLW 0xff
   025     FFF     XORLW 0xff
   026     FFF     XORLW 0xff
   027     FFF     XORLW 0xff
   028     FFF     XORLW 0xff
   029     FFF     XORLW 0xff
   02A     FFF     XORLW 0xff
   02B     FFF     XORLW 0xff
   02C     FFF     XORLW 0xff
   02D     FFF     XORLW 0xff
   02E     FFF     XORLW 0xff
   02F     FFF     XORLW 0xff
   030     FFF     XORLW 0xff
   031     FFF     XORLW 0xff
   032     FFF     XORLW 0xff
   033     FFF     XORLW 0xff
   034     FFF     XORLW 0xff
   035     FFF     XORLW 0xff
   036     FFF     XORLW 0xff
   037     FFF     XORLW 0xff
   038     FFF     XORLW 0xff
   039     FFF     XORLW 0xff
   03A     FFF     XORLW 0xff
   03B     FFF     XORLW 0xff
   03C     FFF     XORLW 0xff
   03D     FFF     XORLW 0xff
   03E     FFF     XORLW 0xff
   03F     FFF     XORLW 0xff
   040     FFF     XORLW 0xff
   041     FFF     XORLW 0xff
   042     FFF     XORLW 0xff
   043     FFF     XORLW 0xff
   044     FFF     XORLW 0xff
   045     FFF     XORLW 0xff
   046     FFF     XORLW 0xff
   047     FFF     XORLW 0xff
   048     FFF     XORLW 0xff
   049     FFF     XORLW 0xff
   04A     FFF     XORLW 0xff
   04B     FFF     XORLW 0xff
   04C     FFF     XORLW 0xff
   04D     FFF     XORLW 0xff
   04E     FFF     XORLW 0xff
   04F     FFF     XORLW 0xff
   050     FFF     XORLW 0xff
   051     FFF     XORLW 0xff
   052     FFF     XORLW 0xff
   053     FFF     XORLW 0xff
   054     FFF     XORLW 0xff
   055     FFF     XORLW 0xff
   056     FFF     XORLW 0xff
   057     FFF     XORLW 0xff
   058     FFF     XORLW 0xff
   059     FFF     XORLW 0xff
   05A     FFF     XORLW 0xff
   05B     FFF     XORLW 0xff
   05C     FFF     XORLW 0xff
   05D     FFF     XORLW 0xff
   05E     FFF     XORLW 0xff
   05F     FFF     XORLW 0xff
   060     FFF     XORLW 0xff
   061     FFF     XORLW 0xff
   062     FFF     XORLW 0xff
   063     FFF     XORLW 0xff
   064     FFF     XORLW 0xff
   065     FFF     XORLW 0xff
   066     FFF     XORLW 0xff
   067     FFF     XORLW 0xff
   068     FFF     XORLW 0xff
   069     FFF     XORLW 0xff
   06A     FFF     XORLW 0xff
   06B     FFF     XORLW 0xff
   06C     FFF     XORLW 0xff
   06D     FFF     XORLW 0xff
   06E     FFF     XORLW 0xff
   06F     FFF     XORLW 0xff
   070     FFF     XORLW 0xff
   071     FFF     XORLW 0xff
   072     FFF     XORLW 0xff
   073     FFF     XORLW 0xff
   074     FFF     XORLW 0xff
   075     FFF     XORLW 0xff
   076     FFF     XORLW 0xff
   077     FFF     XORLW 0xff
   078     FFF     XORLW 0xff
   079     FFF     XORLW 0xff
   07A     FFF     XORLW 0xff
   07B     FFF     XORLW 0xff
   07C     FFF     XORLW 0xff
   07D     FFF     XORLW 0xff
   07E     FFF     XORLW 0xff
   07F     FFF     XORLW 0xff
   080     FFF     XORLW 0xff
   081     FFF     XORLW 0xff
   082     FFF     XORLW 0xff
   083     FFF     XORLW 0xff
   084     FFF     XORLW 0xff
   085     FFF     XORLW 0xff
   086     FFF     XORLW 0xff
   087     FFF     XORLW 0xff
   088     FFF     XORLW 0xff
   089     FFF     XORLW 0xff
   08A     FFF     XORLW 0xff
   08B     FFF     XORLW 0xff
   08C     FFF     XORLW 0xff
   08D     FFF     XORLW 0xff
   08E     FFF     XORLW 0xff
   08F     FFF     XORLW 0xff
   090     FFF     XORLW 0xff
   091     FFF     XORLW 0xff
   092     FFF     XORLW 0xff
   093     FFF     XORLW 0xff
   094     FFF     XORLW 0xff
   095     FFF     XORLW 0xff
   096     FFF     XORLW 0xff
   097     FFF     XORLW 0xff
   098     FFF     XORLW 0xff
   099     FFF     XORLW 0xff
   09A     FFF     XORLW 0xff
   09B     FFF     XORLW 0xff
   09C     FFF     XORLW 0xff
   09D     FFF     XORLW 0xff

   09E     800     RETLW 0

   0A2     90F     CALL 0xf

   0A3     90E     CALL 0xe

   0A4     AA4     GOTO 0xa4

   0A5     C20     MOVLW 0x20

3. If I copy code as it in assembly will it work??

4. Any other method to convert c code to assembly.

5. For code I am using MPLAB & Hi-tech C
 

tshuck

Joined Oct 18, 2012
3,534
  1. That's nice.
  2. That's what I'd do
  3. It should.
  4. You could interpret the functionality of the C code and write the assembly version yourself.
  5. Okay.
 

ErnieM

Joined Apr 24, 2011
8,377
#3 is a bit trickier. Your dissassembly listing gives line numbers and op codes. These need to be removed as they are not legal assembly constructs. Then it should build no trouble, but...

The trouble will commence when your professor looks at your uncommented code and immediately deduces you skipped the assignment to write something in assembler but instead wrote it in another language. Sure, "CALL 0xe" is a legal statement, but no one ever wrote that in any assembler program ever.

Method described by tshuck in #4 would work best for even a chance at a passing grade.
 

tshuck

Joined Oct 18, 2012
3,534
Yes, if you are attempting to turn in a disassembled code for an assignment requiring you write in assembly, you'll find yourself being easily found out - you'd be better served actually learning the material.

There exists plenty of material to learn assembly from (Nigel's PIC tutorial comes to mind).
 

joeyd999

Joined Jun 6, 2011
5,283
..."CALL 0xe" is a legal statement, but no one ever wrote that in any assembler program ever....
Says you. I used to hand assemble Z80 code into machine code for later POKEing into Basic programs. Granted, I've never typed the exact address "0xe", but i have coded calls to specific addresses -- often.
 

djsfantasi

Joined Apr 11, 2010
9,163
Says you. I used to hand assemble Z80 code into machine code for later POKEing into Basic programs. Granted, I've never typed the exact address "0xe", but i have coded calls to specific addresses -- often.
Ditto! And on a Z80. Asynch comms emulating a Western Union TWX network terminal coded in assembly.
 

ErnieM

Joined Apr 24, 2011
8,377
Says you. I used to hand assemble Z80 code into machine code for later POKEing into Basic programs. Granted, I've never typed the exact address "0xe", but i have coded calls to specific addresses -- often.
Not on your first pass. You wrote a symbolic address, and once you discovered (counted) where that was going to be you went back and wrote the address next to the op code.

I had the luxury of banging my op codes into my Timex Sinclair that I'd built an EPROM programmer onto (and one 'E' is not a mistake), then transfer that over to my Z80 platform.
 
Top