求解释!!!汇编语言:延时程序 需要注意zhidao的一点就是DJNZ指令是2周期的,所以你的时间是循环次数乘以2.DELAY:MOV R7,回#250DEL1:MOV R6,#100DEL2:MOV R5,#10DJNZ:R5,$;2个机器周期DJNZ:R6,DL2DJNZ R7,DL12*10*100*250=500000us=0.5s以上时间只是大概值,没有考答虑其它指令的周期,但影响不大。
求问这段汇编语言的延时程序怎么计算延时时间 采纳答案,数字,算错了吧?应该是 500 多毫秒。51 单片机的指令,执行时间,是一个机器周期或二个机器周期。只有乘除指令,是四个机器周期。机器周期,称为T。正确计算如下:MOV R2,#10;1TL1:MOV R3,#100;1TL2:MOV R4,#250;1TL3:DJNZ R4,L3;2T 2*250=500TDJNZ R3,L2;2T(1+500+2)*100=50300TDJNZ R2,L1;2T(1+50300+2)*10=503030TRET;2T(1+503030+2)=503033T总共执行时间是:503033T。当晶振是 12MHz,T 就是 1us。那么,延时时间就是 503033us,约等于 500 毫秒。
用汇编语言编写一个延时1S的子程序 ;本程序7a64e58685e5aeb931333238656633通过编译,运行正确Code SegmentAssume CS:Code,DS:CodeSubroutine 延时指定的时钟嘀嗒数入口:Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)Delay1S Proc Nearpush dxpush cxxor ax,axint 1ahmov Times,dxmov Times[2],cxRead_Time:xor ax,axint 1ahsub dx,Timessbb cx,Times[2]cmp dx,Didasjb Read_Timepop cxpop dxretTimes dw 0,0Delay1S EndPDidas equ 18Start:call Delay1SExit_Proc:mov ah,4ch;结束程序int 21hCode ENDSEND Start;编译到此结束