home *** CD-ROM | disk | FTP | other *** search
- ═ACHINE ╠ANGUAGE LESSON FOR BEGINNERS #3
-
- ─ATE - ═ARCH 17, 1994
-
- ╘IME - 10:30 PM ┼╙╘
-
- <[╘ONY] ┴.╘╧╠╠┼> ╧K, THE LAST THING WE WERE COVERING LAST WEEK WAS THE CONCEPT
- OF MNEMONIC INSTRUCTIONS LIKE THE "╠─┴" INSTRUCTION IN ═╠.
-
- <[╘ONY] ┴.╘╧╠╠┼> ═NEMONICS ARE THE CONVENTIONAL ABBREVIATIONS FOR TYPING IN ═╠
- INSTRUCTIONS WHEN USING AN ASSEMBLER OR AN ═╠ MONITOR.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HEY HAVE NO REAL RELATIONSHIP TO THE ACTUAL INSTRUCTION,
- WHICH IS JUST A NUMBER, EXCEPT THAT THEY JUST REPRESENT THE INSTRUCTION SO
- THAT WE DON'T HAVE TO REMEMBER ALL THE DIFFERENT NUMBERS FOR THE COMMANDS.
-
- <╟┼╧╙-╘╔═> AFK
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE "╠─┴" INSTRUCTION HAS SEVERAL DIFFERENT FORMS, ALL OF
- WHICH ARE REPRESENTED BY THE "╠─┴" MNEMONIC (╠OA─ ┴CCUMULATOR).
-
- <[╘ONY] ┴.╘╧╠╠┼> ╞OR EXAMPLE, THE TWO INSTRUCTIONS ╠─┴ #$05 AND ╠─┴ $05 ARE
- DIFFERENT INSTRUCTIONS BUT BOTH LOAD THE ACCUMULATOR REGISTER WITH SOME SORT
- OF DATA.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╞RANK, YOU DOWNLOADED THE "MEGAMON" MONITOR PROGRAM, CORRECT?
-
- <[╞RANK] ┬╒╞╞.╨╚╧╧╬> YES
-
- <[╘ONY] ┴.╘╧╠╠┼> ╧K, WELL TONIGHT ╔ WILL GIVE YOU AN EXAMPLE ═╠ PROGRAM TO TRY
- OUT WITH THE MEGAMON MONITOR.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔T IS PERHAPS THE BEST WAY TO TEACH BOTH THE CONCEPT OF AN ═╠
- PROGRAM AND HOW TO USE THE MONITOR.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE MEGAMON PROGRAM IS STORED ON DISK UNDER THE NAME
- "MEGAMON.40950". ╘HE REASON THIS NAME IS USED IS BECAUSE 40950 IS THE MEMORY
- ADDRESS THAT MEGAMON LOADS INTO MEMORY AT WHEN YOU ╠╧┴─ THE PROGRAM.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘O LOAD IT YOU MUST TYPE LOAD"MEGAMON.40950",8,1 AND PRESS
- ╥┼╘╒╥╬. ┘OU MUST REMEMBER TO PUT ",8,1" AT THE END OF THE ╠╧┴─ COMMAND TO
- LOAD THE PROGRAM IN AT THE CORRECT ADDRESS.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╧NCE THE PROGRAM IS LOADED, YOU SHOULD IMMEDIATELY TYPE THE
- COMMAND ╙┘╙40950 AND PRESS ╥┼╘╒╥╬. ╘HIS TELLS ┬┴╙╔├ TO ACTUALLY START RUNNING
- THE ═╠ PROGRAM THAT IS IN MEMORY AT ADDRESS 40950.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫HEN THE PROGRAM RUNS, YOU WILL SEE THE SCREEN CLEAR AND THE
- MONITOR WILL PRINT AN INTRODUCTION AND THEN A PROMPT FOR YOU TO TYPE INPUT.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘OU WILL SEE A LINE ABOVE THE CURSOR THAT LOOKS SOMETHING
- LIKE THIS:
-
- <[╘ONY] ┴.╘╧╠╠┼> PC AR XR YR SP SR <[╘ONY] ┴.╘╧╠╠┼> ; 9FFF 05 20 32 F0 30
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE NUMBERS LIKE THE "9FFF" PROBABLY WON'T BE THE SAME AS ╔
- HAVE RIGHT HERE.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫HAT THESE TWO LINES TELL YOU IS THE VALUES OF ALL THE
- INTERNAL REGISTERS... ╘HE PROGRAM COUNTER (╨├), ACCUMULATOR (┴╥), ╪ REGISTER
- (╪╥), ┘ REGISTER (┘╥), ╙TACK POINTER (╙╨), AND STATUS REGISTER (╙╥)
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HIS IS A DIAGNOSTIC TOOL FOR CHECKING YOUR ═╠ PROGRAM TO SEE
- IF IT IS RUNNING CORRECTLY.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘OU CAN RUN A SHORT SECTION OF THE PROGRAM AND THEN EXAMINE
- THE REGISTERS TO SEE IF THEY ARE CURRENTLY HOW THEY ARE SUPPOSED TO BE.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╧K, NOW ╔ WILL SHOW YOU WHAT COULD BE ONE OF THE SHORTEST ═╠
- PROGRAMS. ╘O ACTUALLY "ASSEMBLE" AN ═╠ PROGRAM IN MEMORY, WE USE THE "┴"
- COMMAND IN THE MONITOR.
-
- ** <[┼DDIE] ┼.┬╧╒╥─╧╬1> IS HERE.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╚IYA ┼DDIE.
-
- <╟┼╧╙-╘╔═> ╚I ┼DDIE
-
- <[┼DDIE] ┼.┬╧╒╥─╧╬1> ╚I ╘ONY,╘IM, ╞RANK
-
- <[╞RANK] ┬╒╞╞.╨╚╧╧╬> 'LO ┼DDIE
-
- <[╘ONY] ┴.╘╧╠╠┼> ╞OR NOW, MOST OF OUR PROGRAMS WILL BEGIN AT ADDRESS $C000,
- WHICH IS 49152 IN DECIMAL. ╘HIS IS A CONVENIENT LOCATION BECAUSE IT DOESN'T
- INTEREFERE WITH OTHER PROGRAMS IN MEMORY.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╙O TO TYPE IN THIS PROGRAM YOU WOULD TYPE:
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴ $├000 ╠─┴ #$10
-
- <[╘ONY] ┴.╘╧╠╠┼> AND PRESS ╥┼╘╒╥╬.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HIS MEANS TO START ASSEMBLING AN ═╠ PROGRAM AT $C000 AND THE
- FIRST INSTRUCTION IS ╠─┴ #$10.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE COMPUTER WILL RESPOND BY PRINTING:
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴ $├002
-
- <[╘ONY] ┴.╘╧╠╠┼> AND THEN DISPLAYING THE CURSOR RIGHT AFTER THE $C002.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HIS TELLS YOU TWO THINGS: ╘HE COMPUTER ACCEPTED YOUR FIRST
- INSTRUCTION, AND NOW IT IS READY FOR ANOTHER INSTRUCTION (NOTICE THAT THE
- ADDRESS INCREASED BY TWO, BECAUSE THE ╠─┴ #$10 INSTRUCTION TAKES UP TWO
- BYTES).
-
- <[╘ONY] ┴.╘╧╠╠┼> ╥EMEMBER THAT THE PROGRAM ISN'T ACTUALLY RUNNING RIGHT NOW,
- BUT YOU ARE JUST ENTERING IT INTO MEMORY USING THE MONITOR'S MINI-ASSEMBLER TO
- CONVERT THE MNEMONIC INSTRUCTIONS (I.E. THE ╠─┴ INSTRUCTION) INTO THE PURE ═╠
- NUMBERS.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╬EXT YOU WOULD TYPE:
-
- <[╘ONY] ┴.╘╧╠╠┼> ┬╥╦
-
- <[╘ONY] ┴.╘╧╠╠┼> AND PRESS ╥┼╘╒╥╬. ╘HIS ENTERS IN THE ┬╥╦ (┬╥EA╦) INTO
- MEMORY. ═ESSAGE SENT TO ╩OB 4
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE ┬╥╦ INSTRUCTION IS SIMPLY AN INSTRUCTION THAT TELLS THE
- PROCESSOR TO INTERRUPT THE CURRENT PROGRAM AND START EXECUTING AN ═╠ PROGRAM
- AT A DIFFERENT ADDRESS.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔T IS USED IN ═╠ MONITORS TO END THE PROGRAM AND RETURN
- CONTROL TO THE MONITOR, WHERE IT WILL DISPLAY THE VALUES OF THE REGISTERS FOR
- YOU.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT YOU HAVE ENTERED THAT INSTRUCTION, YOU WILL SEE:
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴ $├003
-
- <[╘ONY] ┴.╘╧╠╠┼> WITH A CURSOR.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT YOU ARE FINISHED TYPING IN THE PROGRAM, YOU WOULD
- PRESS ╥┼╘╒╥╬ TO EXIT THE MINI-ASSEMBLER.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╬OW YOU ARE READY TO ACTUALLY RUN THE ═╠ PROGRAM TO SEE WHAT
- IT DOES. ┬EFORE YOU DO THAT THOUGH, YOU CAN DO WHAT IS CALLED "DISASSEMBLING"
- THE PROGRAM, WHICH IS JUST A FANCY WAY OF SAYING THAT YOU WANT TO LIST THE ═╠
- PROGRAM IN MEMORY.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘YPE THE COMMAND:
-
- <[╘ONY] ┴.╘╧╠╠┼> ─ $├000 $├002
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫HICH MEANS, "DISASSEBLE THE ═╠ PROGRAM FROM ADDRESS $├000 TO
- $├002". ╨RESS ╥┼╘╒╥╬ AND YOU WILL SEE:
-
- <[╘ONY] ┴.╘╧╠╠┼> *├000 ┴9 10 ╠─┴ #$10 <[╘ONY] ┴.╘╧╠╠┼> *├002 00 ┬╥╦
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE HEX NUMBERS SHOWN TO THE LEFT OF THE MNEMONIC
- INSTRUCTIONS ARE THE ACTUAL ═╠ INTRUCTION CODES THAT ARE STORED IN MEMORY.
- ╬OTICE THAT THE ═╠ PROGRAM ONLY TAKES UP THREE BYTES OF MEMORY.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┬EFORE WE RUN THE PROGRAM, WE SHOULD ALSO DO ONE OTHER THING.
- ╬OTICE THAT THE PROGRAM IS SUPPOSED TO ALTER THE ┴CCUMULATOR; WE NEED TO RESET
- THE VALUE OF THE ACCUMULATOR BEFORE RUNNING THE PROGRAM SO THAT WE CAN SEE
- WHAT THE PROGRAM DOES. ─O THIS BYTE TYPING "╥" AND PRESSING ╥┼╘╒╥╬.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HIS WILL SHOW THE VALUES OF THE REGISTERS LIKE THIS:
-
- <[╘ONY] ┴.╘╧╠╠┼> ╨├ ┴╥ ╪┘ ┘╥ ╙╨ ╙╥ <[╘ONY] ┴.╘╧╠╠┼> ; ╪╪╪╪ ╪╪ ╪╪ ╪╪ ╪╪ ╪╪
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE VALUES THAT ARE PRINTED DON'T REALLY MATTER, BUT WE DO
- WANT TO CHANGE ONE OF THEM. ═OVE THE CURSOR TO THE FIRST DIGIT OF THE HEX
- NUMBER BELOW THE ┴╥ HEADING.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘YPE OVER THE NUMBER THERE AND PUT "00" INSTEAD. ╘HE LINE
- SHOULD LOOK LIKE THIS:
-
- <[╘ONY] ┴.╘╧╠╠┼> ;╪╪╪╪ 00 ╪╪ ╪╪ ╪╪ ╪╪
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫HERE THE ONLY NUMBER YOU HAVE CHANGED IS THE SECOND NUMBER,
- THE ACCUMULATOR. ╘HEN PRESS ╥┼╘╒╥╬ TO CHANGE THE VALUE.
-
- <[┼DDIE] ┼.┬╧╒╥─╧╬1> ╫HAT DO THE ABOVE LETTERS STAND FOR?
-
- <[╘ONY] ┴.╘╧╠╠┼> ╧K, THEY ARE THE NAMES OF THE REGISTERS. ╨ROGRAM ├OUNTER
- (╨├), ┴CCUMULATOR (┴╥), ╪ REGISTER (╪╥), ┘ REGISTER (┘╥), ╙TACK ╨OINTER (╙╨),
- ╙TATUS ╥EGISTER (╙╥)
-
- <[╘ONY] ┴.╘╧╠╠┼> ╬OW WE ARE READY TO RUN THE PROGRAM. ╘YPE THE FOLLOWING:
-
- <[╘ONY] ┴.╘╧╠╠┼> ╟ $├000
-
- <[╘ONY] ┴.╘╧╠╠┼> AND PRESS ╥┼╘╒╥╬.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔T WILL SEEM AT FIRST AS IF NOTHING REALLY HAPPENED, BUT THE
- MONITOR WILL DISPLAY THE REGISTERS AGAIN LIKE THIS:
-
- <[╘ONY] ┴.╘╧╠╠┼> ╨├ ┴╥ ╪╥ ┘╥ ╙╨ ╙╥ <[╘ONY] ┴.╘╧╠╠┼> ;╪╪╪╪ 10 ╪╪ ╪╪ ╪╪ ╪╪
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘OU WILL SEE THAT THE VALUE OF THE ┴CCUMULATOR (┴╥) HAS
- CHANGED TO HEXADECIMAL 10. ╘HIS WHAT THE PROGRAM DID WITH THE ╠─┴ #$10
- INSTRUCTION.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT WE HAVE DONE THIS SIMPLE PROGRAM, WE CAN TRY ONE
- THAT DOES SOMETHING A LITTE MORE EVIDENT.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫E CAN GO AHEAD AND PUT THE NEW PROGRAM IN PLACE OF THE OLD
- ONE. ╒SING THE MINI-ASSEMBLER TYPE THE FOLLOWING PROGRAM:
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴ $├000 ╠─┴ #$30 <[╘ONY] ┴.╘╧╠╠┼> ┴ $├002 ╙╘┴ $0400 <[╘ONY]
- ┴.╘╧╠╠┼> ┴ $├005 ┬╥╦
-
- <[╘ONY] ┴.╘╧╠╠┼> ╬OW THAT THE PROGRAM IS TYPED IN, CLEAR THE SCREEN AND PRESS
- ╥┼╘╒╥╬ A COUPLE TIMES.
-
- <[┼DDIE] ┼.┬╧╒╥─╧╬1> ╙EE YA ALL LATER
-
- ** <[┼DDIE] ┼.┬╧╒╥─╧╬1> HAS LEFT.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HEN TYPE "╟ $├000" AND PRESS ╥┼╘╒╥╬, BUT BE SURE TO BE
- WATCHING THE UPPER LEFT CORNER OF THE SCREEN WHEN YOU ARE PRESSING ╥┼╘╒╥╬.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘OU SHOULD SEE A "0" CHARACTER APPEAR IN THE UPPER LEFT
- CORNER OF THE SCREEN WHEN YOU RUN THE PROGRAM.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╚ERE IS HOW THE PROGRAM WORKS:
-
- <[╘ONY] ┴.╘╧╠╠┼> ╠─┴ #$30 LOADS THE ACCUMULATOR WITH THE HEX VALUE $30, WHICH
- IS 48 IN DECIMAL. ╘HIS IS THE NUMBER THAT THE COMPUTER USES TO REPRESENT THE
- "0" CHARACTER ON THE SCREEN. ╘HE NEXT INSTRUCTION, ╙╘┴ $0400, STORES THE
- VALUE OF THE ACCUMULATOR ($30) IN THE FIRST LOCATION OF ╙CREEN ═EMORY. ╙CREEN
- MEMORY IS A RANGE OF ADDRESSES,
-
- <[╘ONY] ┴.╘╧╠╠┼> $0400 TO $07╞╞, THAT IS THE COMPUTER'S INTERNAL
- REPRESENTATION OF EVERY CHARACTER DISPLAYED ON THE SCREEN. ╘O DISPLAY
- DIFFERENT CHARACTERS, THE COMPUTER CHANGES SCREEN MEMORY IN A WAY THAT IS
- USUALLY TRANSPARENT TO US. ╫HEN YOU CLEAR THE SCREEN THE COMPUTER IS ACTUALLY
- FILLING SCREEN MEMORY WITH $20 BYTES, WHICH IS SIMPLY THE VALUE THAT
- REPRESENTS THE "SPACE" CHARACTER.
-
- <[╞RANK] ┬╒╞╞.╨╚╧╧╬> ╘IME IS ABOUT UP, ╘ONY.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘OU ARE RIGHT... ╔ DIDN'T EVEN NOTICE HEHEHEHE.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫ELP, IF THERE ARE ANY QUESTIONS ABOUT WHAT ╔ COVERED ╔'D BE
- HAPPY TO ANSWER THEM NOW.
-
- <[╞RANK] ┬╒╞╞.╨╚╧╧╬> ┘OU WANT US TO TRY WHAT WE'VE TALK ABOUT TONIGHT BEFORE
- WE COME BACK NEXT WEEK?
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘ES. TRY OUT THOSE SAMPLE PROGRAMS SO ╔ CAN FIND OUT WHAT
- KIND OF TROUBLE YOU MIGHT HAVE ENCOUNTERED...
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔ WILL UPLOAD THE TRANSCRIPT OF THIS AS SOON AS ╔ CAN SO YOU
- CAN ─╠ IT IF NECESSARY FOR REFERENCE, OR YOU CAN USE YOUR OWN BUFFER,
-
- <[╘ONY] ┴.╘╧╠╠┼> EVERYTHING SHOULD WORK AS DESCRIBED FOR THE PROGRAMS THOUGH.
-
- <[╞RANK] ┬╒╞╞.╨╚╧╧╬> ╧╦. ╔'LL TRY IT THIS WEEK-END. :: ┬UFFER OFF ::
-