Demonstrač nítext k předná š ce „ Mikroprocesory v přístrojové technice“, kat. měření.
A51 MACRO ASSEMBLER PAGE 1
POKUSNY PROGRAM
MS-DOS MACRO ASSEMBLER A51 V4.4 OBJECT MODULE PLACED IN DEMC.OBJ ASSEMBLER INVOKED BY: A51 DEMC.A51 LOC OBJ LINE SOURCE 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 0041 4142 0061 6162
;Test. program pro syntaxi prikazu prekladace A51 firmy KEIL $ debug ; $ DB $NODB implicitne NODEBUG $ DATE (10/3/00) $ OBJECT ; implicitne prekladany soubor s prip. OBJ ;$ OBJECT (C:\DEMC.OBJ),nebo jiny jinak $ NOOBJECT $ ERRORPRINT (DEMC.ERR) ; zkracene EP, $ PAGELENGTH (132) ; delka stranky implicitne 68, ; zkracene $ PL (75) ;$ EJECT ale se hada s PAGEWIDTH, PAGELENGTH $ PAGEWIDTH (120) ; impicitne je 120 znaku $ XREF ; crossreference, zkracene XR,NOXR ; implicitne NOXREF !! $ TITLE (POKUSNY PROGRAM) ; zkracene $ TT (POKUSNY PROGRAM) ; implicitne pouziva TITLE s nazvem zdroj. souboru $ MOD51 ; je implicitne, ;$ NOMOD51 ; zakaze preddefinovane symboly 8051 ; a pomoci ;$INCLUDE (REG552.INC) ;se vlozi soubor s definici ; symbolu pro jine klony, napr. Philips 80C552 ,... ; ZKUSIT v predchozich radcich $MOD51 ..zmenit ;$ INCLUDE (knih.lib) ; stredniky, aby prekladalo pro 80552 ; $ COND ; povoli tisk i casti mezi IF -ELSEIF ENDIF ; ktere nebyly prekladany, $ NOCOND zakaze ... ; implicitne je $ COND $ MACRO ; implicitne, povoli zpracovani definici ; opak $ NOMACRO; ;CISELNE VYRAZY ;HEX H, h 1234h , 99H, 0A0F0H, 0FFH ;DEC D, d , 1234, 65590D, 20d, 123 ;OKTAL. 177O, 7777o, 25O, 123o, 177777O ;BIN B, b 111B, 10011B ;1111$0000$1010$0011B ZNAK $ PRO ;SNAZSI ORIENTACI ; ;STRING - RETEZCE 41 sym set ’A’ 42 sym set ’AB’ 43 sym set’a’ 44 sym set ’ab’
DATE 10/3/007
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 ;
FFFA 04D2 0004 00D2 0020 0012 00B3 0003
94 ; BINARNI OPERACE 95 ; NOT 96 sym set NOT 5 ; NEGACE JEDNICKOVY DOPLNEK 97 98 sym set 1234 99 sym set HIGH 1234; VYSSI BYTE 100 sym set LOW 1234; NIZSI BYTE 101 ; SHR, SHL POSUN DOPRAVA, DOLEVA 102 sym set 2 SHL 4 103 sym set 0FFH AND 12H; LOGICKA AND OERACE 104 sym set 12H OR 177 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 006C 08484C41 0070 53454E49 0074 00 0008 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 0075 000141D2 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 0079 00 189 007A 00 190 0010 191 008B 192 008B 00 193 194 0008 195 8000 196 8004 197 800C 198 199 200 201 0070 202 0071 203 204 205
; CSYM + CISLO = TYP CODE 152 MSG: DB LEN,’HLASENI’,0
LEN ;
EQU $-MSG-1
; DIREKTIVY ASSEMBLERU, DEFINICE SYMBOLU ; SEGMENT ; EQU ; SET ; DATA ; IDATA ; XDATA ; BIT ; CODE ; REZERVACE PAMETI, INICIALIZACE ; DS rezervace v RAM (DATA, XDATA) ; DB VYRAZ [VYRAZ,...] BYTE v pameti CODE CSEG 170 DB 0,1,’A’, LOW (1234D) ; DW VYRAZ [,VYRAZ,..] SLOVA v pameti CODE ; DBIT ; LINKOVANI PROGRAMU ; PUBLIC ; EXTERN ; NAME ; ; RIZENI PREKLADACE VYBER, SEGMENTU ; ORG ; END ; RSEG ; CSEG ; DSEG ; XSEG ; ISEG ; BSEG ; USING NOP NOP MEZERA EQU 16 ORG $ +MEZERA NOP XSEG AT 8000H PAKET EQU 8 VYSL1: DS 4 VYSL2: DS PAKET VYSL3: DS 4 ; BSEG AT 70H AD_MODE: DBIT 1 DA_MODE: DBIT 1 ; PODMINENY PREKLAD
206 207 208 209 210 211
CSEG ; TYP_PROC 0 - 2051, 1 -8051, 2 - 8052 $ SET (TYP_PROC = 0); 0 nebo 1, nebo 2 $ IF (TYP_PROC = 0) 07FF FLASH SET 7FFH ; $ 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 0001 00 0002 758160
244 245 246 247 248 249
ZAC: NOP NOP MOV SP,# STACK DSEG AT STACK END; konec prekladu
XREF SYMBOL TABLE LISTING ---- ------ ----- ------NAME 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