LISTING4.TXT
********************************************************************** * * * 68000 ASSEMBLER COURSE ON ATARI ST * * * * by The Fierce Rabbit (from 44E) * * * * Second series * * * * Listing number 4 * ********************************************************************** * Program self-modification INCLUDE "B:\START.S" startup routine MOVE.L #MESSAGE1,-(SP) introducing MOVE.W #9,-(SP) the program TRAP #1 ADDQ.L #6,SP START MOVE.W #7,-(SP) waiting for a key press TRAP #1 ADDQ.L #2,SP CMP.W #" ",D0 space? BEQ END yes, so goodbye MOVE.W #$4E71,VARIANT places a NOP (by default) CMP.W #"A",D0 press 'A'? BNE HERE no BSR ROUTINE yes, so long subroutine BRA START and start over HERE MOVE.W #$4E75,VARIANT places a RTS instead BSR ROUTINE of the NOP and goes to subroutine BRA START then starts over END MOVE.W #0,-(SP) TRAP #1 *--------------------------------------------* ROUTINE MOVE.L #MESSAGE2,-(SP) MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP VARIANT NOP MOVE.L #MESSAGE3,-(SP) MOVE.W #9,-(SP) TRAP #1 ADDQ.L #6,SP RTS *--------------------------------------------* SECTION DATA MESSAGE1 DC.B 27,"E","Press A for a long message,",13,10 DC.B "space to exit, another key",13,10 DC.B "for a shorter message",13,10,0 EVEN MESSAGE2 DC.B 13,10,"Here's the short message...",0 EVEN MESSAGE3 DC.B "Oops, no, it's the long one!!!",0 EVEN SECTION BSS DS.L 100 STACK DS.L 1 END
Back to ASM_Tutorial