Jump to content

Machine code: Difference between revisions

m (Applesoft BASIC)
Line 21:
* Execute the machine code with the following arguments: unsigned-byte argument of value 7; unsigned-byte argument of value 12; The result would be 19.
* Perform any clean up actions that are appropriate for your chosen language (free the pointer or memory allocations, etc.)
 
 
=={{header|6502 Assembly}}==
 
We'll execute the following program:
<lang 6502asm>LDA #$07
CLC
ADC #$0C
RTS</lang>
 
 
<lang 6502asm>main:
LDX #$00 ;initialize array offset to 0
 
LDA #$A9 ;LDA #immediate
STA Array,x ;store at offset 0
INX ;next offset
 
LDA #$07 ;first parameter
STA Array,x ;store at offset 1
INX ;next offset
 
LDA #$18 ;CLC
STA Array,x ;store at offset 2
INX ;next offset
 
LDA #$69 ;ADC #immediate
STA Array,x ;store at offset 3
INX ;next offset
 
LDA #$0C ;second parameter
STA Array,x ;store at offset 4
INX ;next offset
 
LDA #$60 ;RTS
STA Array,x ;store at offset 5
 
 
JMP Array ;assuming we used a JSR to get to main, the RTS at the end of this RAM will return us back to BASIC.
;if array is directly underneath this statement, we can actually omit this JMP entirely
;and execution will simply fall through to the array.
Array:
byte 0,0,0,0,0,0</lang>
 
If you're going to do this in actual programming (which is somewhat common on 8-bit computers for quick interrupt handling), it may be a good idea to know ahead of time the maximum size of your RAM area for machine code and fill it with return statements to avoid crashing.
 
 
1,489

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.