Hey guys, it's been a while since i've had to do any assembly programming but it's come up again in a course of mine to haunt me :p
We're trying to simulate reverse polish notation, which is fairly simple..and all we have to implement is addition/subtraction, with a few other conditions such as exiting when an X is input, and displaying an E when anything other then X, +, - , 0-9 is input.
My issue is coming up now that I have my IJVM code working for addition and subtraction, but for numbers higher then 10 which obviously is when the separation between decimal and hex begins.
I need a helping hand getting the logic behind outputting the correct values in DECIMAL, and not hex.
What I have so far is this -
.constant OBJREF 0x40 // needed for method invokation - see S.C.O. chapter 4 .end-constant .main // start of program .var // local variables for main program .end-var start: LDC_W OBJREF // prepare for method call INVOKEVIRTUAL getnum GOTO start .end-main .method getnum() .var .end-var geta: IN // read key press DUP // duplicate key for comparison BIPUSH 0x0 IF_ICMPEQ geta DUP BIPUSH 0x2b IF_ICMPEQ add DUP BIPUSH 0x2d IF_ICMPEQ sub DUP BIPUSH 0x58 IF_ICMPEQ return DUP BIPUSH 0x30 ISUB IFLT error DUP BIPUSH 0x3a SWAP ISUB IFLT error // BIPUSH 0x30 ISUB GOTO geta error: POP BIPUSH 0x45 OUT GOTO geta add: POP IADD DUP BIPUSH 0x30 IADD OUT GOTO return2 sub: POP ISUB DUP BIPUSH 0x30 IADD OUT GOTO return2 return: DUP OUT IRETURN return2: IRETURN .end-method