单片机汇编语言中 JMP START在不同位置的作用,求大神解释

ORG 0
START: MOV R2,#8
MOV A,#0FEH
SETB C
LOOP: MOV P1,A
LCALL DELAY
RLC A
DJNZ R2,LOOP
MOV R2,#8
LOOP1: MOV P1,A
LCALL DELAY
RRC A
DJNZ R2,LOOP1
JMP START

DELAY: MOV R5,#20 ;
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
END
**********************************************
ORG 0
START: MOV R2,#8
MOV A,#0FEH
SETB C
LOOP: MOV P1,A
LCALL DELAY
RLC A
DJNZ R2,LOOP
MOV R2,#8
LOOP1: MOV P1,A
LCALL DELAY
RRC A
DJNZ R2,LOOP1
DELAY: MOV R5,#20 ;
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
RET
JMP START

END
***************************************
ORG 0
START: MOV R2,#8
MOV A,#0FEH
SETB C
LOOP: MOV P1,A
LCALL DELAY
RLC A
DJNZ R2,LOOP
MOV R2,#8
LOOP1: MOV P1,A
LCALL DELAY
RRC A
DJNZ R2,LOOP1
DELAY: MOV R5,#20 ;
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1

JMP START
RET
END

JMP START 这是跳转指令,我想你是学习的51单片机的初学者。
它的意思是跳转到标识为“START”位置开始往下执行语句。

你给了三段程序,第一和第二的作用是一样的。先说你程序的意思先,你程序设计是一个流水灯,先左移8次,然后又右移8次。接着重复上面的循环:左移8次,右移8次,左移8次,右移8次。。。
而起到这个作用的就是JMP START这条指令。
而第三个程序呢,说实在的,就是不懂为什么玩玩吧?你把这条指令调到了延时子程序中。这样发光二极管就不会左移了,若是你有发光二极管连接可以看的话。应为当程序执行到
ORG 0
→START: MOV R2,#8
MOV A,#0FEH
SETB C
LOOP: MOV P1,A
→LCALL DELAY (就是这句)。接着它就跳到延时子程序:

→DELAY: MOV R5,#20 ;(就是这句)。
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
→JMP START(执行到这句时候程序就跳到START)
RET

第一个跟第二个的不同是每个循环多执行一个delay子程序,第一个跟第三个的不同是,第三个从第一个LCALL delay;跳到delay子程序,子程序执行完毕就回返回到程序开始START处重新执行,程序当中的一些语句将不会被执行。
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-18
JMP START 这是跳转指令,我想你是学习的51单片机的初学者。
它的意思是跳转到标识为“START”位置开始往下执行语句。

你给了三段程序,第一和第二的作用是一样的。先说你程序的意思先,你程序设计是一个流水灯,先左移8次,然后又右移8次。接着重复上面的循环:左移8次,右移8次,左移8次,右移8次。。。
而起到这个作用的就是JMP START这条指令。
而第三个程序呢,说实在的,就是不懂为什么玩玩吧?你把这条指令调到了延时子程序中。这样发光二极管就不会左移了,若是你有发光二极管连接可以看的话。应为当程序执行到
ORG 0
→START: MOV R2,#8
MOV A,#0FEH
SETB C
LOOP: MOV P1,A
→LCALL DELAY (就是这句)。接着它就跳到延时子程序:

→DELAY: MOV R5,#20 ;(就是这句)。
D1: MOV R6,#20
D2: MOV R7,#248
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D1
→JMP START(执行到这句时候程序就跳到START)
RET

不知道这样说你明白吗?
第2个回答  2011-07-19
第一个是外循环;第二个是跳到程序始端开始执行,也是循环,但不分内外之分;第三个是循环嵌套。
第3个回答  2011-07-18
第一个跟第二个的不同是每个循环多执行一个delay子程序,第一个跟第三个的不同是,第三个从第一个LCALL delay;跳到delay子程序,子程序执行完毕就回返回到程序开始START处重新执行,程序当中的一些语句将不会被执行。
第4个回答  2011-07-20
第2和3个程序,JMP的位置都不对
不能正常工作

单片机汇编语言中 JMP START在不同位置的作用,求大神解释
JMP START 这是跳转指令,我想你是学习的51单片机的初学者。它的意思是跳转到标识为“START”位置开始往下执行语句。你给了三段程序,第一和第二的作用是一样的。先说你程序的意思先,你程序设计是一个流水灯,先左移8次,然后又右移8次。接着重复上面的循环:左移8次,右移8次,左移8次,右移8次。。。而起到...

单片机汇编程序 看不懂了
JMP START ORG 0003H转外部中断 JMP FUWU1 ORG 0013H JMP FUWU2 START: SETB EA SETB EX0 ;开启外部中断0中断 SETB EX1 MOV R1,#OF0H设置初始值 MOV R2,#OF2H MOV R3,#OF3H MOV R4,#OF3H LOOP0: MOV TMOD,#10H设置中断工作方式 MOV TH1,#00H中断计时器复位。清冷 MOV TL1,#00H...

单片机实验中,怎么用汇编比较大小?
单片机实验中,用汇编语言编程比较两个数大小,主要用SUBB减法指令,也可以使用CJNE指令。示例程序如下:;启动入口 ORG 0000H;复位启动 LJMP START;ORG 0100H;;;主控程序 START:MOV R0,#30H MOV X,#0 MOV Y,#0 LOOP:MOV A,@R0 CLR C SUBB A,#111 JNC NEXT CPL C MOV A,@R0 SUBB A,Y...

单片机题目麻烦解释下 1.编程,用循环方式将片内RAM中30H~40H单元全部清 ...
单片机汇编程序写的时候用大写字母似乎更易读。ORG 0000H LJMP START ORG 0030H START: MOV R2,#17;这句的意思是给循环变量R2赋初值为17 MOV R0,#30H;R0是循环时的指针,初始指向30H LP: MOV @R0,#0;给R0所指的那个单元赋值为0,也就是清0 INC R0;指针加一,指向下一个单元 DJNZ R2...

谁能帮我看下这个单片机汇编程序啊。。呜呜
...CLR A LOOP:MOVC A,@A+DPTR MOV P0,A ...执行MOVC指令时,A应该为0;但是,执行MOVC指令后,A就变了;再次执行MOVC指令时,A就不为0,错了。你把LOOP标号,向上移一行,移到CLR A指令前边,就好了。

汇编语言:JMP指令的疑问
指令 jmp near ptr 标号 汇编时用标号处地址减去当前IP(jmp指令的下一条指令的地址)得到一个16位的偏移量(补码表示)作为jmp指令的操作数,执行时将该16位的偏移量加到当前IP中去便是转移的目标地址的偏移量。指令 jmp short 标号 汇编时用标号处地址减去当前IP(jmp指令的下一条指令的地址)得到...

单片机1秒钟定时汇编语言怎么编?
第一种方法:用延时的方法实现 DELAY: MOV R3,#10;延时子程序,延时1秒 D1: MOV R4,#200 D2: MOV R5,#250 D3: DJNZ R5,D3 DJNZ R4,D2 DJNZ R3,D1 RET END 第二种方法:用定时器的方法实现 ———MOV R1,#20 ———DLY: MOV TMOD,#00000001B;延时子程序,设定...

急!急!急!单片机流水灯汇编语言程序
AJMP START ;反复循环 ;延时子程序,12M晶振延时约250毫秒 DELAY: ;大约值:2us*256*256*2=260ms,也可以认为为250ms PUSH PSW ;现场保护指令(有时可以不加)MOV R4,#240 L3: MOV R2 ,#00H L1: MOV R3 ,#00H L2: DJNZ R3 ,L2 ;最内层循环:(256次)2个周期指令(R3减...

单片机汇编,将内RAM 30H-50H里的最小数找出来存到内RAM的6FH单元中...
NEXT: JMP $ ;X EQU 6FH ; END ; 更多追问追答 追问 能麻烦给讲讲呗 追答 ;启动入口 ORG 0000H ;复位启动 LJMP START ; ORG 0100H ;主程序从0100H开始 ; ;主控程序START: MOV R0,#50H ;用R0间接寻址 MOV X,#0FFH ;预先存入一个字节所能装下的最大值LOOP: MOV A,@R0 ;取得一个源...

汇编语言阅读程序题(每一步最好都有解答)
写的是什么呀 都是错误 也不通啊 ENTRY EQ 3 这一条是有问题的 EQ是一个关系运算符 表示相等 即ENTRY与3比较 判断是否相等 如果相等 则为逻辑真 否则为逻辑假 (ENTRY EQ 3)不可以单独使用 应在表达式中使用 呵呵 ...

相似回答