📄 demo.a51
字号:
XRL A,#KONST4 XRL RAM,A XRL RAM,#KONST4 CLR A CPL A RL A RLC A RR A RRC A SWAP A ;Move Instructions: ;------------------ MOV A,R0 MOV A,R1 MOV A,R2 MOV A,R3 MOV A,R4 MOV A,R5 MOV A,R6 MOV A,R7 MOV A,RAM MOV A,@R0 MOV A,@R1 MOV A,#KONST4 MOV R0,A MOV R1,A MOV R2,A MOV R3,A MOV R4,A MOV R5,A MOV R6,A MOV R7,A MOV R0,RAM MOV R1,RAM MOV R2,RAM MOV R3,RAM MOV R4,RAM MOV R5,RAM MOV R6,RAM MOV R7,RAM MOV R0,#KONST4 MOV R1,#KONST4 MOV R2,#KONST4 MOV R3,#KONST4 MOV R4,#KONST4 MOV R5,#KONST4 MOV R6,#KONST4 MOV R7,#KONST4 MOV RAM,A MOV RAM,R0 MOV RAM,R1 MOV RAM,R2 MOV RAM,R3 MOV RAM,R4 MOV RAM,R5 MOV RAM,R6 MOV RAM,R7 MOV RAM2,RAM1 MOV RAM,@R0 MOV RAM,@R1 MOV RAM,#KONST4 MOV @R0,A MOV @R1,A MOV @R0,RAM MOV @R1,RAM MOV @R0,#KONST4 MOV @R1,#KONST4 MOV DPTR,#KONST5 MOVC A,@A+DPTR MOVC A,@A+PC MOVX A,@R0 MOVX A,@R1 MOVX A,@DPTR MOVX @R0,A MOVX @R1,A MOVX @DPTR,A PUSH RAM POP RAM XCH A,R0 XCH A,R1 XCH A,R2 XCH A,R3 XCH A,R4 XCH A,R5 XCH A,R6 XCH A,R7 XCH A,RAM XCH A,@R0 XCH A,@R1 XCHD A,@R0 XCHD A,@R1 ;Bit Instructions: ;----------------- CLR C CLR BITAD SETB C SETB BITAD CPL C CPL BITAD ANL C,BITAD ANL C,/BITAD ORL C,BITAD ORL C,/BITAD MOV C,BITAD MOV BITAD,C; 8. Register Symbols:; -------------------- MOV @R1,A MOV @R1,COUNTREG ;same as: MOV @R1,A MOV @INDEXREG,A ;same as: MOV @R1,A MOV @INDEXREG,COUNTREG ;same as: MOV @R1,A; 9. Predefined Symbols:; ---------------------- ; Special Function Registers: ; --------------------------- MOV A,B MOV R1,ACC MOV A,PSW MOV A,IP MOV A,P3 MOV A,IE MOV A,P2 MOV A,SBUF MOV A,SCON MOV A,P1 MOV A,TH1 MOV A,TH0 MOV A,TL1 MOV A,TL0 MOV A,TMOD MOV A,TCON MOV A,PCON MOV A,DPH MOV A,DPL MOV A,SP MOV A,P0 ;SFR Bit Addresses: ;------------------ MOV C,CY ;PSW MOV C,AC MOV C,F0 MOV C,RS1 MOV C,RS0 MOV C,OV MOV C,P MOV C,PS ;IP MOV C,PT1 MOV C,PX1 MOV C,PT0 MOV C,PX0 MOV C,RD ;P3 MOV C,WR MOV C,T1 MOV C,T0 MOV C,INT1 MOV C,INT0 MOV C,TXD MOV C,RXD MOV C,EA ;IE MOV C,ES MOV C,ET1 MOV C,EX1 MOV C,ET0 MOV C,EX0 MOV C,SM0 ;SCON MOV C,SM1 MOV C,SM2 MOV C,REN MOV C,TB8 MOV C,RB8 MOV C,TI MOV C,RI MOV C,TF1 ;TCON MOV C,TR1 MOV C,TF0 MOV C,TR0 MOV C,IE1 MOV C,IT1 MOV C,IE0 MOV C,IT0 MOV C,P1.0 ;P1 MOV C,P1.1 MOV C,P1.2 MOV C,P1.3 MOV C,P1.4 MOV C,P1.5 MOV C,P1.6 MOV C,P1.7 MOV C,P3.0 ;P3 MOV C,P3.1 MOV C,P3.2 MOV C,P3.3 MOV C,P3.4 MOV C,P3.5 MOV C,P3.6 MOV C,P3.7 ; ROM Addresses: ; -------------- MOV DPTR,#RESET MOV DPTR,#EXTI0 MOV DPTR,#TIMER0 MOV DPTR,#EXTI1 MOV DPTR,#TIMER1 MOV DPTR,#SINT; 10. Conditional Assembly:; -------------------------; The most important meta instructions for conditional assembly are; introduced in this section. The general controls $WARNING and $ERROR,; and the predefined symbols ??ASEM_51 and ??VERSION are also shown here,; because the make sense in conjunction with conditional assembly only.; a.) The IF, IFN, ELSE, and ENDIF meta instructions: IF NOTEQ1 DB 'string 1',0 ELSE IFN EQUAL2 DB 'string 2',0 ELSE DB 'string 3',0 ENDIF ENDIF; b.) The IFDEF and IFNDEF meta instructions: IFDEF GHOST DB 'haunting',0 ELSE DB 'nothing',0 IFNDEF VAMPIRE DB 'boring',0 ELSE DB 'sucking',0 ENDIF ENDIF; c.) The predefined symbols ??ASEM_51 and ??VERSION,; and the general controls $WARNING and $ERROR: IFDEF ??ASEM_51 ;product identification IF ??VERSION < 0130H ;version number ;display a user-defined warning:$WARNING(Warning: ASEM-51 version 1.3 (or later)) required.) ENDIF ELSE ;fire a user-defined error message:$ERROR(Fatal: Assembler is not ASEM-51!) ENDIF; 11. Macro Processing:; ---------------------; Macro processing is by far too complex, to show all possibilities in a; small demo program. So, only a few simple (but typical) constructions; are listed here. Furthermore, some assembler controls and meta; instructions for conditional assembly are introduced in this section,; because they make sense in conjunction with macro processing only.; a.) The MACRO, LOCAL and ENDM meta instructions, macro; parameters, and the macro commentary operator ;; : ;define macro CJEQ: "compare and jump if equal" CJEQ MACRO param1, param2, param3 LOCAL temp CJNE param1, param2, temp ;;continue if not equal JMP param3 ;;jump otherwisetemp: ENDM ;CJEQ macro calls: CJEQ A, CHEETA, HEREHERE: CJEQ @R0, #13, THERE CJEQ R4, #DIFFER, HERE; b.) The REPT meta instruction: ;repeat block: "seven NOPs" REPT 7 NOP ;;short pause ENDM; c.) The EXITM meta instruction, recursive macro calls,; and the macro operators % and & : ;define macro DEFNSYM: "define n symbols" DEFNSYM MACRO symname, count IF count DEFNSYM symname, %count-1 symname&count EQU count ELSE EXITM ;;stop recursion if count=0 ENDIF ENDM; d.) The general controls $SAVE, $GENONLY, and $CONDONLY:$SAVE ;save current $GEN/$COND/$LIST state$GENONLY ;list only macro expansion lines$CONDONLY ;list only true IFxx branches ;DEFNSYM macro calls: DEFNSYM SYMBOL, 5 ;define 5 symbols SYMBOLx DEFNSYM CONST, %DIFFER-7 ;define DIFFER-7 symbols CONSTx; e.) The IFB and ELSEIFB meta instructions, and <...> literal brackets: ;define macro PATCH: "concatenate 3 literals" PATCH MACRO p1, p2, p3 IFB <p1> PATCH 1_, <p2>, <p3> ELSEIFB <p2> PATCH <p1>, _2_, <p3> ELSEIFB <p3> PATCH <p1>, <p2>, _3 ELSE DB '&p1&p2&p3' ENDIF ENDM; f.) The general control $GEN:$GEN ;list macro calls and expansion lines; g.) Omitting macro parameters, and the literal operator ! : ;PATCH macro calls: PATCH one, two, three ;3 literal parameters specified PATCH ,two ;1st and 3rd parameter omitted PATCH one,,three ;2nd parameter omitted PATCH ;all parameters omitted PATCH first, <, , >, last!; ;special characters passed literally; h.) The general control $RESTORE:$RESTORE ;restore old $GEN/$COND/$LIST state; 12. End of Program:; ------------------- END ;end statement ;Only blank and commentary lines are allowed here!
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -