home *** CD-ROM | disk | FTP | other *** search
- ═ACHINE ╠ANGUAGE LESSON FOR BEGINNERS #2
-
- ─ATE - ═ARCH 10, 1994
-
- ╘IME - 10:30 PM ┼╙╘
-
- <[─ELTAR] ─.╦╔╬╔╬╟> ╫HAT'S TONIGHT'S ═╠ TOPIC?
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘ONIGHTS ═╠ TOPIC IS REGISTERS AND AN INTRODUCTION TO THE ═╠
- INSTRUCTION SET. ╫ELL, ITS TIME TO BEGIN THE LESSON.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╩UST LIKE ┬┴╙╔├ CAN HAVE VARIABLES, THE PROCESSOR IN THE ├64
- HAS ITS OWN SET OF "VARIABLES" THAT IT USES FOR CALCULATIONS. ╘HESE
- "VARIABLES" ARE REFERRED TO AS ╥┼╟╔╙╘┼╥╙. ╘HEY DO NOT EXIST IN THE
- ├OMMODORE'S ╥┴═ MEMORY, BUT EXIST TOTALLY INSIDE THE PROCESSOR AND ARE
- INDEPENDENT OF THE COMPUTER'S MEMORY.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE MOST IMPORTANT REGISTER IS CALLED THE ┴├├╒═╒╠┴╘╧╥. ╔T IS
- THE MOST USED AND MOST IMPORTANT REGISTER. ╔T IS REFERRED TO AS THE
- ┴├├╒═╒╠┴╘╧╥ BECAUSE IT IS TRADITIONALLY USED TO ACCUMULATE THE TOTAL IN
- PROCESSES LIKE ADDITION OR SUBTRACTION.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘OU CAN THINK OF THE ACCUMULATOR AS A TEMPORARY HOLDING PLACE
- FOR INFORMATION AS YOU DO CALCULATIONS AND MOVE INFORMATION IN MEMORY. ╞OR
- EXAMPLE, IF YOU NEED TO COPY ONE MEMORY LOCATION TO ANOTHER, THEN YOU WOULD
- LOAD THE FIRST MEMORY LOCATION _INTO_ THE ACCUMULATOR, AND THEN STORE THE BYTE
- INTO THE OTHER MEMORY LOCATION.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE REASON THIS IS DONE IS BECAUSE THE ├OMMODORE DOESN'T HAVE
- AN INSTRUCTION THAT JUST SAYS "COPY ONE MEMORY LOCATION TO ANOTHER". ┬UT THE
- ├OMMODORE DOES HAVE INSTRUCTIONS THAT SAY "LOAD THE ACCUMULATOR WITH THE BYTE
- IN A MEMORY LOCATION" AND ANOTHER THAT SAYS "STORE THE BYTE IN THE ACCUMULATOR
- INTO A MEMORY LOCATION"
-
- <[╘ONY] ┴.╘╧╠╠┼> ┬Y THE WAY, IF YOU HAVE ANY QUESTIONS AT ALL ABOUT THE
- LESSON, DON'T HESITATE TO ASK.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE ACCUMULATOR IS IMPORTANT FOR ANOTHER REASON. ╔T IS THE
- ONLY REGISTER THAT CAN BE USED IN MATH OPERATIONS LIKE ADDING AND SUBTRACTING.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HERE ARE INSTRUCTIONS THAT DO THINGS LIKE "ADD THE BYTE IN A
- MEMORY LOCATION TO THE ACCUMULATOR" AND "SUBTRACT A NUMBER FROM THE
- ACCUMULATOR".
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE RESULTS OF ALL MATH OPERATIONS END UP IN THE ACCUMULATOR.
- ╙O TO ADD ONE NUMBER TO ANOTHER AND STORE IT IN A MEMORY LOCATION YOU WOULD
- LOAD THE ACCUMULATOOR WITH THE FIRST NUMBER, THEN ADD IT TO THE SECOND NUMBER,
- THEN STORE THE VALUE OF THE ACCUMULATOR INTO A MEMORY LOCATION.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴NOTHER REGISTER THAT IS ALMOST LIKE THE ACCUMULATOR IS THE ╪
- INDEX REGISTER. ┘OU CAN USE THE ╪ REGISTER TO LOAD AND STORE DATE FROM AND TO
- MEMORY LOCATIONS LIKE THE ACCUMULATOR, BUT THE ╪ REGISTER ALSO HAS ANOTHER
- IMPORTANT FUNCTION.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔T ALLOWS YOU TO DO A SPECIAL FUNCTION CALLED "INDEXING"
- WHICH IS SIMPLY A WAY TO ACCESS MEMORY LIKE YOU WOULD ACCESS A ┬┴╙╔├ ARRAY
- VARIABLE (THE 5 IN THE ARRAY REFERENCE ┴(5) IS REFERRED TO AS THE INDEX OF THE
- ARRAY)
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HERE IS ALSO A ┘ ╔NDEX REGISTER WHICH IS ALMOST EXACTLY LIKE
- THE ╪ REGISTER, EXCEPT IT ALSO HAS SPECIAL FUNCTIONS WHICH WE WILL GET INTO
- LATER IN THE LESSONS.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴NOTHER IMPORTANT REGISTER IS THE STATUS REGISTER, WHICH IS
- THE COMPUTERS MAIN METHOD OF MAKING DECISIONS.
-
- ** <╥.┬╧┘╠┼╙2> IS HERE.
-
- <╥.┬╧┘╠┼╙2> EVENING
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴LMOST ALL THE INSTRUCTIONS IN THE PROCESSOR AFFECT OR USE
- THE STATUS REGISTER IN SOME WAY, BECAUSE IT KEEPS TRACK OF THE TYPE OF RESULT
- OF MATHEMATICAL OPERATIONS AND ETC.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╚IYA ╥OB!
-
- <╥.┬╧┘╠┼╙2> EVENING.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╞OR EXAMPLE, THE STATUS REGISTER KEEPS TRACK OF WHETHER OR
- NOT THAT LAST ADDITION RESULTED IN A ZERO OR NON-ZERO VALUE, A "POSITIVE" OR
- "NEGATIVE" VALUE, AND WHETHER OR NOT THE COMPUTER HAD TO "CARRY" A BIT IN THE
- ADDITION.
-
- <[╘ONY] ┴.╘╧╠╠┼> (JUST LIKE WE HAVE TO CARRY NUMBERS IN OUR OWN ADDITION).
-
- ** <├┬═-┼─> IS HERE.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╧THER THINGS THAT THE MICROPROCESSOR KEEPS TRACK OF ARE THE
- ╨╥╧╟╥┴═ ├╧╒╬╘┼╥ AND THE ╙╘┴├╦ ╨╧╔╬╘┼╥. ╘HE PROGRAM COUNTER IS JUST THE
- ADDRESS OF THE CURRENT ═╠ INSTRUCTION THAT THE COMPUTER IS EXECUTING.
-
- <├┬═-┼─> ╚I ╞RANK, ╘ONY, ─ELTAR, ╥┬
-
- <[╘ONY] ┴.╘╧╠╠┼> ╚IYA ┼D!
-
- <╥.┬╧┘╠┼╙2> ""
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE STACK POINTER KEEPS TRACK OF THE AMOUNT OF SPACE IN THE
- PROCESSOR "STACK", WHICH IS AN AREA OF THE COMPUTER USED TO KEEP TRACK OF
- TEMPORARY INFORMATION.
-
- <[─ELTAR] ─.╦╔╬╔╬╟> HI ┼D.
-
- <├┬═-┼─> :)
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫ELL ╔ JUST WANTED TO COVER THE VERY BASIC ELEMENTS OF THE
- REGISTERS BEFORE MOVING INTO THE ═╠ INSTRUCTION SET, BECAUSE YOU NEED SOME
- KNOWLEDGE OF REGISTERS BEFORE YOU CAN UNDERSTAND HOW THE ═╠ INSTRUCTIONS WORK.
-
- ** <┼.╥╧┬┼╥╘╙╘┴─> IS HERE.
-
- <├┬═-┼─> ╚I ┼╥
-
- <┼.╥╧┬┼╥╘╙╘┴─> ╚I ALL
-
- ** <[E.G.BELL] ├┬═-┼─> WAS <├┬═-┼─>.
-
- ** <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> WAS <┼.╥╧┬┼╥╘╙╘┴─>.
-
- <[─ELTAR] ─.╦╔╬╔╬╟> RE ┼IRIK :)
-
- <[╘ONY] ┴.╘╧╠╠┼> ═╠ INSTRUCTIONS ARE A COMPLICATED TOPIC BECAUSE WHEN WE
- PROGRAM IN ═╠ WE DON'T USUALLY USE THE INSTRUCTIONS IN THEIR NATIVE FORM (I.E.
- JUST THE BYTE VALUES OF THE INSTRUCTIONS THEMSELVES)
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫HAT IS USUALLY DONE IS WE USE SOMETHING CALLED AN ┴╙╙┼═┬╠┼╥
- TO ALLOW US TO WRITE MACHINE LANGUAGE IN A FORM THAT ISN'T JUST NUMBERS.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴N ASSEMBLER CONVERTS ABBREVIATIONS CALLED "MNEMONICS" INTO
- THE NUMBERS THAT ARE THE ═╠ INSTRUCTIONS.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> IS THE HES-MON 64 ANY GOOD?
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔ HAVE NOT HAD A CHANCE TO USE ╚ES-═ON BUT IT SHOULD BE GOOD
- ENOUGH FOR WHAT WE WILL BE DOING... ┴CTUALLY MOST MONITORS INCLUDE WHAT IS
- CALLED A "MINI-ASSEMBLER" WHICH ALLOWS YOU TO ENTER INSTRUCTIONS IN MNEMONIC
- FORMAT.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE MINI-ASSEMBLER IS WHAT WE WILL BE USING AT FIRST, BECAUSE
- USING A FULL-FLEDGED ASSEMBLER WOULD BE A LITTLE COMPLICATED RIGHT NOW.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╙O USING ╚ES-═ON WILL BE FINE, ┼IRIK, ALTHOUGH THE CLASS WILL
- BE "OFFICIALLY" USING THE ═EGAMON MONITOR PROGRAM AVAILABLE FOR DOWNLOAD RIGHT
- HERE ON ╟┼NIE.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> OK ╔'LL LOOK INTO THAT.
-
- <[─ELTAR] ─.╦╔╬╔╬╟> ╔'VE USED ═EGAMON. ╔TS A GOOD ONE.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┬UT THE OPERATION OF ALL ═╠ MONITORS ON THE C64 IS ALMOST
- EXACTLY THE SAME, SO YOU SHOULDN'T HAVE ANY PROBLEM FOLLOWING ALONG.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> GREAT!!
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫ELL, PERHAPS THE BEST WAY TO EXPLAIN THE CONCEPT OF
- "MNEMONICS" IS TO SHOW YOU AN EXAMPLE:
-
- <[╘ONY] ┴.╘╧╠╠┼> ═NEMONICS ARE ABBREVIATIONS FOR THE FUNCTION OF EACH OF THE
- INSTRUCTIONS, FOR EXAMPLE THE INSTRUCTION THAT SAYS "LOAD ACCUMULATOR WITH
- SOME DATA" IS ABBREVIATED ╠─┴.
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴N EXAMPLE OF THE ╠─┴ (╠OA─ ┴CCUMULATOR) INSTRUCTION WOULD BE
- ╠─┴ $├000
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HIS INSTRUCTION MEANS "LOAD THE ACCUMULATOR WITH THE BYTE
- STORED AT MEMORY LOCATION $├000". ┴NOTHER INSTRUCTION WOULD BE THE ╙╘┴ OR
- ╙╘ORE ┴CCUMULATOR INSTRUCTION, FOR EXAMPLE ╙╘┴ $├001
-
- <[╘ONY] ┴.╘╧╠╠┼> WHICH WOULD MEAN "STORE THE VALUE OF THE ACCUMULATOR IN
- MEMORY LOCATION $├001. ╘HUS IF YOU USED THIS TWO INSTRUTIONS TOGETHERM YOU
- COULD COPY OF THE CONTENTS OF LOCATION $├000 TO THE LOCATION $├001.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> ╔'VE GOT TO GO. ╔'LL GET THAT ═EGAMON. ╘ONY COULD ╔
- HAVE YOUR MAIL BOX ADDRESS SO ╔ COULD ASK YOU SOME ╤'S LATTER ON?
-
- <[╘ONY] ┴.╘╧╠╠┼> ╩UST SEND MAIL TO ┴.╘╧╠╠┼
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> OK THANKS BYE.
-
- ** <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> HAS LEFT.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫HEN YOU PROGRAM IN ═╠ YOU MUST ALWAYS REMEMBER, HOWEVER,
- THAT THE PROGRAM IS NOT BEING STORED IN MEMORY AS THESE ABBREVIATIONS, BUT AS
- NUMBERS THAT ARE THE ACTUAL MACHINE LANGUAGE INSTRUCTIONS THAT THE COMPUTER
- UNDERSTANDS.
-
- <[E.G.BELL] ├┬═-┼─> ╟OTTA GO TO WORK. ╬ITE ALL! :)
-
- ** <[E.G.BELL] ├┬═-┼─> HAS LEFT.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔N OUR EXAMPLE, THE INSTRUCTIONS ╠─┴ $├000 AND ╙╘┴ $├000
- WOULD BE "ASSEMBLED" INTO THE NUMBERS $┴─ $00 $├0 AND $8─ $01 $├0.
-
- <[╘ONY] ┴.╘╧╠╠┼> '╬IGHT ┼D.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE NUMBER $┴─ IS THE ═╠ INSTRUCTION THAT MEANS "LOAD THE
- ACCUMULATOR WITH THE BYTE STORED IN THE MEMORY LOCATION THAT IS IN THE
- FOLLOWING TWO BYTES".
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴ND THE NUMBER $8─ IS THE ═╠ INSTRUCTION THAT MEANS "STORE
- THE VALUE OF THE ACCUMULATOR INTO THE MEMORY LOCATION THAT IS IN THE FOLLOWING
- TWO BYTES"
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HERE ARE SEVERAL DIFFERENT FORMS OF THE ╠─┴ INSTRUCTION,
- WHICH HAVE DIFFERENT NUMBERS IN THE COMPUTER. ╞OR EXAMPLE, THE ╠─┴ #$05
- INSTRUCTION MEANS "LOAD THE ACCUMULATOR WITH THE NUMBER 5" AND WOULD BE STORED
- AS THE BYTES $┴9 $05 IN MEMORY. ╘HIS IS WHY IT IS EASIER TO USE AN ASSEMBLER
- THAN PROGRAMMING THE NUMBERS DIRECTLY, BECAUSE YOU ONLY HAVE TO REMEMBER ╠─┴
- $├000 AND ╠─┴ $05 INSTEAD OF REMEMBERING $┴─ $00 $├0 AND $┴9 $05.
-
- ** <┼.╥╧┬┼╥╘╙╘┴─> IS HERE.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╙O EVEN THOUGH THE ╠─┴ INSTRUCTION HAS DIFFERENT FORMS, YOU
- DON'T HAVE TO KNOW THE NUMBERS FOR ALL THE FORMS OF THE ╠─┴ INSTRUCTION TO USE
- IT IN THE MACHINE LANGUAGE MONITOR.
-
- ** <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> WAS <┼.╥╧┬┼╥╘╙╘┴─>.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> ╚I ALL, GOT THE MEGAMON.
-
- <[─ELTAR] ─.╦╔╬╔╬╟> ╟OOD WORK ┼IRIK
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴NOTHER NOTE... ╫HENEVER YOU SEE THE "#" (NUMBER SIGN)
- SYMBOL IN FRONT OF A VALUE IN AN ╠─┴ INSTRUCTION, IT MEANS TO ACTUALLY USE THE
- _VALUE_ OF THE BYTE RATHER THAT BYTE THAT IS STORED IN A MEMORY LOCATION.
- ╘HUS,
-
- <[╘ONY] ┴.╘╧╠╠┼> ╠─┴ $05 WOULD MEAN LOAD ACCUMULATOR WITH THE BYTE STORED AT
- MEMORY LOCATION $05 (STORED THERE COULD BE ANYTHING), WHERAS ╠─┴ #$05 WOULD
- MEAN LOAD ACCUMULATOR WITH THE VALUE $05, SEE THE DIFFERENCE?
-
- <[╘ONY] ┴.╘╧╠╠┼> ╙O SAY STORED AT MEMORY LOCATION $05 IS THE NUMBER 200, THEN
- AN ╠─┴ $05 INSTRUCTION WOULD MAKE THE ACCUMULATOR BECOME THE VALUE 200, WHERAS
- THE ╠─┴ #$05 INSTRUCTIONS WOULD ALWAYS MAKE THE ACCUMULATOR BECOME THE NUMBER
- 5.
-
- <[─ELTAR] ─.╦╔╬╔╬╟> ╠─┴ $05 WOULD BE LIKE ┴CC.=PEEK(05) AND ╠─┴ #$05 WOULD BE
- ┴CC.=05
-
- <[╘ONY] ┴.╘╧╠╠┼> ┘OU GOT THE IDEA, ─ELTAR. :)
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> ╔ GOT SOME THING.. HOW DO YOU CHANGE A BYTE TO A BLOCK?
- ╧R THE OTHER WAY?
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴S FAR AS CHANGING FROM BYTE TO BLOCK, ╔ AM NOT SURE EXACTLY
- WHAT YOU MEAN, ┼IRIK?
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> ╠IKE WHAT IS THE RATIO TO EACH OTHER?
-
- <[─ELTAR] ─.╦╔╬╔╬╟> 1 BLOCK=256 BYTES
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔ SEE. ┴ BLOCK IS MADE UP OF EXACTLY 256 BYTES. ╫HEN
- REFERRING TO THAT IN COMPUTER MEMORY IT IS MORE COMMON TO REFER TO 256 BYTES
- AS A "PAGE" RATHER THAN A BLOCK.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> THANKS!! THAT HELPS A LOT
-
- ** <═.├╧├╚╥┴╬┼2> IS HERE.
-
- ** <[═IKE] ═.├╧├╚╥┴╬┼2> WAS <═.├╧├╚╥┴╬┼2>.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╘HE TERM "BLOCK" IS USED MORE OFTEN WHEN REFERRING TO DATA
- STORED ON A DISK DRIVE, LIKE BLOCKS ON A 1541 DISK.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╚IYA ═IKE!
-
- <[═IKE] ═.├╧├╚╥┴╬┼2> ╚IYA ╘ONY :)
-
- <[╘ONY] ┴.╘╧╠╠┼> ┴LTHOUGH THE TERMS "PAGE" AND "BLOCK" CAN BE USED
- INTERCHANGABLY.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> ╔ DO A LOT WITH ╔┬═ BORDS ─/╠ING TO MY ├-64. ╔T'S HARD
- TO TELL IF ╔ GOT THE ROOM ON MY DISK.
-
- <[─ELTAR] ─.╦╔╬╔╬╟> JUST REMEMBER THAT 4 BLOCKS = 1 ╦.
-
- <[┼IRIK] ┼.╥╧┬┼╥╘╙╘┴─> ╔ GOT THAT. ╞ROM ─/╠ING WITH A ╪-═ODEM 1╦. ┬Y THE WAY
- CAN YOU GET A ┌-MODEM FOR THE ├-64?
-
- <[╘ONY] ┴.╘╧╠╠┼> ╨ERHAPS A BREAKDOWN OF DIFFERENT MEMORY SIZES WOULD BE A GOOD
- IDEA: ╘HE SMALLEST UNIT IS THE BIT (A 0 OR 1), 4 BITS MAKE A NYBBLE, 8 BITS
- MAKE A BYTE, 2 BYTES MAKE A WORD, 16 BYTES MAKE A SENTENCE (USED RARELY), 256
- BYTES MAKE A PAGE, 1024 BYTES MAKE 1 KILOBYTE, 1024 KILOBYTES MAKE A MEGABYTE
- AND SO ON.
-
- <[╘ONY] ┴.╘╧╠╠┼> ╔ DON'T KNOW OF ANY ┌-MODEM TERMS FOR THE 64, ┼IRIK.
-
- <[═IKE] ═.├╧├╚╥┴╬┼2> ╬ICK IS SUPPOSED TO BE UPDATING ╬OVATERM FOR ┌-MODEM, ╔
- HEAR
-
- <[╘ONY] ┴.╘╧╠╠┼> ╫ELL, TONIGHTS LESSON IS OVER, BUT NEXT WEEK WE WILL RESUME
- WHERE WE LEFT OFF. :)
-