我正在努力计算装配中的3个循环。
第一个循环应该工作10秒,然后跳到第二个循环中执行2秒。第三是要再工作10秒钟。如何控制程序集中的延迟循环
主要想法是建立一个交通灯。连接到并行端口的每个LED应该使用TASM打开不同的时间段。
红色:10秒。
红&橙色:2秒
绿色:10秒
然后回到红了起来..等等
任何帮助吗? 我尝试使用INT 21h
,函数2Ch
来定时每个循环。
我的老师告诉我这样做会很好。 但是,当我尝试执行代码时,没有任何LED亮起。
我的代码:
.model small
.stack 100
.code
Loop_time :
mov ah,2ch
int 21h
mov ax,003ch
mul cl
mov ch,0000h
add bx,cx
mov dl,dh
mov dh,0
add bx,dx
push bx
loop_red :
mov ah,2ch
int 21h
mov ax,003ch
mul cl
mov ch,0000h
add ax,cx
mov dl,dh
mov dh,0
add ax,dx
add ax,0ah
pop bx
cmp ax,bx
jg loop_redorange
mov DX, 378h
mov AL, 1
out DX,AL
loop_redorange:
mov ah,2ch
int 21h
mov ax,003ch
mul cl
mov ch,0000h
add ax,cx
mov dl,dh
mov dh,0
add ax,dx
add ax,0ch
pop bx
cmp ax,bx
jg loop_green
mov DX, 378h
mov AL,3
out DX,AL
loop_green :
mov ah,2ch
int 21h
mov ax,003ch
mul cl
mov ch,0000h
add ax,cx
mov dl,dh
mov dh,0
add ax,dx
add ax,20h
pop bx
cmp ax,bx
jg loop_red
mov DX, 378h
mov AL, 4
out DX,AL
mov ah,4ch
int 21h
end
所以你真正想要的是一个延迟循环或等价物,而不是单个指令或测量性能的计时。 –
是的!正好。有什么帮助吗?我的代码没有错误,但没有工作大声笑! –
我们无法帮助您处理您未发布的代码。一个[mcve]来展示你想要做的事情会使这个问题变得更好。 –