рдПрдХ рдПрдореБрд▓реЗрдЯрд░ рдЖрд░реНрдХреЗрдб рдорд╢реАрди рдмрдирд╛рдирд╛ред рднрд╛рдЧ реи

рдЫрд╡рд┐

рдкрд╣рд▓рд╛ рднрд╛рдЧ рдпрд╣рд╛рдБ рд╣реИ ред

8080 рдкреНрд░реЛрд╕реЗрд╕рд░ disassembler


рдкрд░рд┐рдЪрд┐рдд


рд╣рдореЗрдВ opcodes рдФрд░ рдЙрдирдХреЗ рд╕рдВрдмрдВрдзрд┐рдд рдХрдорд╛рдВрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред рдЬрдм рдЖрдк рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЬрд╛рдирдХрд╛рд░реА рдЦреЛрдЬрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦреЗрдВрдЧреЗ рдХрд┐ 8080 рдФрд░ Z80 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реА рдорд┐рд╢реНрд░рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рд╣реИред Z80 8080 рдХрд╛ рдЕрдиреБрдпрд╛рдпреА рдерд╛ - рдпрд╣ рд╕рдорд╛рди рд╣реЗрдХреНрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╕рднреА 8080 рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд рдирд┐рд░реНрджреЗрд╢ рднреА рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рдЖрдкрдХреЛ Z80 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рдмрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП, рддрд╛рдХрд┐ рднреНрд░рдорд┐рдд рди рд╣реЛрдВред рдореИрдВрдиреЗ рд╣рдорд╛рд░реЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдУрдкрдХреЛрдб рддрд╛рд▓рд┐рдХрд╛ рдмрдирд╛рдИ, рдпрд╣ рдпрд╣рд╛рдБ рд╣реИ ред

рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ рдПрдХ рдирд┐рд░реНрдорд╛рддрд╛-рд▓рд┐рдЦрд┐рдд рд╕рдВрджрд░реНрдн рдЧрд╛рдЗрдб рд╣реЛрддрд╛ рд╣реИред рдЖрдорддреМрд░ рдкрд░ рдЗрд╕реЗ "рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдПрдирд╡рд╛рдпрд░рдирдореЗрдВрдЯ рдореИрдиреБрдЕрд▓" рдЬреИрд╕рд╛ рдХреБрдЫ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред 8080 рдореИрдиреБрдЕрд▓ рдХреЛ рдЗрдВрдЯреЗрд▓ 8080 рдорд╛рдЗрдХреНрд░реЛ рдХрдВрдкреНрдпреВрдЯрд░ рд╕рд┐рд╕реНрдЯрдо рдпреВрдЬрд░ рдореИрдиреБрдЕрд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕реЗ рд╣рдореЗрд╢рд╛ "рдбреЗрдЯрд╛ рдмреБрдХ" рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рднреА рдХрд╣реВрдВрдЧрд╛ред рдореИрдВ http://www.datasheetarchive.com/ рд╕реЗ 8080 рд╕рдВрджрд░реНрдн рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ред рдпрд╣ рдкреАрдбреАрдПрдл рдХрдо рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓рд╛ рд╕реНрдХреИрди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдПрдХ рдмреЗрд╣рддрд░ рд╕рдВрд╕реНрдХрд░рдг рдкрд╛рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЪрд▓реЛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ ROM рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВред (рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ ROM рдлрд╝рд╛рдЗрд▓ рдкрд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИред) рдореИрдВ рдореИрдХ рдУрдПрд╕ рдПрдХреНрд╕ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рд╕рд┐рд░реНрдл рдЕрдкрдиреА рд╕рд╛рдордЧреНрд░реА рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЗрдХреНрд╕рдбрдВрдк рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред рдЖрдЧреЗ рдХреЗ рдХрд╛рдо рдХреЗ рд▓рд┐рдП, рдЕрдкрдиреЗ рдкреНрд▓реЗрдЯрдлреЙрд░реНрдо рдХреЗ рд▓рд┐рдП рд╣реЗрдХреНрд╕ рдПрдбрд┐рдЯрд░ рдвреВрдВрдвреЗрдВред рдпрд╣рд╛рдБ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреА рдкрд╣рд▓реА 128 рдмрд╛рдЗрдЯреНрд╕ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓:

$ hexdump -v invaders.h 0000000 00 00 00 c3 d4 18 00 00 f5 c5 d5 e5 c3 8c 00 00 0000010 f5 c5 d5 e5 3e 80 32 72 20 21 c0 20 35 cd cd 17 0000020 db 01 0f da 67 00 3a ea 20 a7 ca 42 00 3a eb 20 0000030 fe 99 ca 3e 00 c6 01 27 32 eb 20 cd 47 19 af 32 0000040 ea 20 3a e9 20 a7 ca 82 00 3a ef 20 a7 c2 6f 00 0000050 3a eb 20 a7 c2 5d 00 cd bf 0a c3 82 00 3a 93 20 0000060 a7 c2 82 00 c3 65 07 3e 01 32 ea 20 c3 3f 00 cd 0000070 40 17 3a 32 20 32 80 20 cd 00 01 cd 48 02 cd 13 ... 

рдпрд╣ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред рдкреНрд░рддреНрдпреЗрдХ рд╣реЗрдХреНрд╕рд╛рдбреЗрд╕рд┐рдорд▓ рд╕рдВрдЦреНрдпрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдорд╛рдВрдб рдпрд╛ рдбреЗрдЯрд╛ рд╣реИред рдЗрди рд╣реЗрдХреНрд╕ рдХреЛрдб рдХрд╛ рдХреНрдпрд╛ рдЕрд░реНрде рд╣реИ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдо рдПрдХ рд╕рдВрджрд░реНрдн рдпрд╛ рдЕрдиреНрдп рд╕рдВрджрд░реНрдн рдЬрд╛рдирдХрд╛рд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЖрдЗрдП ROM рдЗрдореЗрдЬ рдХреЛрдб рдХреЛ рдереЛрдбрд╝рд╛ рдФрд░ рдПрдХреНрд╕рдкреНрд▓реЛрд░ рдХрд░реЗрдВред

рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдкрд╣рд▓рд╛ рдмрд╛рдЗрдЯ $ 00 рд╣реИред рддрд╛рд▓рд┐рдХрд╛ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдПрдирдУрдкреА рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджреЛ рдХрдорд╛рдВрдб рднреА рд╣реИрдВред (рд▓реЗрдХрд┐рди рдирд┐рд░рд╛рд╢ рдордд рд╣реЛ, рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдиреЗ рд╕рдВрднрд╡рддрдГ рдЗрди рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рд╕реНрдЯрдо рдХреЛ рдкрд╛рд╡рд░-рдЕрдк рдХреЗ рдмрд╛рдж рдереЛрдбрд╝рд╛ рд╢рд╛рдВрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рджреЗрд░реА рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдерд╛ред)

рдЪреМрдерд╛ рдЖрджреЗрд╢ $ C3 рд╣реИ, рдЕрд░реНрдерд╛рддреН, рддрд╛рд▓рд┐рдХрд╛ рджреНрд╡рд╛рд░рд╛ рдиреНрдпрд╛рдп рдХрд░рдирд╛, рдпрд╣ JMP рд╣реИред JMP рдХрдорд╛рдВрдб рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдХрд╣рд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рджреЛ-рдмрд╛рдЗрдЯ рдХрд╛ рдкрддрд╛ рдорд┐рд▓рддрд╛ рд╣реИ, рдпрд╛рдиреА рдЕрдЧрд▓реЗ рджреЛ рдмрд╛рдЗрдЯреНрд╕ JMP рд╣реЙрдк рдПрдбреНрд░реЗрд╕ рд╣реИрдВред рдлрд┐рд░ рджреЛ рдФрд░ NOP рдЖрдП ... рддреЛ, рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХреНрдпрд╛? рдореБрдЭреЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдкрд░ рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рдиреЗ рджреЗрдВ ...

  0000 00 NOP 0001 00 NOP 0002 00 NOP 0003 c3 d4 18 JMP $18d4 0006 00 NOP 0007 00 NOP 0008 f5 PUSH PSW 0009 c5 PUSH B 000a d5 PUSH D 000b e5 PUSH H 000c c3 8c 00 JMP $008c 000f 00 NOP 0010 f5 PUSH PSW 0011 c5 PUSH B 0012 d5 PUSH D 0013 e5 PUSH H 0014 3e 80 MVI A,#0x80 0016 32 72 20 STA $2072 

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ ...

Disassembler, рднрд╛рдЧ рез


рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рдПрдХ рдРрд╕рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╣реИ, рдЬреЛ рдЕрд╕реЗрдВрдмрд▓реА рднрд╛рд╖рд╛ рдореЗрдВ рд╣реЗрдХреНрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреА рдПрдХ рдзрд╛рд░рд╛ рдХреЛ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдареАрдХ рд╡рд╣реА рдХрд╛рд░реНрдп рд╣реИ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдкрд┐рдЫрд▓реЗ рднрд╛рдЧ рдореЗрдВ рд╣рд╛рде рд╕реЗ рдХрд┐рдпрд╛ рдерд╛ - рдЗрд╕ рдХрд╛рдо рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╢рд╛рдирджрд╛рд░ рдЕрд╡рд╕рд░ред рдЗрд╕ рдХреЛрдб рдХреЛ рд▓рд┐рдЦрддреЗ рд╣реБрдП, рд╣рдо рдкреНрд░реЛрд╕реЗрд╕рд░ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рдЬрд╛рддреЗ рд╣реИрдВ рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЛрдб рдХрд╛ рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЯреБрдХрдбрд╝рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдХрд┐ рд╕реАрдкреАрдпреВ рдирд┐рдпрд╛рдордХ рд▓рд┐рдЦрдХрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИред

рдпрд╣рд╛рдБ 8080 рдХреЛрдб disassembly рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╣реИ:

  1. рдХреЛрдб рдХреЛ рдмрдлрд╝рд░ рдореЗрдВ рдкрдврд╝реЗрдВ
  2. рд╣рдореЗрдВ рдмрдлрд╝рд░ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдПрдХ рдкреЙрдЗрдВрдЯрд░ рдорд┐рд▓рддрд╛ рд╣реИ
  3. рдУрдкреЛрдб рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреЙрдЗрдВрдЯрд░ рдореЗрдВ рдмрд╛рдЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред
  4. рдпрджрд┐ рдбреЗрдЯрд╛ рдХреЗ рд░реВрдк рдореЗрдВ opcode рдХреЗ рдмрд╛рдж рдмрд╛рдЗрдЯреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ opcode рдХрд╛ рдирд╛рдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдВ
  5. рдкреЙрдЗрдВрдЯрд░ рдХреЛ рдЗрд╕ рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдпреБрдХреНрдд рдмрд╛рдЗрдЯреНрд╕ рдХреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд▓реЗ рдЬрд╛рдПрдБ (1, 2 рдпрд╛ 3 рдмрд╛рдЗрдЯреНрд╕)
  6. рдпрджрд┐ рдмрдлрд░ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЪрд░рдг 3 рдкрд░ рдЬрд╛рдПрдВ

рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдиреАрдВрд╡ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдиреАрдЪреЗ рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢реЛрдВ рдХреЛ рдЬреЛрдбрд╝рд╛ред рдореИрдВ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░рдиреЗ рдХреА рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдореЗрд░рд╛ рд╕реБрдЭрд╛рд╡ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВред рдЗрд╕рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рдирд╣реАрдВ рд▓рдЧреЗрдЧрд╛, рдФрд░ рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рдЖрдк 8080 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдирд┐рд░реНрджреЗрд╢ рд╕реЗрдЯ рдХреЛ рд╕реАрдЦреЗрдВрдЧреЗред

  /* *codebuffer -       8080 pc -          */ int Disassemble8080Op(unsigned char *codebuffer, int pc) { unsigned char *code = &codebuffer[pc]; int opbytes = 1; printf ("%04x ", pc); switch (*code) { case 0x00: printf("NOP"); break; case 0x01: printf("LXI B,#$%02x%02x", code[2], code[1]); opbytes=3; break; case 0x02: printf("STAX B"); break; case 0x03: printf("INX B"); break; case 0x04: printf("INR B"); break; case 0x05: printf("DCR B"); break; case 0x06: printf("MVI B,#$%02x", code[1]); opbytes=2; break; case 0x07: printf("RLC"); break; case 0x08: printf("NOP"); break; /* ........ */ case 0x3e: printf("MVI A,#0x%02x", code[1]); opbytes = 2; break; /* ........ */ case 0xc3: printf("JMP $%02x%02x",code[2],code[1]); opbytes = 3; break; /* ........ */ } printf("\n"); return opbytes; } 

рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд▓рд┐рдЦрдиреЗ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдУрдкрдХреЛрдб рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ 8080 рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦрд╛ред

  1. рдореИрдВрдиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЯреАрдореЗрдВ рдПрдХ рдмрд╛рдЗрдЯ рд▓реЗрддреА рд╣реИрдВ, рдмрд╛рдХреА рджреЛ рдпрд╛ рддреАрдиред рдКрдкрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ рдХреЛрдб рдорд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХрдорд╛рдВрдб рдЖрдХрд╛рд░ рдореЗрдВ рдПрдХ рдмрд╛рдЗрдЯ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛ рдФрд░ рддреАрди-рдмрд╛рдЗрдЯ рдХреЗ рдирд┐рд░реНрджреЗрд╢ "рдУрдкрдмрд╛рдЗрдЯреНрд╕" рдЪрд░ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдмрджрд▓ рджреЗрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рдХрдорд╛рдВрдб рдХрд╛ рд╕рд╣реА рдЖрдХрд╛рд░ рд╡рд╛рдкрд╕ рдЖ рдЬрд╛рдПред
  2. 8080 рдореЗрдВ рдП, рдмреА, рд╕реА, рдбреА, рдИ, рдПрдЪ рдФрд░ рдПрд▓ рдирд╛рдореЛрдВ рдХреЗ рд╕рд╛рде рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИред рдЗрд╕рдореЗрдВ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░ (рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд╛рдЙрдВрдЯрд░, рдкреАрд╕реА) рдФрд░ рдПрдХ рдЕрд▓рдЧ рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░ (рд╕реНрдЯреИрдХ рдкреЙрдЗрдВрдЯрд░, рдПрд╕рдкреА) рднреА рд╣реИред
  3. рдХреБрдЫ рдирд┐рд░реНрджреЗрд╢ рдЬреЛрдбрд╝реЗ рдореЗрдВ рд░рдЬрд┐рд╕реНрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ: рдмреА рдФрд░ рд╕реА рдПрдХ рдЬреЛрдбрд╝реА рд╣реИрдВ, рд╕рд╛рде рд╣реА рдбреАрдИ рдФрд░ рдПрдЪрдПрд▓ рднреАред
  4. рдП рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИ, рдЗрд╕рдХреЗ рд╕рд╛рде рдХрдИ рдирд┐рд░реНрджреЗрд╢ рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред
  5. рдПрдЪрдПрд▓ рднреА рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░рдЬрд┐рд╕реНрдЯрд░ рд╣реИ, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдореГрддрд┐ рдХреЛ рдбреЗрдЯрд╛ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкрдврд╝рдиреЗ рдФрд░ рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрддреЗ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
  6. рдореИрдВ "RST" рдЯреАрдо рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЙрддреНрд╕реБрдХ рд╣реЛ рдЧрдпрд╛, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЧрд╛рдЗрдб рдХреЛ рдереЛрдбрд╝рд╛ рдкрдврд╝рд╛ред рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд╕реНрдерд╛рдиреЛрдВ рдореЗрдВ рдХреЛрдб рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╡реНрдпрд╡рдзрд╛рди рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рдЖрдЧреЗ рдкрдврд╝рдиреЗ рдкрд░, рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ ROM рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ рдпрд╣ рд╕рднреА рдХреЛрдб рд╕рд░реНрд╡рд┐рд╕ рд╕рд░реНрд╡рд┐рд╕ рд░реВрдЯ (ISRs) рдерд╛ред рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ RST рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд╕реНрд░реЛрддреЛрдВ (8080 рдкреНрд░реЛрд╕реЗрд╕рд░ рдирд╣реАрдВ) рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдЗрд╕ рд╕рдм рдХреЛ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдмрд╕ рдПрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рддреИрдпрд╛рд░ рдХреА рд╣реИ рдЬреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЪрд░рдгреЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ:

  1. рдпрд╣ рд╕рдВрдХрд▓рд┐рдд рдХреЛрдб 8080 рд╕реЗ рднрд░реА рдлрд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИ
  2. рдЗрд╕реЗ рдореЗрдореЛрд░реА рдмрдлрд░ рдореЗрдВ рдкрдврд╝рддрд╛ рд╣реИ
  3. рдореЗрдореЛрд░реА рдмрдлрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рд╕реЗ Disassemble8080Op рд╣реЛрддрд╛ рд╣реИ
  4. Disassemble8080Op рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдпрд╛ рдЧрдпрд╛ PC рдмрдврд╝рддрд╛ рд╣реИ
  5. рдмрдлрд░ рдХреЗ рдЕрдВрдд рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рддрд╛ рд╣реИ

рдпрд╣ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

  int main (int argc, char**argv) { FILE *f= fopen(argv[1], "rb"); if (f==NULL) { printf("error: Couldn't open %s\n", argv[1]); exit(1); } //         fseek(f, 0L, SEEK_END); int fsize = ftell(f); fseek(f, 0L, SEEK_SET); unsigned char *buffer=malloc(fsize); fread(buffer, fsize, 1, f); fclose(f); int pc = 0; while (pc < fsize) { pc += Disassemble8080Op(buffer, pc); } return 0; } 

рджреВрд╕рд░реЗ рднрд╛рдЧ рдореЗрдВ, рд╣рдо ROM рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдЖрдЙрдЯрдкреБрдЯ рдХреА рдЬрд╛рдВрдЪ рдХрд░реЗрдВрдЧреЗред

рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди


рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдПрдХ рдкреНрд░реЛрд╕реЗрд╕рд░ рдПрдореБрд▓реЗрдЯрд░ рд▓рд┐рдЦрдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВ, рд╣рдореЗрдВ рдПрдХ рдФрд░ рдкрд╣рд▓реВ рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рд╕рднреА рд╕реАрдкреАрдпреВ рдореЗрдВ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдкрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реЛрддреА рд╣реИред рдкреБрд░рд╛рдиреЗ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ 16-, 24- рдпрд╛ 32-рдмрд┐рдЯ рдкрддреЗ рдереЗред 8080 рдореЗрдВ 16 рдкрддреЗ рдХреЗ рд╕рдВрдкрд░реНрдХ рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдкрддреЗ 0- $ FFFF рдХреА рд╕реАрдорд╛ рдореЗрдВ рд╣реИрдВред

рдЦреЗрд▓ рдХреЗ рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдЫреЛрдЯреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдФрд░ рдпрд╣рд╛рдБ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ ROM рдкрддреЗ 0 рдкрд░ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рдЦреЗрд▓ рдореЗрдВ 8 KB RAM $ 2000 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред

рдкреГрд╖реНрдареЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд▓реЗрдЦрдХ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╡реАрдбрд┐рдпреЛ рдмрдлрд░ рд░реИрдо рдореЗрдВ $ 2,400 рдХреЗ рдкрддреЗ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╣рдореЗрдВ рдпрд╣ рднреА рдмрддрд╛рдпрд╛ рдХрд┐ 8080 рдЗрдирдкреБрдЯ-рдЖрдЙрдЯрдкреБрдЯ рдкреЛрд░реНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдСрдбрд┐рдпреЛ рдЙрдкрдХрд░рдг рдХреЗ рд╕рд╛рде рд╕рдВрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛!

рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ред рдЬрд╝рд┐рдк рд░реЛрдо, рдЬреЛ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЪрд╛рд░ рдлрд╛рдЗрд▓реЗрдВ рд╣реИрдВ: рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВред рдИред рдПрдлред рдПрдл, рдЬреАрдЬреА рдФрд░ред рдПрдЪред рдЧреБрдЧреНрд▓рд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рдореБрдЭреЗ рдПрдХ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд▓реЗрдЦ рдЖрдпрд╛ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрди рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рдХреИрд╕реЗ рд░рдЦрд╛ рдЬрд╛рдП:

Space Invaders, (C) Taito 1978, Midway 1979

: Intel 8080, 2 ( Zilog Z80)

: $cf (RST 8) vblank, $d7 (RST $10) vblank.

: 256(x)*224(y), 60 , .
.
: 7168 , 1 (32 ).

: SN76477 .

:
ROM
$0000-$07ff: invaders.h
$0800-$0fff: invaders.g
$1000-$17ff: invaders.f
$1800-$1fff: invaders.e

RAM
$2000-$23ff:
$2400-$3fff:

$4000-:


рдЕрднреА рднреА рдХреБрдЫ рдЙрдкрдпреЛрдЧреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рддрдХ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рдирд╣реАрдВ рд╣реИрдВред

рдЦреВрдиреА рд╡рд┐рд╡рд░рдг


рдпрджрд┐ рдЖрдк рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдкрддреЗ рдХрд╛ рдЖрдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ, рддреЛ рдЖрдк рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рджреЗрдЦрдХрд░ рдЗрд╕реЗ рд╕рдордЭ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдирд┐рд░реНрджреЗрд╢ 8080 рд╣рдореЗрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЗрдВ 16 рдкрддрд╛ рд╕рдВрдкрд░реНрдХ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд, рдпрд╣ 16-рдмрд┐рдЯ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред (рдРрдирдХ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдореИрдиреБрдЕрд▓, рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛, рдЧреВрдЧрд▓, рдФрд░ рдЗрддрдиреЗ рдкрд░ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ ...)

рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд╛рдлреА рдЬрд╛рдирдХрд╛рд░реА рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рдЦреЛрдЬрдиреЗ рдореЗрдВ рдЕрд╕рдорд░реНрде рдереЗ, рддреЛ рдЖрдк рдЗрд╕реЗ рдХреБрдЫ рддрд░реАрдХреЛрдВ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

  • рдПрдореБрд▓реЗрдЯрд░ рдореЗрдВ рдЪрд▓ рд░рд╣реЗ рдХреЛрдб рдХреЛ рджреЗрдЦреЗрдВ рдФрд░ рдпрд╣ рдкрддрд╛ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИред рдиреЛрдЯреНрд╕ рд▓реЗрдВ рдФрд░ рдзреНрдпрд╛рди рд╕реЗ рджреЗрдЦреЗрдВред рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╕рд░рд▓ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрд╣рд╛рдВ, рдЦреЗрд▓ рдХреА рд░рд╛рдп рдореЗрдВ, рд░реИрдо рд╕реНрдерд┐рдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЙрд╕ рд╕реНрдерд╛рди рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдирд╛ рднреА рдЖрд╕рд╛рди рд╣реИ рдЬрд╣рд╛рдВ рд╡рд╣ рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рд╣реИ (рд╣рдо рдЗрд╕ рдЕрдзреНрдпрдпрди рдореЗрдВ рдХреБрдЫ рд╕рдордп рдмрд┐рддрд╛рдПрдВрдЧреЗ)ред
  • рдЖрд░реНрдХреЗрдб рдорд╢реАрди рдХреЗ рд╕рд░реНрдХрд┐рдЯ рдЖрд░реЗрдЦ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдПрдВ рдФрд░ рд╕реАрдкреАрдпреВ рдХреЗ рдкрддреЗ рдХреЗ рд╕рдВрдкрд░реНрдХреЛрдВ рд╕реЗ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЯреНрд░реИрдХ рдХрд░реЗрдВред рджреЗрдЦреЗрдВ рдХрд┐ рд╡реЗ рдХрд╣рд╛рдВ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, A15 (рд╕рдмрд╕реЗ рдкреБрд░рд╛рдирд╛ рдкрддрд╛) рдХреЗрд╡рд▓ ROM рдкрд░ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рд╕реЗ рд╣рдо рдпрд╣ рдирд┐рд╖реНрдХрд░реНрд╖ рдирд┐рдХрд╛рд▓ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ ROM рдХреЗ рдкрддреЗ $ 8000 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред

рдпрд╣ рдмрд╣реБрдд рд╣реА рд░реЛрдЪрдХ рдФрд░ рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдХреЛрдб рдирд┐рд╖реНрдкрд╛рджрди рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рдХреЗ рд╕реНрд╡рдпрдВ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИред рдкрд╣рд▓реА рдмрд╛рд░ рдХрд┐рд╕реА рдХреЛ рдпрд╣ рд╕рдм рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╡рд┐рдХрд╛рд╕


рдЗрд╕ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рдХрд╛ рд▓рдХреНрд╖реНрдп рдЖрдкрдХреЛ рдпрд╣ рд╕рд┐рдЦрд╛рдирд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреИрд╕реЗ рд▓рд┐рдЦреЗрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рд╣рдо рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо-рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХреЛрдб рд╕реЗ рдмрдЪрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬрд╛рдирддреЗ рдереЗ рдХрд┐ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдордВрдЪ рдХреЗ рд▓рд┐рдП рдХреИрд╕реЗ рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдЬрдм рдЖрдк рд╕реНрдЯреИрдВрдб-рдЕрд▓реЛрди рдХреЛрдб рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдмрд╕ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдХрдВрд╕реЛрд▓ рдореЗрдВ рдЯреЗрдХреНрд╕реНрдЯ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рддреЛ рдХреБрдЫ рдЕрддрд┐-рдЬрдЯрд┐рд▓ рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдХреЗрд╡рд▓ рдЪреАрдЬреЛрдВ рдХреЛ рдЬрдЯрд┐рд▓ рдмрдирд╛рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдПрдХ рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдЪрд╛рд╣рд┐рдПред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рдХреЛрдИ рднреА рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рдЙрд╕реЗ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рд╕реЗ рд╕рд░рд▓ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреИрд╕реЗ рдмрдирд╛рдПрдВред рдЖрдк рд╡рд┐рдЪрд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЖрдкрдХреЛ рдЪрд┐рдврд╝рд╛рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк Visual Studio рдХреЗ рдмрд╛рд╣рд░ рдХрд╛рд░реНрдп рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдЖрдкрдХреЗ рдХреБрд▓реАрди рд╣реИрдХрд░ рдХреМрд╢рд▓ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдирд╣реАрдВ рд╣реИрдВред

рдореИрдХ рдкрд░, рдЖрдк рд╕рдВрдХрд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдХреНрд╕реНрдЯрдПрдбрд┐рдЯ рдФрд░ рдЯрд░реНрдорд┐рдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓рд┐рдирдХреНрд╕ рдкрд░, рдЖрдк gedit рдФрд░ Konsole рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╡рд┐рдВрдбреЛрдЬ рдкрд░, рдЖрдк рд╕рд╛рдЗрдмрд░рд╡рд┐рди рдФрд░ рдЯреВрд▓реНрд╕ рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрди ++ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЯреЗрдХреНрд╕реНрдЯ рдПрдбрд┐рдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╢рд╛рдВрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдпреЗ рд╕рднреА рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо vi рдФрд░ рдЯреЗрдХреНрд╕реНрдЯ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП emacs рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред

рдХрдорд╛рдВрдб рд▓рд╛рдЗрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХрд▓ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕рдВрдХрд▓рд┐рдд рдХрд░рдирд╛ рдПрдХ рддреБрдЪреНрдЫ рдХрд╛рд░реНрдп рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдиреЗ рдЕрдкрдирд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо 8080dis.c рдирд╛рдордХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рд╣реИред рдЗрд╕ рдЯреЗрдХреНрд╕реНрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдлрд╝реЛрд▓реНрдбрд░ рдореЗрдВ рдЬрд╛рдПрдВ рдФрд░ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕рдВрдХрд▓рд┐рдд рдХрд░реЗрдВ: cc 8080dis.c ред рдпрджрд┐ рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЗрд╕реЗ a.out рдХрд╣рд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЖрдк рдЗрд╕реЗ рдЯрд╛рдЗрдк рдХрд░рдХреЗ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ ./a.out ред

рд╡рд╣, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╕рдм рд╣реИред

рдбрд┐рдмрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛


рдпрджрд┐ рдЖрдк рдпреВрдирд┐рдХреНрд╕-рдЖрдзрд╛рд░рд┐рдд рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдпрд╣рд╛рдВ GDB рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрдорд╛рдВрдб-рд▓рд╛рдЗрди рдкреНрд░реЛрдЧреНрд░рд╛рдо рдбрд┐рдмрдЧрд┐рдВрдЧ рдХрд╛ рдПрдХ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рдЪрдп рд╣реИред рдЖрдкрдХреЛ рдЗрд╕ рддрд░рд╣ рдХреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреЛ рд╕рдВрдХрд▓рд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ: cc -g -O0 8080dis.c ред -g рдкреИрд░рд╛рдореАрдЯрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЬрд╛рдирдХрд╛рд░реА рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ (рдпрд╛рдиреА, рдЖрдк рд╕реНрд░реЛрдд рдкрд╛рда рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдбреАрдмрдЧрд┐рдВрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ), рдФрд░ -O0 рдкреИрд░рд╛рдореАрдЯрд░ рдСрдкреНрдЯрд┐рдорд╛рдЗрдЬрд╝реЗрд╢рди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЬрдм рдЖрдк рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрджрдо -O0 , рддреЛ рдбрд┐рдмрдЧрд░ рд╕реНрд░реЛрдд рдкрд╛рда рдХреЗ рд╕рд╛рде рдкреВрд░реНрдг рдЕрдиреБрд╕рд╛рд░ рдХреЛрдб рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЯреНрд░реИрдХ рдХрд░ рд╕рдХреЗред

рдпрд╣рд╛рдВ рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕рддреНрд░ рдХреА рд╢реБрд░реБрдЖрдд рдХрд╛ рдПрдиреЛрдЯреЗрдЯ рд▓реЙрдЧ рд╣реИред рдореЗрд░реА рдЯрд┐рдкреНрдкрдгреА рдПрдХ рдкрд╛рдЙрдВрдб рдЪрд┐рд╣реНрди (#) рдХреЗ рд╕рд╛рде рдЪрд┐рд╣реНрдирд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдореЗрдВ рд╣реИрдВред

  $ gdb a.out GNU gdb 6.3.50-20050815 (Apple version gdb-1708) (Mon Aug 8 20:32:45 UTC 2011) Copyright 2004 Free Software Foundation, Inc. GDB is free software, covered by the GNU General Public License, and you are welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "x86_64-apple-darwin"...Reading symbols for shared libraries .. done #  ,       (gdb) b Disassemble8080Op Breakpoint 1 at 0x1000012ef: file 8080dis.c, line 7. #   "invaders.h"    (gdb) run invaders.h Starting program: /Users/bob/Desktop/invaders/a.out invaders.h Reading symbols for shared libraries +........................ done Breakpoint 1, Disassemble8080Op (codebuffer=0x100801000 "", pc=0) at 8080dis.c:7 7 unsigned char *code = &codebuffer[pc]; #gdb  n  "next".    "next" (gdb) n 8 int opbytes = 1; #p -    "print",     *code (gdb) p *code $1 = 0 '\0' (gdb) n 9 printf("%04x ", pc); #    "", gdb     ,    "next" (gdb) 10 switch (*code) (gdb) n #   ,    "NOP" 12 case 0x00: printf("NOP"); break; (gdb) n 285 printf("\n"); #c -  "continue",        (gdb) c Continuing. 0000 NOP #     Disassemble8080Op.   *opcode, # ,      NOP,    . Breakpoint 1, Disassemble8080Op (codebuffer=0x100801000 "", pc=1) at 8080dis.c:7 7 unsigned char *code = &codebuffer[pc]; (gdb) c Continuing. 0001 NOP Breakpoint 1, Disassemble8080Op (codebuffer=0x100801000 "", pc=2) at 8080dis.c:7 7 unsigned char *code = &codebuffer[pc]; (gdb) n 8 int opbytes = 1; (gdb) p *code $2 = 0 '\0' #  NOP,   (gdb) c Continuing. 0002 NOP Breakpoint 1, Disassemble8080Op (codebuffer=0x100801000 "", pc=3) at 8080dis.c:7 7 unsigned char *code = &codebuffer[pc]; (gdb) n 8 int opbytes = 1; #   ! (gdb) p *code $3 = 195 '?' # print     ,    /x    (gdb) p /x *code $4 = 0xc3 (gdb) n 9 printf("%04x ", pc); (gdb) 10 switch (*code) (gdb) # C3 -  JMP. . 219 case 0xc3: printf("JMP $%02x%02x",code[2],code[1]); opbytes = 3; break; (gdb) 285 printf("\n"); 

рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░, рднрд╛рдЧ 2


рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП disassembler рдЪрд▓рд╛рдПрдБред ROM рдлрд╝рд╛рдЗрд▓ рдФрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджреЗрдЦреЗрдВред

  0000 NOP 0001 NOP 0002 NOP 0003 JMP $18d4 0006 NOP 0007 NOP 0008 PUSH PSW 0009 PUSH B 000a PUSH D 000b PUSH H 000c JMP $008c 000f NOP 0010 PUSH PSW 0011 PUSH B 0012 PUSH D 0013 PUSH H 0014 MVI A,#$80 0016 STA $2072 0019 LXI H,#$20c0 001c DCR M 001d CALL $17cd 0020 IN #$01 0022 RRC 0023 JC $0067 0026 LDA $20ea 0029 ANA A 002a JZ $0042 002d LDA $20eb 0030 CPI #$99 0032 JZ $003e 0035 ADI #$01 0037 DAA 0038 STA $20eb 003b CALL $1947 003e SRA A 003f STA $20ea /* 0000000 00 00 00 c3 d4 18 00 00 f5 c5 d5 e5 c3 8c 00 00 0000010 f5 c5 d5 e5 3e 80 32 72 20 21 c0 20 35 cd cd 17 0000020 db 01 0f da 67 00 3a ea 20 a7 ca 42 00 3a eb 20 0000030 fe 99 ca 3e 00 c6 01 27 32 eb 20 cd 47 19 af 32 */ 

рдкрд╣рд▓рд╛ рдирд┐рд░реНрджреЗрд╢ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рд╣рдордиреЗ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдкрд╣рд▓реЗ рд▓рд┐рдЦрд╛ рдерд╛ред рдЙрдирдХреЗ рдмрд╛рдж рдХрдИ рдирдП рдирд┐рд░реНрджреЗрд╢ рд╣реИрдВред рдиреАрдЪреЗ рдореИрдВрдиреЗ рд╕рдВрджрд░реНрдн рдХреЗ рд▓рд┐рдП рд╣реЗрдХреНрд╕ рдбреЗрдЯрд╛ рдбрд╛рд▓рд╛ рд╣реИред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрджрд┐ рдЖрдк рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рдореЗрдореЛрд░реА рдХреА рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрддреЗ рдРрд╕реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рд░рд┐рд╡рд░реНрд╕ рдСрд░реНрдбрд░ рдореЗрдВ рдореЗрдореЛрд░реА рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рддреЛ рдпрд╣ рд╣реИред рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдПрдВрдбрд┐рдпрди рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЫреЛрдЯреЗ рдПрдВрдбрд┐рдпрди рд╡рд╛рд▓реА рдорд╢реАрдиреЗрдВ, 8080 рдХреА рддрд░рд╣, рдкрд╣рд▓реЗ рдирдВрдмрд░ рдХреА рдХрдо рд╕реЗ рдХрдо рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░реЗрдВред (рдПрдВрдбрд┐рдпрди рдкрд░ рдЕрдзрд┐рдХ рдиреАрдЪреЗ рд╡рд░реНрдгрд┐рдд рд╣реИред)

рдореИрдВрдиреЗ рдКрдкрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЗ рдЦреЗрд▓ рдХреЗ рд▓рд┐рдП ISR рдХреЛрдб рд╣реИред рдЗрдВрдЯрд░рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдХреЛрдб 0, 1, 2, ... 7 рдкрддрд╛ $ 0, $ 8, $ 20, ... $ 38 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 8080 рд╕рд┐рд░реНрдл рдкреНрд░рддреНрдпреЗрдХ ISR рдХреЗ рд▓рд┐рдП 8 рдмрд╛рдЗрдЯреНрд╕ рджреЗрддрд╛ рд╣реИред рдХрднреА-рдХрднреА рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░реА рдХрд╛рд░реНрдпрдХреНрд░рдо рдЕрдзрд┐рдХ рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдкрддреЗ рдкрд░ рдЬрд╛рдиреЗ рд╕реЗ рдЗрд╕ рдкреНрд░рдгрд╛рд▓реА рдХреЛ рдмрд╛рдпрдкрд╛рд╕ рдХрд░рддрд╛ рд╣реИред (рдпрд╣ $ 000c рдкрд░ рд╣реЛрддрд╛ рд╣реИ)ред

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, ISR 2 рдЗрд╕рдХреЗ рд▓рд┐рдП рдЖрд╡рдВрдЯрд┐рдд рдореЗрдореЛрд░реА рд╕реЗ рдЕрдзрд┐рдХ рд▓рдВрдмрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЙрд╕рдХрд╛ рдХреЛрдб $ 0018 рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ (рдпрд╣ ISR 3 рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ)ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЛ рдХреБрдЫ рднреА рджреЗрдЦрдиреЗ рдХреА рдЙрдореНрдореАрдж рдирд╣реАрдВ рд╣реИ рдЬреЛ 3 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред

рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ ROM рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЪрд╛рд░ рднрд╛рдЧ рд╣реЛрддреЗ рд╣реИрдВред рдореИрдВ рдЗрд╕реЗ рдиреАрдЪреЗ рдмрддрд╛рдКрдВрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдм, рдЕрдЧрд▓реЗ рднрд╛рдЧ рдкрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЗрди рдЪрд╛рд░ рдлрд╛рдЗрд▓реЛрдВ рдХреЛ рдПрдХ рдореЗрдВ рдорд┐рд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдпреВрдирд┐рдХреНрд╕ рдкрд░:

  cat invaders.h > invaders cat invaders.g >> invaders cat invaders.f >> invaders cat invaders.e >> invaders 

рдЕрдм рдкрд░рд┐рдгрд╛рдореА "рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ" рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рд╛рде disassembler рдЪрд▓рд╛рдПрдВред рдЬрдм рдХреЛрдИ рдХрд╛рд░реНрдпрдХреНрд░рдо $ 0000 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдкрд╣рд▓реА рдЪреАрдЬ рдЬреЛ $ 18d4 рдкрд░ рд╕реНрд╡рд┐рдЪ рд╣реЛрддреА рд╣реИред рдореИрдВ рдЗрд╕ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ред рдЖрдЗрдП рдЗрд╕ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

  18d4 LXI SP,#$2400 18d7 MVI B,#$00 18d9 CALL $01e6 

рддреЛ, рдпрд╣ рджреЛ рдСрдкрд░реЗрд╢рди рдХрд░рддрд╛ рд╣реИ рдФрд░ $ 01e6 рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИред рдореИрдВ рдЗрд╕ рдХреЛрдб рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рд╕рд╛рде рдХреЛрдб рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдбрд╛рд▓рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ:

  01e6 LXI D,#$1b00 01e9 LXI H,#$2000 01ec JMP $1a32 ..... 1a32 LDAX D 1a33 MOV M,A 1a34 INX H 1a35 INX D 1a36 DCR B 1a37 JNZ $1a32 1a3a RET 

рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рд╕реНрдореГрддрд┐ рдЖрд╡рдВрдЯрди рд╕реЗ рджреЗрдЦрд╛, рдЗрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдкрддреЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИрдВред $ 2000 рдПрдХ "рдХрд╛рд░реНрдпрд╢реАрд▓ рд░реИрдо" рдХрд╛рд░реНрдпрдХреНрд░рдо рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред $ 2,400 рд╡реАрдбрд┐рдпреЛ рдореЗрдореЛрд░реА рдХреА рд╢реБрд░реБрдЖрдд рд╣реИред

рдЖрдЗрдП рдХреЛрдб рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рд╕реАрдзреЗ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ:

  18d4 LXI SP,#$2400 ; SP=$2400 -      18d7 MVI B,#$00 ; B=0 18d9 CALL $01e6 ..... 01e6 LXI D,#$1b00 ; DE=$1B00 01e9 LXI H,#$2000 ; HL=$2000 01ec JMP $1a32 ..... 1a32 LDAX D ; A = (DE),   ,       $1B00 1a33 MOV M,A ;  A  (HL),     $2000 1a34 INX H ; HL = HL + 1 ( $2001) 1a35 INX D ; DE = DE + 1 ( $1B01) 1a36 DCR B ; B = B - 1 ( 0xff,      0) 1a37 JNZ $1a32 ; ,   ,     b=0 1a3a RET 

рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб $ 1b00 рд╕реЗ $ 2000 рддрдХ 256 рдмрд╛рдЗрдЯреНрд╕ рдХреЙрдкреА рдХрд░реЗрдЧрд╛ред рдХреНрдпреЛрдВ? рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдЖрдк рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ

рдпрд╣рд╛рдВ рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИред рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрдб рдпреБрдХреНрдд рдореЗрдореЛрд░реА рдХрд╛ рдПрдХ рдордирдорд╛рдирд╛ рдЯреБрдХрдбрд╝рд╛ рд╣реИ, рддреЛ рдбреЗрдЯрд╛ рд╕рдВрднрд╡рддрдГ рдЗрд╕рдХреЗ рд╕рд╛рде рд╡реИрдХрд▓реНрдкрд┐рдХ рд╣реЛрдЧрд╛ред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЦреЗрд▓ рдкрд╛рддреНрд░реЛрдВ рдХреЗ рд▓рд┐рдП рд╕реНрдкреНрд░рд╛рдЗрдЯреНрд╕ рдХреЛ рдХреЛрдб рдХреЗ рд╕рд╛рде рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдПрдХ рдбрд┐рд╕реНрд╕реЗрдореНрдмрд▓рд░ рд╕реНрдореГрддрд┐ рдХреЗ рдРрд╕реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЧрд┐рд░рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреЛрдб рд╣реИ рдФрд░ рдЗрд╕реЗ "рдЪрдмрд╛рдирд╛" рдЬрд╛рд░реА рд░рдЦреЗрдВред рдпрджрд┐ рдЖрдк рдЕрд╢реБрдн рд╣реИрдВ, рддреЛ рдбреЗрдЯрд╛ рдХреЗ рдЗрд╕ рдЯреБрдХрдбрд╝реЗ рдХреЗ рдЧрд▓рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдХрд┐рд╕реА рднреА рддрд░рд╣ рдХрд╛ рдХреЛрдб рдЧрд▓рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдЬрдмрдХрд┐ рд╣рдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╢рд╛рдпрдж рд╣реА рдХреБрдЫ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмрд╕ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдРрд╕реА рд╕рдорд╕реНрдпрд╛ рдореМрдЬреВрдж рд╣реИред рдпрджрд┐ рдЖрдк рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХреБрдЫ рджреЗрдЦрддреЗ рд╣реИрдВ:

  • рдПрдХ рдЯреАрдо рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рдЕрдЪреНрдЫреЗ рдХреЛрдб рд╕реЗ рд╕рдВрдХреНрд░рдордг рдЬреЛ рдЕрд╕рдВрддреБрд╖реНрдЯ рд╕реВрдЪреА рдореЗрдВ рдирд╣реАрдВ рд╣реИ
  • рдЕрд░реНрдерд╣реАрди рдХреЛрдб рд╕реНрдЯреНрд░реАрдо (рдЙрджрд╛ред POP B POP B POP B POP B POP C XTHL XTHL XTHL)

рдпрд╣рд╛рдБ, рд╢рд╛рдпрдж, рд╡рд╣рд╛рдБ рдбреЗрдЯрд╛ рд╣реИ рдЬреЛ рдХреБрдЫ рдЕрд╕рдВрддреБрд╖реНрдЯ рдХреЛрдб рдХреЛ рдмрд░реНрдмрд╛рдж рдХрд░ рджрд┐рдпрд╛ рд╣реИред рдпрджрд┐ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдСрдлрд╕реЗрдЯ рд╕реЗ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░реА рд╕рдордп-рд╕рдордп рдкрд░ рд╢реВрдиреНрдп рдореЗрдВ рдЖрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдорд╛рд░рд╛ рдбрд┐рд╕рдПрдлрд╝рд╕рд╛рдЗрдб рдХрднреА рдмрдВрдж рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╢реВрдиреНрдп рдЗрд╕реЗ рд░реАрд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░реЗрдЧрд╛ред

рдЕрдВрддрд░рд┐рдХреНрд╖ рдЖрдХреНрд░рдордгрдХрд╛рд░рд┐рдпреЛрдВ рдХреЛрдб рдХрд╛ рдПрдХ рд╡рд┐рд╕реНрддреГрдд рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред

рдПрдиреНрдбрд┐рдпрди


рдмрд╛рдЗрдЯреНрд╕ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░реЛрд╕реЗрд╕рд░ рдореЙрдбрд▓ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рднрдВрдбрд╛рд░рдг рдбреЗрдЯрд╛ рдХреЗ рдЖрдХрд╛рд░ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдмрд┐рдЧ-рдПрдВрдбрд┐рдпрди рдорд╢реАрдиреЗрдВ рдкреБрд░рд╛рдиреЗ рд╕реЗ рдпреБрд╡рд╛ рддрдХ рдбреЗрдЯрд╛ рд╕реНрдЯреЛрд░ рдХрд░рддреА рд╣реИрдВред рд▓рд┐рдЯрд┐рд▓-рдПрдВрдбрд┐рдпрди рдЙрдиреНрд╣реЗрдВ рд╕рдмрд╕реЗ рдХрдо рдЙрдореНрд░ рд╕реЗ рд╕рдмрд╕реЗ рдкреБрд░рд╛рдиреЗ рддрдХ рд░рдЦрддреЗ рд╣реИрдВред рдпрджрд┐ рдкреНрд░рддреНрдпреЗрдХ рдорд╢реАрди рдХреА рдореЗрдореЛрд░реА рдореЗрдВ 32-рдмрд┐рдЯ рдкреВрд░реНрдгрд╛рдВрдХ 0xAABBCCDD рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

рдЫреЛрдЯреЗ-рдПрдВрдбрд┐рдпрди рдореЗрдВ: $ DD $ CC $ BB $ AA

рдмрд┐рдЧ-рдПрдВрдбрд┐рдпрди: $ AA $ BB $ CC $ DD

рдореИрдВрдиреЗ рдореЛрдЯреЛрд░реЛрд▓рд╛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдкрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рд╢реБрд░реВ рдХрд░ рджреА рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реЗ-рдПрдВрдбрд┐рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдореБрдЭреЗ рдЕрдзрд┐рдХ "рдкреНрд░рд╛рдХреГрддрд┐рдХ" рд▓рдЧ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдореБрдЭреЗ рдЫреЛрдЯреЗ-рдПрдВрдбрд┐рдпрди рдХреА рднреА рдЖрджрдд рд╣реЛ рдЧрдИред

рдореЗрд░реЗ рдЕрд╕рдВрддреБрд╖реНрдЯ рдФрд░ рдПрдореБрд▓реЗрдЯрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдВрдбрд┐рдпрди рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдмрдЪрддреЗ рд╣реИрдВ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ рдПрдХ рд╕рдордп рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдмрд╛рдЗрдЯ рдкрдврд╝рддреЗ рд╣реИрдВред рдпрджрд┐ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ROM рд╕реЗ рдкрддреЗ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП 16-рдмрд┐рдЯ рд░реАрдбрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдпрд╣ рдХреЛрдб CPU рд╕реАрдкреАрдпреВ рдХреЗ рдмреАрдЪ рдкреЛрд░реНрдЯреЗрдмрд▓ рдирд╣реАрдВ рд╣реИред

Source: https://habr.com/ru/post/hi418683/


All Articles