求解释-求大神帮看看这段汇编代码

问题描述

求大神帮看看这段汇编代码

学校课程设计,这段是步进电机的控制代码,用键盘输入,在六位LED七段数码显示管上显示,求大神把下面代码加上注释,实在不行就帮忙看下键盘显示那部分是怎么回事,有重谢。

ORG 0A30H ;?
MONIT: MOV SP,#50H
MOV 7EH,#00H
MOV 7DH,#02H
MOV R0,#7CH
MOV A,#08H
MOV R4,#04H
MONIT1: MOV @R0,A
DEC R0
DJNZ R4,MONIT1
MOV A,#7EH
MOV DPTR,#1FFFH ;DISPFLAG
MOVX @DPTR,A
MOV 76H,#00H
MOV 77H,#00H
KEYDISP0:LCALL KEY
JC DATAKEY
AJMP MONIT2
DATAKEY:LCALL DATAKEY1
DB 79H,7EH
SJMP KEYDISP0

MONIT2: CJNE A,#16H,KEYDISP0
LCALL DISP
MOV A,7AH
ANL A,#0FH
SWAP A
ADD A,79H
MOV R6,A
MOV A,7CH
ANL A,#0FH
SWAP A
ADD A,7BH
MOV R7,A
MOV A,7EH
CJNE A,#00H,MONIT4
MONIT3: MOV P1,#03H
LCALL DELAY0
LCALL MONIT5
MOV P1,#06H
LCALL DELAY0
LCALL MONIT5
MOV P1,#0CH
LCALL DELAY0
LCALL MONIT5
MOV P1,#09H
LCALL DELAY0
LCALL MONIT5
SJMP MONIT3
MONIT4: MOV P1,#09H
LCALL DELAY0
LCALL MONIT5
MOV P1,#0CH
LCALL DELAY0
LCALL MONIT5
MOV P1,#06H
LCALL DELAY0
LCALL MONIT5
MOV P1,#03H
LCALL DELAY0
LCALL MONIT5
SJMP MONIT4
MONIT5: DEC R6
CJNE R6,#0FFH,MONIT6
DEC R7
CJNE R7,#0FFH,MONIT6
LJMP MONIT
MONIT6: LCALL MONIT7
RET

MONIT7: MOV R0,#79H
MOV A,R6
LCALL MONIT8
MOV A,R7
LCALL MONIT8
LCALL DISP
RET
MONIT8: MOV R1,A
ACALL MONIT9
MOV A,R1
SWAP A
MONIT9: ANL A,#0FH
MOV @R0,A
INC R0
RET
DELAY0: MOV R0,#7DH
MOV A,@R0
SWAP A
MOV R4,A
DELAY1: MOV R5,#80H
DELAY2: DJNZ R5,DELAY2
LCALL DISP
DJNZ R4,DELAY1 ;***
RET

DATAKEY1:MOV R4,A
MOV DPTR,#1FFFH
MOVX A,@DPTR
MOV R1,A
MOV A,R4
MOV @R1,A
CLR A
POP 83H
POP 82H
MOVC A,@A+DPTR
INC DPTR
CJNE A,01H,DATAKEY3
DEC R1
CLR A
MOVC A,@A+DPTR
DATAKEY2:PUSH 82H
PUSH 83H
MOV DPTR,#1FFFH
MOVX @DPTR,A
POP 83H
POP 82H
INC DPTR
PUSH 82H
PUSH 83H
RET
DATAKEY3:DEC R1
MOV A,R1
SJMP DATAKEY2

KEY0: MOV R6,#20H
MOV DPTR,#1FFFH
MOVX A,@DPTR
MOV R0,A
MOV A,@R0
MOV R7,A
MOV A,#10H
MOV @R0,A
KEY3: LCALL KEYDISP
JNB 0E5H,KEY2
DJNZ R6,KEY3
MOV DPTR,#1FFFH ;***
MOVX A,@DPTR
MOV R0,A ;***
MOV A,R7
MOV @R0,A
KEY: MOV R6,#50H
KEY1: LCALL KEYDISP
JNB 0E5H,KEY2 ;***
DJNZ R6,KEY1
SJMP KEY0
KEY2: MOV R6,A
MOV A,R7
MOV @R0,A
MOV A,R6 ;A=KEYDATA
KEYEND: RET

KEYDISP:LCALL DISP
LCALL KEYSM
MOV R4,A ;KEYDATA
MOV R1,#76H ;DATASAME TIME
MOV A,@R1
MOV R2,A
INC R1
MOV A,@R1
MOV R3,A ;LAST KEYDATA
XRL A,R4
;TWO TIME KEYDATA
MOV R3,04H ;NEW KEYDATA---R3
MOV R4,02H ;TIME---R4
JZ KEYDISP1
MOV R2,#88H
MOV R4,#88H
KEYDISP1:DEC R4
MOV A,R4
XRL A,#82H
JZ KEYDISP2
MOV A,R4 ;R4=TIME
XRL A,#0EH
JZ KEYDISP2
MOV A,R4
ORL A,R4
JZ KEYDISP3
MOV R4,#20H ;R4=20H
DEC R2
LJMP KEYDISP5
KEYDISP3:MOV R4,#0FH
KEYDISP2:MOV R2,04H
MOV R4,03H
KEYDISP5:MOV R1,#76H
MOV A,R2
MOV @R1,A
INC R1
MOV A,R3
MOV @R1,A
MOV A,R4 ;****
CJNE R3,#10H,KEYDISP4
KEYDISP4:RET

DISP: SETB 0D4H
MOV R1,#7EH
MOV R2,#20H
MOV R3,#00H
DISP1: MOV DPTR,#0FF21H
MOV A,R2
MOVX @DPTR,A
MOV DPTR,#DATA1
MOV A,@R1
MOVC A,@A+DPTR
MOV DPTR,#0FF22H
MOVX @DPTR,A
DISP2: DJNZ R3,DISP2
DEC R1
CLR C
MOV A,R2
RRC A
MOV R2,A
JNZ DISP1
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A
CLR 0D4H
RET
DATA1: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H
DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,89H,0DEH

KEYSM: SETB 0D4H
MOV A,#0FFH
MOV DPTR,#0FF22H
MOVX @DPTR,A ;OFF DISP
KEYSM0: MOV R2,#0FEH
MOV R3,#08H
MOV R0,#00H
KEYSM1: MOV A,R2
MOV DPTR,#0FF21H
MOVX @DPTR,A
NOP
RL A
MOV R2,A
MOV DPTR,#0FF23H
MOVX A,@DPTR
CPL A
NOP
NOP
NOP
ANL A,#0FH
JNZ KEYSM2
INC R0 ;NOKEY
DJNZ R3,KEYSM1
SJMP KEYSM10
KEYSM2: CPL A ;YKEY
JB 0E0H,KEYSM3
MOV A,#00H
SJMP KEYSM7
KEYSM3: JB 0E1H,KEYSM4
MOV A,#08H
SJMP KEYSM7
KEYSM4: JB 0E2H,KEYSM5
MOV A,#10H
SJMP KEYSM7
KEYSM5: JB 0E3H,KEYSM10
MOV A,#18H
KEYSM7: ADD A,R0
CLR 0D4H
CJNE A,#10H,KEYSM9
KEYSM9: JNC KEYSM10
MOV DPTR,#DATA2
MOVC A,@A+DPTR
KEYSM10:RET
DATA2: DB 07H,04H,08H,05H,09H,06H,0AH,0BH
DB 01H,00H,02H,0FH,03H,0EH,0CH,0DH
END

时间: 2024-10-31 21:41:43

求解释-求大神帮看看这段汇编代码的相关文章

strcpy-新人求好心好心大神帮帮忙 Visual C遇到char溢出问题

问题描述 新人求好心好心大神帮帮忙 Visual C遇到char溢出问题 我遇到一个好纠结的问题,一直不知道原因在哪,蛋都碎了: 主工程: char Msg[1024]; check(Msg);//dll Addstring(Msg): DLL: int check(*msg) { cstring buff=""; strcpy(msg,""): buff.format("xxxxxx%d,%d",int1,int2); strcat(msg,&

java求哪位大神帮看看,分割可以,粘合不行!

问题描述 java求哪位大神帮看看,分割可以,粘合不行! import java.util.*;import java.io.*;class SplitDemo { public static void main(String[] args) throws IOException { //File file=new File(""D:我想念你.mp3""); File dir=new File(""D:splitfiles""

新手求解答一下-新手求解答各位大神帮帮忙

问题描述 新手求解答各位大神帮帮忙 是这样的,我昨天刚刚安装了一个ocrale?11g?,但是我怎么登陆都登不上去,用sys?as?sysdba显示的是权限不足,用scott显示账户被锁,用internal显示不是有效的dba连接,我用的是win10,新手小白我真的不知道怎么办了QAQ 解决方案 记得原来登录是用的scott,密码是tiger,你这种问题没遇到过...抱歉

printf-c语言求最小公倍数 求大神帮我理解下这个代码

问题描述 c语言求最小公倍数 求大神帮我理解下这个代码 #includeint main(){? ?int mnik=1;? ?scanf(""%d %d""&m&n);? ?for(i=1;i<=m;i++)? ?{? ? ? ?if(m%i==0 && n%i==0)? ? ? ?{? ? ? ? ? ?k*=i;? ? ? ? ? ?m/=i;? ? ? ? ? ?n/=i;? ? ? ?}? ? ? ?if(m==1 |

图片-急求,各位大神帮帮忙,代码能在MYeclipse中运行就好

问题描述 急求,各位大神帮帮忙,代码能在MYeclipse中运行就好 30C 解决方案 作业布置好了,那你就赶快答呗.1块5毛钱找人帮你写程序估计有点困难.姐姐买个茶鸡蛋都要1块5啦. 解决方案二: 我要点积分,楼主的分能给我一些么?下载不了 解决方案三: 谁帮你就是害你,养成这样的习惯,以后还怎么混啊 解决方案四: 可以用jsp和数据库开发,查下手册. 解决方案五: 这分分钟的事情.在学校要好好学习. 解决方案六: 还是没有提具体要求 解决方案七: 都讲得这么明显了,你可以根据ASCII去查看

jfinal 过滤器-求JFinal项目大神帮一把

问题描述 求JFinal项目大神帮一把 向后台传的已经传过去了,但就是报了这个错误,404 Action Not Found:/user/auth.但我整个程序都没有auth这个方法啊!连这4个字母都没有...可能错在哪里? 解决方案 行了,自己答了吧. 说出来丢人. Tomcat之前运行过其他的程序,然后... 你只要Clean一下Tomcat再重启程序就好了... 如果你用了集群或者druid的话,还是重启下电脑吧 浏览器是不是缓存了也要注意 就酱紫

求大神帮看一段代码不怎么理解

问题描述 是ADO.NET这一块的相关代码了.程序是声名一个配置文件.然后在程序中调用它.最后显示数据库中的相关数据.虽然我看代码也知道运行的结果但不知道这是什么样一个十字路口.stringdp=ConfigurationManager.AppSettings["provider"];stringcnStr=ConfigurationManager.AppSettings["cnStr"];这两段代码也是以前没见过的,但是看着不难理解应该就是提取配件文件中的值.其中

求大神帮我写一下java代码

问题描述 java1.产生一个随机验证码,其格式是一个数字和一个字母一个数字一个字母例如2q3r2.给定以下字符串:李四:67|张三:88|王五:76要求拆分结果如下:李四-->67张三-->88王五-->76 解决方案 解决方案二:产生随机数可以用Random的nextInt(intn).产生随机字母:你可以先定义26个字母组成的字符数组.然后用Random的nextInt(25)产生字母下标,这样就变相产生了随机字母.字符串拆分参考String的split(Stringregex)方

java-大神帮看下我的代码哪里错了?

问题描述 大神帮看下我的代码哪里错了? 题目是编写程序,读入未指定个数的整数,判断读入的正数和负数分别有多少个,然后计算这些输入值的总和及其平均值(不对0计数).当输入为0时,表明程序结束.将平均值以浮点数显示. import java.util.Scanner; public class TextXXXXX { public static void main (String[] args){ Scanner input = new Scanner(System.in); int count1