Demonstrač nítext k předná š ce Mikroprocesory v přístrojové technice, kat. měření. A51 MACRO ASSEMBLER POKUSNY PROGRAM DATE 10/3/007 PAGE 1 MS-DOS MACRO ASSEMBLER A51 V4.4 OBJECT MODULE PLACED IN DEMC.OBJ ASSEMBLER INVOKED BY: A51 DEMC.A51 LOC OBJ LINE SOURCE 1 ;Test. program pro syntaxi prikazu prekladace A51 firmy KEIL 2 $ debug ; $ DB $NODB implicitne NODEBUG 3 $ DATE (10/3/00) 4 $ OBJECT ; implicitne prekladany soubor s prip. OBJ 5 ;$ OBJECT (C:\DEMC.OBJ),nebo jiny jinak $ NOOBJECT 6 $ ERRORPRINT (DEMC.ERR) ; zkracene EP, 7 $ PAGELENGTH (132) ; delka stranky implicitne 68, 8 ; zkracene $ PL (75) 9 ;$ EJECT ale se hada s PAGEWIDTH, PAGELENGTH 10 $ PAGEWIDTH (120) ; impicitne je 120 znaku 11 $ XREF ; crossreference, zkracene XR,NOXR 12 ; implicitne NOXREF!! 13 $ TITLE (POKUSNY PROGRAM) 14 ; zkracene $ TT (POKUSNY PROGRAM) 15 ; implicitne pouziva TITLE s nazvem zdroj. souboru 16 $ MOD51 ; je implicitne, 17 ;$ NOMOD51 ; zakaze preddefinovane symboly 8051 18 ; a pomoci 19 ;$INCLUDE (REG552.INC) ;se vlozi soubor s definici 20 ; symbolu pro jine klony, napr. Philips 80C552,... 21 ; ZKUSIT v predchozich radcich $MOD51..zmenit 22 ;$ INCLUDE (knih.lib) 23 ; stredniky, aby prekladalo pro 80552 24 ; 25 $ COND ; povoli tisk i casti mezi IF -ELSEIF ENDIF 26 ; ktere nebyly prekladany, $ NOCOND zakaze... 27 ; implicitne je $ COND 28 $ MACRO ; implicitne, povoli zpracovani definici 29 ; opak $ NOMACRO; 30 31 ;CISELNE VYRAZY 32 ;HEX H, h 1234h, 99H, 0A0F0H, 0FFH 33 ;DEC D, d, 1234, 65590D, 20d, 123 34 ;OKTAL. 177O, 7777o, 25O, 123o, 177777O 35 ;BIN B, b 111B, 10011B 36 ;1111$0000$1010$0011B ZNAK $ PRO 37 ;SNAZSI ORIENTACI 38 ; 39 40 ;STRING - RETEZCE 0041 41 sym set A 4142 42 sym set AB 0061 43 sym set a 6162 44 sym set ab
45 ; sym set abc to je CHYBNE 0000 7641 46 TEST: MOV @R0, # A 0002 9430 47 SUBB A, # 0 0004 908000 48 MOV DPTR, #8000h A000 49 EX_RAM EQU 0A000h 0007 90A000 50 MOV DPTR, #EX_RAM 000A 454E5445 51 TABLE: DB ENTER ANY KEY TO CONT, 0 000E 5220414E 0012 59204B45 0016 5920544F 001A 20434F4E 001E 5400 52 53 ; SYMBOLY 54 ; max. 31 ZNAKU DLOUHE 55 ; ZACINA ZNAKEM A az Z, nebo? 56 ; TYPY CODE, DATA, BIT TYPELESS 0099 57 SERIAL_BUFFER DATA SBUF 0020 F599 58 MOV SERIAL_BUFFER, A 59 60 ; NAVESTI 61 ; LABEL1: DS 2 62 ; LABEL2: ; komentar 0022 1B215354 63 NUMBERA: DB 27, 33, STRING,0 0026 52494E47 002A 00 002B E0 64 COPY: MOVX A, @DPTR 65 66 ; REZERVOVANE SYMBOLY 67 ; A, R0 az R7 68 ; DPTR, PC, C, AB, AR0 az AR7 69 ; SYMBOL $ CITAC ADRES v SEGMENTU 70 ; oddelene SEGMENT CODE,DATA, IDATA,BIT, XDATA 71 CSEG 0064 72 ORG 100 ;pomoci ORG se nastavuje $ 73 0064 80FE 74 HALT: SJMP $ 0066 00660068 75 TABLEA: DW $, $, $ 006A 006A 76 77 ; OPERATORY 78 ; ARITMETICKE 79 ; +,- ZNAMENKO +5, FFFF 80 sym set -1 FFFE 81 sym set NOT 1 FFFE 82 sym set NOT 0000$0000$0000$0001B FFFF 83 sym set NOT 1 + 1 FFFF 84 sym set (NOT 1) +1 FFF6 85 SYM SET -0AH 86 ; +,- 2+10-2 scitani, odecitani 87 ; * 1200H*7 NASOBENI 88 ; / deleni 0004 89 SYM SET 17/4 ; CELOCISELNE DELENI 0001 90 sym set 17 MOD 4 ; ZBYTEK PO DELENI 91 ; (,) 0078 92 sym set (2+8)*12 ; ZMENA PORADI VYKONU OPERACI 93 ;
94 ; BINARNI OPERACE 95 ; NOT FFFA 96 sym set NOT 5 ; NEGACE JEDNICKOVY DOPLNEK 97 04D2 98 sym set 1234 0004 99 sym set HIGH 1234; VYSSI BYTE 00D2 100 sym set LOW 1234; NIZSI BYTE 101 ; SHR, SHL POSUN DOPRAVA, DOLEVA 0020 102 sym set 2 SHL 4 0012 103 sym set 0FFH AND 12H; LOGICKA AND OERACE 00B3 104 sym set 12H OR 177 0003 105 sym set 12 XOR 15 106 107 ; RELACNI OPERATORY 108 ; >= / GTE GREATER THAN OR EQUAL TO 109 ; <= / LTE LESS THAN OR EQUAL TO 110 ; <> / NE NOT EQUAL 111 ; = / EQ EQUAL 112 ; < / LT LESS THAN 113 ; > / GT GREATER THAN 114 ; OPERATORY GTE, LTE, NE, EQ, LT, GT 115 ;... JE NUTNO ODDELIT MEZEROU OD OPERANDU 116 ; OPERATORY <>= NENI NUTNO ODDELOVAT MEZEROU 117 ; 118 ; 119 ; PRIORITA OPERATORU 120 ; 1. ( ZAVORKY ) 121 ; 2. NOT, HIGH, LOW 122 ; 3. =, - JAKO ZNAMENKO 123 ; 4. *, /, MOD, ^ 124 ; 5. +, - SCITANI, ODECITANI 125 ; 6. SHR, SHL 126 ; AND, OR, XOR 127 ; >=, <=, =, <, > 128 ; 129 ; NUMERICKE VYRAZY - TYP SEGMENTU 130 ; v tabulce XREF uvedent TYP SYMBOLU 131 ; NUMBER - (CISLO) NEZAVISI NA SEGMENTU 132 ; CSYM ADRESOVY SYMBOL (SEG.) KODOVY 133 ; DSYM ADRESOV SYMBOL DATOVY - INTERNI PAM. 134 ; ISYM IDATA SYMBOL (INTERNI DAT. PAMET) 135 ; XSYM ADRESOVY SYMBOL DATOVY (EXT. PAMET) 136 ; BSYM BITOVY SYMBOL 137 ; 138 ; 1) VYSLEDK UNARNI OPERACE (+,- jako znamenko 139 ; NOT, LOW, HIGH) MAJI STEJNY TYP SEGMENTU JAKO 140 ; OPERAND 141 ; 2) VYSLEDEK VSECH BINARNICH OPERACI 142 ; (MIMO + A -) NEMA SEGMENTOVY TYP 143 ; 3) PRO BINARNI OPERACE + A - POKUD 144 ; MA POUZE!!! JEDEN SEG. TYP PAK MA STJNY TYP 145 ; VYSLEDEK. V OST. PRIPADECH VYSLEDEK NEMA TYP. 146 ; 147 ; OPERACE SE SYMBOLY RUZNYCH TYPU 148 ; CSYM + (DSYM-DSYM) = TYP CODE 149 ; DSYM - DSYM = CISLO (BEZ TYPU) 150 ; CISLO + CISLO = CISLO ( BEZ TYPU)
151 ; CSYM + CISLO = TYP CODE 006C 08484C41 152 MSG: DB LEN, HLASENI,0 0070 53454E49 0074 00 0008 153 LEN EQU $-MSG-1 154 ; 155 156 ; DIREKTIVY ASSEMBLERU, DEFINICE SYMBOLU 157 ; SEGMENT 158 ; EQU 159 ; SET 160 ; DATA 161 ; IDATA 162 ; XDATA 163 ; BIT 164 ; CODE 165 166 ; REZERVACE PAMETI, INICIALIZACE 167 ; DS rezervace v RAM (DATA, XDATA) 168 ; DB VYRAZ [VYRAZ,...] BYTE v pameti CODE 169 CSEG 0075 000141D2 170 DB 0,1, A, LOW (1234D) 171 ; DW VYRAZ [,VYRAZ,..] SLOVA v pameti CODE 172 ; DBIT 173 ; LINKOVANI PROGRAMU 174 ; PUBLIC 175 ; EXTERN 176 ; NAME 177 ; 178 ; RIZENI PREKLADACE VYBER, SEGMENTU 179 ; ORG 180 ; END 181 ; RSEG 182 ; CSEG 183 ; DSEG 184 ; XSEG 185 ; ISEG 186 ; BSEG 187 ; USING 188 0079 00 189 NOP 007A 00 190 NOP 0010 191 MEZERA EQU 16 008B 192 ORG $ +MEZERA 008B 00 193 NOP 194 XSEG AT 8000H 0008 195 PAKET EQU 8 8000 196 VYSL1: DS 4 8004 197 VYSL2: DS PAKET 800C 198 VYSL3: DS 4 199 200 ; 201 BSEG AT 70H 0070 202 AD_MODE: DBIT 1 0071 203 DA_MODE: DBIT 1 204 205 ; PODMINENY PREKLAD
206 CSEG 207 ; TYP_PROC 0-2051, 1-8051, 2-8052 208 $ SET (TYP_PROC = 0); 0 nebo 1, nebo 2 209 $ IF (TYP_PROC = 0) 07FF 210 FLASH SET 7FFH ; 211 $ ELSEIF (TYP_PROC = 1), KONSTUKCE S ; ELSEIF mozna POUZE s $ FLASH SET 0FFFH $ ELSEIF (TYP_PROC = 2) FLASH SET 1FFFH $ ENDIF 217 ; CELY PROGRAM... 07FE 218 ORG 7FEH 07FE E599 219 MOV A, SBUF 0800 00 220 NOP 0801 22 221 POSL_INSTRUKCE: RET 0802 222 KONEC SET $ 223 IF FLASH >= KONEC VESLO_SE SET 1 ELSE 0000 226 VESLO_SE SET 0 227 ENDIF 228 229 $IF (TYP_PROC = 0) 0060 230 STACK SET 60H 0000 231 ORG 0 232 $ENDIF 233 234 $IF (TYP_PROC = 1) STACK SET 60H ORG 0A100H $ENDIF 238 239 $IF (TYP_PROC = 2) STACK SET 80 ORG 0A100H $ENDIF 243 0000 00 244 ZAC: NOP 0001 00 245 NOP 0002 758160 246 MOV SP,# STACK 247 DSEG AT STACK 248 249 END; konec prekladu
XREF SYMBOL TABLE LISTING ---- ------ ----- ------- N A M E T Y P E V A L U E ATTRIBUTES / REFERENCES AD_MODE.... B ADDR 002EH.0 A 202# COPY..... C ADDR 002BH A 64# DA_MODE.... B ADDR 002EH.1 A 203# EX_RAM.... N NUMB A000H A 49# 50 FLASH..... N NUMB 07FFH A 210# 223 HALT..... C ADDR 0064H A 74# KONEC..... C ADDR 0802H A 222# 223 LEN...... N NUMB 0008H A 152 153# MEZERA... N NUMB 0010H A 191# 192 MSG...... C ADDR 006CH A 152# 153 NUMBERA.... C ADDR 0022H A 63# PAKET..... N NUMB 0008H A 195# 197 POSL_INSTRUKCE C ADDR 0801H A 221# SBUF..... D ADDR 0099H A 57 219 SERIAL_BUFFER. D ADDR 0099H A 57# 58 SP...... D ADDR 0081H A 246 STACK..... N NUMB 0060H A 230# 246 247 SYM...... N NUMB 0003H A 41# 42# 43# 44# 80# 81# 82# 83# 84# 85# 89# 90# 92# 96# 98# 99# 100# 102# 103# 104# 105# TABLE..... C ADDR 000AH A 51# TABLEA.... C ADDR 0066H A 75# TEST..... C ADDR 0000H A 46# VESLO_SE... N NUMB 0000H A 226# VYSL1..... X ADDR 8000H A 196# VYSL2..... X ADDR 8004H A 197# VYSL3..... X ADDR 800CH A 198# ZAC...... C ADDR 0000H A 244# REGISTER BANK(S) USED: 0 ASSEMBLY COMPLETE, NO ERRORS FOUND