8086下求汇编语言延时3秒的代码

2024-11-21 23:23:22
推荐回答(2个)
回答1:

MOV AX,5FFFH ;可修改0000~0FFFFH之内 越大延时越高
REP2:
MOV CX,5FFFH
REP10MS:
LOOP REP10MS
DEC AX ;AX-1->AX
CMP AX,0H ;比较AX和0的大小
JNE REP2 ;AX不等于0则跳转到 REP2

就是机器没执行一条指令要170ns,数字仅供参考
让循环重复执行5FFF*5FFF次,达到秒级 具体的要自己调试

回答2:

延迟的方法很多,定时/计数更方便,更准确。软件延时周期(多个嵌套线)。的基础上的时间的长度来确定的周期数,是精确的。时间计算参考晶振频率的机器来计算每个指令的运行时间(乘以每个指令的运行时间的周期数的指令的总运行时间),所有的指令的运行时间和延迟时间。

例如:设置晶振频率为12MHz,每一个机器周期为1us
513us的延时程序的
DL513:MOV R7,#0FFH;的1uS
DJNZ R7 ,$ 2微秒* 255 = 510us
RET; 2us的
延迟时间1 +510 +2 = 513us

较长的延迟时间可用于多种循环(四重循环,例如),如:

KKKK0:MOV R2,#XX的1uS
KKKK1:MOV R3,#LL;为1us * XX
KKKK2:MOV R4,# NN;为1us * XX * LL
KKKK3:MOV R5,#MM;为1us * XX * LL * NN
DJNZ R5,$; 2us的* XX * LL * NN * MM
DJNZ R4 KKKK3; 2us的* XX * LL * NN
DJNZ R3 KKKK2; 2us的* XX * LL
DJNZ R2,KKKK1; 2us的* XX

RET; 2us的
>延迟时间1us +1 * XX +1我们* XX * LL +1我们* XX * LL * NN +2我们* XX * LL * NN * MM +2我们* XX * LL * NN +2 * XX * LL +2我们* XX +2我们
正确地确定了四个周期,NN XX,LL,MM将能获得准确的延迟时间。