项目作者: cppcoders

项目描述 :
Sic/XE Assembler
高级语言: C++
项目地址: git://github.com/cppcoders/SIC-XE-Assembler.git
创建时间: 2020-01-18T10:32:49Z
项目社区:https://github.com/cppcoders/SIC-XE-Assembler

开源协议:

下载


SIC/XE ASSEMBLER

What is SIC/XE Machhine

  • SIC Machine’s extended Edition
  • you can read article at SIC/XE on wikipedia

    Function

  • Control Section
  • Addressing Mode (Flag bit)
    • Direct Addressing Mode
    • Indirect Addressing Mode
    • Simple Addressing Mode
    • Immediate Addressing Mode
    • Relative Addressing Mode
        1. Program Counter (PC Register)
        1. Base (Base Register)
  • Extended Instruction (4bit Instruction)

How it works :

Using two passes …

  • Pass one
    • Assign addresses to all statements in source code
    • Save values (addresses) assigned to labels for use in pass two
    • Process directives
  • Pass two
    • Translate instructions
    • Convert labels to addresses
    • Generate values defined by BYTE and WORD
    • Process the directives not done in pass one
    • Write object code to output file

      Sample input :

      1. COPY START 0
      2. FIRST STL RETADR
      3. LDB #LENGTH
      4. BASE LENGTH
      5. CLOOP +JSUB RDREC
      6. LDA LENGTH
      7. COMP #0
      8. JEQ ENDFIL
      9. +JSUB WRREC
      10. J CLOOP
      11. ENDFIL LDA EOF
      12. STA BUFFER
      13. LDA #3
      14. STA LENGTH
      15. +JSUB WRREC
      16. J @RETADR
      17. EOF BYTE C'EOF'
      18. RETADR RESW 1
      19. LENGTH RESW 1
      20. BUFFER RESB 4096
      21. RDREC CLEAR X
      22. CLEAR A
      23. CLEAR S
      24. +LDT #4096
      25. RLOOP TD INPUT
      26. JEQ RLOOP
      27. RD INPUT
      28. COMPR A,S
      29. JEQ EXIT
      30. STCH BUFFER,X
      31. TIXR T
      32. JLT RLOOP
      33. EXIT STX LENGTH
      34. RSUB
      35. INPUT BYTE X'F1'
      36. WRREC CLEAR X
      37. LDT LENGTH
      38. WLOOP TD OUTPUT
      39. JEQ WLOOP
      40. LDCH BUFFER,X
      41. WD OUTPUT
      42. TIXR T
      43. JLT WLOOP
      44. RSUB
      45. OUTPUT BYTE X'05'
      46. END FIRST

Sample Output:

  1. H^COPY ^000000^001077
  2. T^000000^10^17202D^69202D^4B101036^032026^290000
  3. T^000010^10^332007^4B10105D^3F2FEC^032010^0F2016
  4. T^000020^10^010003^0F200D^4B10105D^3E2003^454F46
  5. T^001036^0D^B410^B400^B440^75101000^E32019
  6. T^001043^0E^332FFA^DB2013^A004^332008^57C003
  7. T^001051^0C^B850^3B2FEA^134000^4F0000^F1
  8. T^00105D^0E^B410^774000^E32011^332FFA^53C003
  9. T^00106B^0C^DF2008^B850^3B2FEF^4F0000^05
  10. M^000007^05
  11. M^000014^05
  12. M^000027^05
  13. E^000000