📄 switch.lst
字号:
A51 MACRO ASSEMBLER SWITCH 01/20/2003 09:07:18 PAGE 1
MACRO ASSEMBLER A51 V7.01
OBJECT MODULE PLACED IN switch.OBJ
ASSEMBLER INVOKED BY: F:\KEIL\C51\BIN\A51.EXE switch.asm SET(SMALL) DEBUG EP
LOC OBJ LINE SOURCE
1 ;设有一个键盘共有5个键,其功能分别如下所示
2
3 ;键名 键值 处理该键的子程序标号
4 ;切换 00H SWITCH
5 ;移位 01H SHIFT
6 ;加1 02H INCREASE
7 ;减1 03H DECREASE
8 ;清0 04H CLEAR
9
10 ;这其中键值是由键盘处理程序获得的,关于键盘的处理在后面专门有分析,这里可以理解为当按下某一
个键后,就能在累加器A中获得相应的键值。
11
0000 7402 12 MOV A,#2 ;模拟获得键值,读者可将此值改为0,1,2,3,4后重新汇编再试
0002 13 LOOP:
0002 900008 14 MOV DPTR,#TAB ;TAB是散转表的起始地址
0005 C3 15 CLR C
0006 33 16 RLC A ;这两条指令的用途是将A中值乘2
0007 73 17 JMP @A+DPTR ;散转
18
19
0008 0112 20 TAB: AJMP SWITCH ;散转表
000A 0116 21 AJMP SHIFT ;TAB+2
000C 011A 22 AJMP INCREASE ;TAB+4
000E 011E 23 AJMP DECREASE ;TAB+6
0010 0122 24 AJMP CLEAR ;TAB+8
25
26
27
28
0012 00 29 SWITCH: NOP ;实现切换功能的程序段
0013 020002 30 LJMP LOOP
0016 00 31 SHIFT: NOP ;实现移位功能的程序段
0017 020002 32 LJMP LOOP
001A 00 33 INCREASE:NOP ;实现加1功能的程序段
001B 020002 34 LJMP LOOP
001E 00 35 DECREASE: NOP ;实现减1功能的程序段
001F 020002 36 LJMP LOOP
0022 00 37 CLEAR: NOP ;实现清零功能的程序段
0023 020002 38 LJMP LOOP
39 END
A51 MACRO ASSEMBLER SWITCH 01/20/2003 09:07:18 PAGE 2
SYMBOL TABLE LISTING
------ ----- -------
N A M E T Y P E V A L U E ATTRIBUTES
CLEAR. . . . . . . C ADDR 0022H A
DECREASE . . . . . C ADDR 001EH A
INCREASE . . . . . C ADDR 001AH A
LOOP . . . . . . . C ADDR 0002H A
SHIFT. . . . . . . C ADDR 0016H A
SWITCH . . . . . . C ADDR 0012H A
TAB. . . . . . . . C ADDR 0008H A
REGISTER BANK(S) USED: 0
ASSEMBLY COMPLETE. 0 WARNING(S), 0 ERROR(S)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -