用汇编语言编写一个延时1S的子程序

延时1S的子程序的入口地址为delay1s,在线等!!!速度

; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; Subroutine 延时指定的时钟嘀嗒数
; 入口:
; Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)
Delay1S Proc Near
push dx
push cx
xor ax,ax
int 1ah
mov Times,dx
mov Times[2],cx
Read_Time: xor ax,ax
int 1ah
sub dx,Times
sbb cx,Times[2]
cmp dx,Didas
jb Read_Time
pop cx
pop dx
ret
Times dw 0,0
Delay1S EndP
; -----------------------------------------
Didas equ 18
Start: call Delay1S
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-06-12
是51的汇编么?晶振频率是12MHz的,定时器是1ms,循环1000为1s,使用是查询方式,需要中断方式可以再帮你写,不知道你要是1S精度要求高不高,我没有去精确计算,这个不是非常高!!
delay1s:
mov r1,#1000
del_3:
mov th0,#0FCH
mov tl0,#18H
setb tr0
del_1:
jbc tf0 del_2
jmp del_1
del_2:
djnz r1 del_3
ret

用汇编语言编写一个延时1S的子程序
; Subroutine 延时指定的时钟嘀嗒数 ; 入口:; Didas=时钟嘀嗒数(1秒钟约嘀嗒18.2次,10秒钟嘀嗒182次。若延时不是秒的10数次倍,误差稍微大点)Delay1S Proc Near push dx push cx xor ax,ax int 1ah mov Times,dx mov Times[2],cx Read_Time: xor ax,ax int 1ah sub...

单片机。用汇编语言编程。 设计一软件延时1s的子程序。设晶振频率为12M...
delay1000ms:(HT46R65的单片机)(注意不要开启计时中断允许位)mov a,10000111b (设置频率和记数方式)(上升记数还是下降记数)mov tmr0c,a (tmr0c 计数器的控制寄存器)mov a,low(65536-31250) (设置的频率就是1S上升31250)因此是DELAY1S mov TMR0L,a (计数器的赋予初始值的低...

51单片机用汇编语言设计1S延时子程序,晶振为12MHz。 (麻烦附上详细计算...
void Delay1S(char n){ char i,j;n=n*4;for(;n;n--){ for(i=6;i;i++){ for(j=7;j;j++) \/\/ 一个循环约为1mS ;} } } 看编译后的汇编:C:0x0805 7D01 MOV R5,#0x06;j=1,1时钟 C:0x0807 0D INC R5;j++,1时钟 C:0x0808 ED MOV A,...

利用汇编语言编单片机程序,求大神帮助。。。
CLR P1.3 LCALL YS ;显示延时1秒 SJMP LL ;继续循环显示 YS: MOV R7,#4 ; 单周期1uS ( 晶振为12MHz) 延时1秒子程序DEL1: MOV R6,#123 ; 单周期1uSDEL2: DJNZ R6,DEL2 ; 双周期2uS*123=246uS DJNZ R7,DEL1 ; 双周期(2us+246+...

单片机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;延时子程序,设定...

...请编写汇编语言子程序,其功能分别是延时0.1s和1s 和 1 min。_百度...
实际为0.100005s delay01s:mov r1, #200 loop01s:mov r0, #249 djnz r0,djnz r1, loop01s ret 实际为1.000074s delay1s:mov r0, #10 loop1s:acall delay01s djnz r0, loop1s ret 实际为60.004568s delay1m:mov r0, #60 loop1m:acall delay1s djnz r0, loop1m ret ...

单片机汇编语言延时程序时间问题
D1: MOV R6,#200 ;10*1 D2: MOV R5,#250 ;10*200*1 DJNZ R5,$ ;10*200*250*2 DJNZ R6,D2 ;10*200*2 DJNZ R7,D1 ;10*2 RET ;2 Total=1+10*3+2000*3+2000*250*2+2=1006035,如果晶振为12M的话,约1秒 ...

用8086汇编语言,编写延时子程序
该程序的延时时间,请楼主按以下介绍方法及的资料自行计算:(1)时钟周期 T = 1\/(2.2x10^9) ≈ 0.45 ns ,(2)延时时间 = ∑(数据访问时间+指令执行时间)(3)常用指令执行的时间及各种寻址方式所用时间见下表(点击可显示大图):

51单片机,求用汇编语言编写延时1小时的子程序,要精确到秒级别
共延时时间:3592.9s误差为7.1秒,如果再精确的话,再加一点延时就可以了。DELAY_20S: ;Total=19.960603s MOV R2,# ;1 DLY1:MOV R3,#200 ;1*200 DLY2:MOV R4,#248 ;1**200*200 DJNZ R4,$ ;2**248*200*200 DJNZ R3,DLY2 ;2*200*200 DJNZ R2,DLY1 ;2*...

单片机汇编语言
延时用子程序,加个标号,在需要调用的地方用CALL\/LCALL等调用指令,如下程序 ORG 0000H MOV DPTR,#TAB MOV P0,#0FFH LOP:LOOP0:MOV 20H,#9 MOV R0,#10 LOOP1:MOV A,20H; 9-0 MOVC A,@A+DPTR MOV P0,A DEC 20H CALL DELL;YANSHI DJNZ R0,LOOP1 MOV 20H,#0;0-9 MOV R0,#10 L...

相似回答