149 lines
5.3 KiB
Plaintext
149 lines
5.3 KiB
Plaintext
|
|
||
|
******************************************************************************
|
||
|
**** THE BEST APPLE'S ASSEMBLY TUTORIAL ****
|
||
|
******************************************************************************
|
||
|
**** PART 1: THE ASSEMBLER ****
|
||
|
******************************************************************************
|
||
|
**** WRITTEN BY THE BEST APPLE AND EDITED BY NOWHERE MAN ****
|
||
|
******************************************************************************
|
||
|
|
||
|
|
||
|
THIS SERIES IS FOR BEGINNERS. YOU WILL NEED AN ASSEMBLER AND A THOROUGH KNOWLEDGE OF APPLESOFT BASIC.
|
||
|
|
||
|
PREFACE:
|
||
|
|
||
|
ASSEMBLY LANGUAGE IS THE FASTEST AND MOST FLEXIBLE OF ALL PROGRAMMING LANGUAGES ON ANY COMPUTER, BECAUSE YOU ARE ACTUALLY TELLING THE COMPUTER WHAT TO DO DIRECTLY, WITHOUT A LOT OF "MIDDLEMEN" LIKE THE APPLESOFT BASIC INTERPRETER. ALSO FOR THIS REASON, ASSEMBLY IS A VERY HARD LANGUAGE TO LEARN. I HOPE THIS TUTORIAL WILL MAKE THE JOB A BIT EASIER.
|
||
|
|
||
|
*******************************************************************************
|
||
|
|
||
|
THE ASSEMBLER:
|
||
|
|
||
|
THIS TUTORIAL WILL CENTER MAINLY ON THE S-C MACRO ASSEMBLER, BUT IF YOU HAVE A DIFFERENT BRAND (MERLIN/BIG MAC, ORCA/M, LISA, ETC.) YOU SHOULD BE ABLE TO FOLLOW ALONG. IT HELPS IF YOU HAVE A MANUAL SO YOU CAN SEE IF THERE ARE ANY DIFFERENCES IN YOUR ASSEMBLER AND THE ONE I USE.
|
||
|
|
||
|
MOST ASSEMBLERS HAVE TWO PARTS I WILL DISCUSS EACH AND THE MAKEUP IN THIS ARTICLE.
|
||
|
|
||
|
PART 1: THE EDITOR
|
||
|
|
||
|
THE EDITOR IS USALLY A TEXT EDITOR FOR CREATING YOUR PROGRAMS IT WILL HAVE FEATURES FOR EDIT, DELETE, INSERT AND IF IT'S GOOD MUCH MORE.
|
||
|
|
||
|
PART 2: THE ASSEMBLER
|
||
|
|
||
|
THIS PART ASSEMBLES THE TEXT INTO MACHINE LANGUAGE CODE.
|
||
|
|
||
|
********************************************************************************
|
||
|
THE VARIABLES:
|
||
|
|
||
|
JUST AS IN APPLESOFT, ASSEMBLY LANGUAGE HAS VARIABLES. BUT, WHERE IN BASIC YOU HAD THOUSANDS TO PLAY AROUND WITH, HERE YOU ONLY HAVE A FEW AND YOU ARE RESTRICTED IN THEIR USES. WHAT FOLLOWS IS A DESCRIPTION OF EACH VARIABLE AND IT'S FUNCTION.
|
||
|
|
||
|
THE 6502 HAS 5 REGISTERS, WHICH ARE USED SIMILARLY TO VARIABLES IN HIGHER LEVEL PROGRAMMING LANGUAGES.
|
||
|
|
||
|
1. THE ACCUMULATOR ("A-REGISTER")- IS THE MAIN VARIABLE FOR GENERAL FUNCTIONS.
|
||
|
|
||
|
2. THE X REGISTER- USED FOR COUNTING
|
||
|
|
||
|
3. THE Y REGISTER- USED FOR COUNTING
|
||
|
|
||
|
4. THE STACK ("S-REGISTER")- CONTAINS THE STACK POINTERS FOR APPLESOFT AND ASSEMBLY LANGUAGE PROGRAMS
|
||
|
|
||
|
5. THE P REGISTER- KEEPS TRACK OF THE SYSTEM STATUS. IT IS DIVIDED INTO BITS, LIKE THIS:
|
||
|
|
||
|
|
||
|
7 6 5 4 3 2 1 0 >
|
||
|
^ ^ ^ ^ ^ ^ ^ ^ > ALL OF THIS
|
||
|
> IS CONTAINED IN
|
||
|
> THE "P-REGISTER"
|
||
|
N V * B D I Z C >
|
||
|
|
||
|
N. THE NEGITIVE BIT-0 IF THE LAST COMPARE WAS + 1 IF IT WAS -
|
||
|
|
||
|
V. THE OVERFLOW BIT-0 IF THE LAST RESULT DID NOT OVERFLOW
|
||
|
|
||
|
*. UNUSED
|
||
|
|
||
|
B. BREAK STATUS-1 AFTER A BRK COMMAND
|
||
|
|
||
|
D. DECIMAL MODE-0 AFTER CLD COMMAND 1 AFTER SED
|
||
|
|
||
|
I. INTERRUPT-0 AFTER CLI 1 AFTER SEI
|
||
|
|
||
|
Z. ZERO-0 IF LAST RESULT WAS NON-ZERO 1 IF IT WAS 0
|
||
|
|
||
|
C. CARRY-0 IF THE LAST RESULT DID NOT CARRY OR A CLC AND 0 AFTER A CARRY OR SEC
|
||
|
|
||
|
IF THIS ALL SOUNDS CONFUSING, YOU'RE ABSOLUTELY RIGHT. THIS WILL BE EXPLAINED MORE THOROUGHLY IN A LATER CHAPTER OF TUTORIAL
|
||
|
|
||
|
******************************************************************************
|
||
|
|
||
|
THE LINE:
|
||
|
|
||
|
THE LINE IN ASSEMBLY HAS 5 PARTS:
|
||
|
|
||
|
1. THE LINE NUMBER, THIS IS FOR EDITING PURPOSES ONLY AND YOU CAN'T GOTO A LINE BY LINE NUMBER.
|
||
|
|
||
|
2. THE LABEL, THIS IS FOR BRANCHING YOU CAN IN SENSE GOTO A LINE BY IT'S LABEL.
|
||
|
|
||
|
3. INSTRUCTIONS THESE ARE THE COMMANDS AND THERE ARE 56 OF THEM DEVIDED INTO 10 GROUPS:
|
||
|
|
||
|
1. TRANSFER:LDA, STA, LDX, STX, LDY, STY, TXA, TAX, TYA, TAY, TXS, TSX
|
||
|
PLA, PHA, PLP, PHP
|
||
|
|
||
|
2. ARITHMETIC:ADC, SBC, INC, INX, INY, DEC, DEX, DEY
|
||
|
|
||
|
3. LOGICAL:AND, ORA, EOR, BIT
|
||
|
|
||
|
4. SHIFT:ASL, LSR, ROL, ROR
|
||
|
|
||
|
5. COMPARE:CMP, CPX, CPY
|
||
|
|
||
|
6. STATUS:SEC, SED, SEI, CLC, CLV,, CLD, CLI
|
||
|
|
||
|
7. BRANCH:BCC, BVC, BNE, BPL, BCS, BVS, BEQ, BMI
|
||
|
|
||
|
8. JUMP:JMP, JSR
|
||
|
|
||
|
9. RETURN:RTS, RTI
|
||
|
|
||
|
10. OTHER:NOP, BRK
|
||
|
|
||
|
YES, YOU MAY HAVE NOTICED THEY ARE ALL 3 LETTERS. THERE ARE ALSO ASSEMBLER COMMANDS THAT ARE DIFFERENT FOR EACH ASSEMBLER. NEXT WEEK I'LL LIST AND EXPLAIN THESE AND THE ASSEMBLER COMMANDS FOR S-C MACRO ASSEMBLER.
|
||
|
|
||
|
4. THE OPCODE: IS THE NUMBER USALLY FOUND AFTER THE COMMAND THERE ARE 4 TYPES:
|
||
|
|
||
|
1. $00-MEANS WHATS IN THE LOCATION $00
|
||
|
2. #00-MEANS THE DECIMAL NUMBER 0
|
||
|
3. #$00-MEANS THE HEX NUMBER $00
|
||
|
4. $300,Y-MEANS THE VALUE OF THE ADDRESS $300+Y SO $300,Y WHEN Y=2 IS $302'S VALUE
|
||
|
|
||
|
5. THE REM FIELD FOR REMARKS
|
||
|
|
||
|
|
||
|
GET THE IDEA? IT'S EASY!
|
||
|
|
||
|
NEXT TIME: THE COMMANDS
|
||
|
|
||
|
******************************************************************************
|
||
|
|
||
|
CREATED AND WRITTEN BY:
|
||
|
|
||
|
THE BBB
|
||
|
B B
|
||
|
BBB
|
||
|
B B
|
||
|
BBB EST APPLE
|
||
|
|
||
|
(OF SADISTIC SOFTWARE AND THE BLACK HOLE BANDITS)
|
||
|
|
||
|
EDITED BY:
|
||
|
|
||
|
// /
|
||
|
/ / /
|
||
|
/ / /
|
||
|
/ // OWHERE MAN
|
||
|
|
||
|
(OF SADISTIC SOFTWARE AND THE BLACK HOLE BANDITS)
|
||
|
|
||
|
|
||
|
******************************************************************************
|
||
|
ORIGINALLY WRITTEN IN 80 COLUMNS, UPPER CASE ONLY, ON TUESDAY NOVEMBER 20 1984
|
||
|
THIS MAY BE DISTRIBUTED AND POSTED ON BBS'S *AS LONG AS IT IS NOT CHANGED*
|
||
|
*******************************************************************************
|