int e l 9.2 GENERAL PURPOSE ROUTINES OPBYTE = 3 (03H) POP THE ARGUMENT STACK AND SAVE THE FLOATING POINT NUMBER IN THE LOCATION ADDRESSED BY R3:R1. The TOP of the ARGUMENT STACK is moved to the location pointed to by the REGISTER PAIR R3:R1(R3 = high byte, R1 = low byte, in REGISTER BANK 0, RB0). The ARGUMENT STACK POINTER is automatically INCREMENTED BY 6. Just as in the previous PUSH instruction, the REG- ISTER PAIR R3:R1 points to the MOST SIGNIFICANT BYTE of the floating point number and is DECREMENTED BY 6 after the CALL instruction is executed. EXAMPLE OF USER PUSH AND POP: BASIC PROGRAM:
>5 REM PUT 100 AND 200 ON THE ARGUMENT STACK >10 PUSH 100,200 >15 REM CALL THE USER ROUTINE TO SAVE NUMBERS >20 CALL 5000H >25 REM CLEAR THE STACK >30 CLEARS >35 REM USE ASM TO PUT NUMBERS BACK ON STACK >40 CALL 5010H >50 POP A,B >60 PRINT A,B >RUN 100 200 READY ASM PROGRAM: ORG 5000H MOV R3,#HIGH USER_SAVE ; LOAD POINTERS TO WHERE MOV R1,#LOW USER_SAVE ; NUMBERS WILL BE SAVED.
MOV A,#03H ; LOAD OPBYTE CALL 30H ; SAVE ONE NUMBER MOV A,#03H ; LOAD OPBYTE AGAIN CALL 30H ; SAVE ANOTHER NUMBER RET ; BACK TO BASIC ; ORG 5010H MOV R2,#HIGH USER_SAVE ;LOAD ADDRESS WHERE MOV R0,#LOW USER_SAVE ;NUMBERS ARE STORED MOV A,#02H ;LOAD OPBYTE CALL 30H ;PUT ONE NUMBER ON STACK MOV A,#02H ;LOAD OPBYTE CALL 30H ;NEXT NUMBER ON STACK RET ;BACK TO BASIC - 108 -