我正在努力計算裝配中的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]來展示你想要做的事情會使這個問題變得更好。 –