📄 adzq.lst
字号:
A51 MACRO ASSEMBLER ADZQ 30/11/03 16:24:19 PAGE 1
DOS MACRO ASSEMBLER A51 X4.86
OBJECT MODULE PLACED IN ADZQ.O
ASSEMBLER INVOKED BY: C:\OMF51\BIN\A51.EXE C:\HKCX\51ASM\ADZQ.ASM DB SB XR RB(0) PR(ADZQ.LST) OJ(ADZQ.O)
LOC OBJ LINE SOURCE
1 ; “验证式” 实验六 电子琴
2
E101 3 OUTBIT equ 0e101h
E103 4 IN equ 0e103h
5
0000 6 Pulse equ 0
0050 7 PulseCNT equ 50h
0051 8 ToneHigh equ 51h
0052 9 ToneLow equ 52h
10
00B0 11 Speaker equ 0B0H
12
0000 020090 13 ljmp Start
14
000B 15 org 000bh
000B 16 Timer0Int:
000B C0D0 17 push PSW
000D C28C 18 clr TR0
000F 85518C 19 mov TH0, ToneHigh
0012 85528A 20 mov TL0, ToneLow
0015 D28C 21 setb TR0
0017 A200 22 mov c, Pulse
0019 92B0 23 mov Speaker, c
001B B200 24 cpl Pulse
001D 1550 25 dec PulseCNT
001F D0D0 26 pop PSW
0021 32 27 reti
28
0022 29 ToneTable:
0022 FC42 30 dw 64578, 64686, 64778, 64821, 64898, 64968, 65029
0024 FCAE
0026 FD0A
0028 FD35
002A FD82
002C FDC8
002E FE05
31
0030 32 TestKey:
0030 90E101 33 mov dptr, #OUTBIT
0033 7400 34 mov a, #0
0035 F0 35 movx @dptr, a
0036 90E103 36 mov dptr, #IN
0039 E0 37 movx a, @dptr
003A F4 38 cpl a
003B 540F 39 anl a, #0fh
40
003D 22 41 ret
42
003E 43 KeyTable:
003E 00010407 44 db 00h, 01h, 04h, 07h
0042 0F020508 45 db 0fh, 02h, 05h, 08h
0046 0E030609 46 db 0eh, 03h, 06h, 09h
004A 0D0C0B0A 47 db 0dh, 0ch, 0bh, 0ah
004E 10101010 48 db 10H,10H,10H,10H,10
0052 0A
0053 10101010 49 db 10H,10H,10H,10H,10H
0057 10
50
A51 MACRO ASSEMBLER ADZQ 30/11/03 16:24:19 PAGE 2
0058 51 GetKey:
0058 90E101 52 mov dptr, #OUTBIT
005B 8583A0 53 mov P2, dph
54 ; mov r0, #Low(IN)
005E 7803 55 MOV R0,#03H;
0060 7920 56 mov r1, #00100000b
0062 7A06 57 mov r2, #6
0064 58 KLoop:
0064 E9 59 mov a, r1
0065 F4 60 cpl a
0066 F0 61 movx @dptr, a
0067 F4 62 cpl a
0068 03 63 rr a
0069 F9 64 mov r1, a
65
006A E2 66 movx a, @r0
006B F4 67 cpl a
006C 540F 68 anl a, #0fh
006E 7006 69 jnz Goon1
70
0070 DAF2 71 djnz r2, KLoop
72
0072 7AFF 73 mov r2, #0ffh
0074 800F 74 sjmp Exit
0076 75 Goon1:
0076 F9 76 mov r1, a
77
0077 EA 78 mov a, r2
0078 14 79 dec a
0079 23 80 rl a
007A 23 81 rl a
007B FA 82 mov r2, a ; r2 = (r2-1)*4
83
007C E9 84 mov a, r1
007D 7904 85 mov r1, #4
007F 86 LoopC:
007F 13 87 rrc a
0080 4003 88 jc Exit
0082 0A 89 inc r2
0083 D9FA 90 djnz r1, LoopC
0085 91 Exit:
0085 90E101 92 mov dptr, #OUTBIT
0088 E4 93 clr a
0089 F0 94 movx @dptr, a
95
008A EA 96 mov a, r2
008B 90003E 97 mov dptr, #KeyTable
008E 93 98 movc a, @a+dptr
008F 22 99 ret
100
0090 101 Start:
0090 758170 102 mov sp, #70h
0093 90E100 103 mov dptr,#0e100h
0096 7403 104 mov a,#03h
0098 F0 105 movx @dptr,a
0099 758901 106 mov TMOD, #01 ; Timer
009C 75A882 107 mov IE, #82h ; EA=1, IT0 = 1
009F 108 MLoop:
009F 1130 109 call TestKey
00A1 60FC 110 jz MLoop
111
00A3 1158 112 call GetKey
00A5 F5F0 113 mov b, a
00A7 60F6 114 jz MLoop ; = 0, < 1
115 ; anl a, #!7
00A9 54F8 116 ANL A,#0F8H
A51 MACRO ASSEMBLER ADZQ 30/11/03 16:24:19 PAGE 3
00AB 70F2 117 jnz MLoop ; > 7
118
00AD 15F0 119 dec b
00AF E5F0 120 mov a, b
00B1 23 121 rl a ; a = a*2
122
00B2 F5F0 123 mov b, a
00B4 900022 124 mov dptr, #ToneTable
00B7 93 125 movc a, @a+dptr
00B8 F551 126 mov ToneHigh, a
00BA F58C 127 mov TH0, a
128
00BC E5F0 129 mov a, b
00BE 04 130 inc a
00BF 93 131 movc a, @a+dptr
00C0 F552 132 mov ToneLow, a
00C2 F58A 133 mov TL0, a
134
00C4 D28C 135 setb TR0
00C6 755064 136 mov PulseCNT, #100
00C9 137 Wait:
00C9 E550 138 mov a,PulseCNT
00CB 70FC 139 jnz Wait
00CD C28C 140 clr TR0
00CF 02009F 141 ljmp MLoop
142
143 end
A51 MACRO ASSEMBLER ADZQ 30/11/03 16:24:19 PAGE 4
XREF SYMBOL TABLE LISTING
---- ------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES / REFERENCES
B. . . . . . . . . D ADDR 00F0H A 113 119 120 123 129
DPH. . . . . . . . D ADDR 0083H A 53
EXIT . . . . . . . C ADDR 0085H A 74 88 91#
GETKEY . . . . . . C ADDR 0058H A 51# 112
GOON1. . . . . . . C ADDR 0076H A 69 75#
IE . . . . . . . . D ADDR 00A8H A 107
IN . . . . . . . . N NUMB E103H A 4# 36
KEYTABLE . . . . . C ADDR 003EH A 43# 97
KLOOP. . . . . . . C ADDR 0064H A 58# 71
LOOPC. . . . . . . C ADDR 007FH A 86# 90
MLOOP. . . . . . . C ADDR 009FH A 108# 110 114 117 141
OUTBIT . . . . . . N NUMB E101H A 3# 33 52 92
P2 . . . . . . . . D ADDR 00A0H A 53
PSW. . . . . . . . D ADDR 00D0H A 17 26
PULSE. . . . . . . N NUMB 0000H A 6# 22 24
PULSECNT . . . . . N NUMB 0050H A 7# 25 136 138
SP . . . . . . . . D ADDR 0081H A 102
SPEAKER. . . . . . N NUMB 00B0H A 11# 23
START. . . . . . . C ADDR 0090H A 13 101#
TESTKEY. . . . . . C ADDR 0030H A 32# 109
TH0. . . . . . . . D ADDR 008CH A 19 127
TIMER0INT. . . . . C ADDR 000BH A 16#
TL0. . . . . . . . D ADDR 008AH A 20 133
TMOD . . . . . . . D ADDR 0089H A 106
TONEHIGH . . . . . N NUMB 0051H A 8# 19 126
TONELOW. . . . . . N NUMB 0052H A 9# 20 132
TONETABLE. . . . . C ADDR 0022H A 29# 124
TR0. . . . . . . . B ADDR 0088H.4 A 18 21 135 140
WAIT . . . . . . . C ADDR 00C9H A 137# 139
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -