1樓:匿名使用者
8086組合語言利用時鐘中斷精確些的延時的精度只能達到1/18.2秒。比這個還要高的要求只能利版用指令執行的時鐘權週期數來設計了,這樣編制的延時程式和cpu的頻率緊密相關,要編制通用些的,只能在程式中先進行檢測,依據檢測結果自動調整延時程式中的引數。
2樓:匿名使用者
delay:
mov r2,#3
djnz r2,$
nopret
我想請教一下有關組合語言延時子程式的問題?下面的子程式有點看不懂,請大家幫忙解釋一下,謝謝!
3樓:匿名使用者
這個**其實還是很清楚明瞭的。
dely1: push ax ;延時子程式,這裡push ax 其實可以不要的,因為ax沒有做任何改動
push cx ; 因為使用了cx來計數,所以先儲存cx進堆疊
mov cx,30h ; 迴圈30h也就是48次
dly1: call dely2 ; 在次呼叫一個延時子程式
loop dly1 ; 迴圈,48次,不到次數則繼續迴圈
pop cx ; 恢復被保護的原來cx的值
pop ax ; 恢復被保護的原來ax的值
ret ; 過程返回
dely2: push cx ; 內部呼叫的過程,也需要把cx當前的值保護進堆疊
mov cx,8000h ; 迴圈8000h也就是32768次
loop $ ; $ 表示當前地址,也就是自己的地址,32768次迴圈不到則原地踏步
pop cx ; 恢復被保護的cx的值
ret ; 過程返回
組合語言中的問題求高手解,組合語言中的一個問題求高手解
mov ax,a cmp ax,b bnz l 執行else mov bx,0 mov d,ax jmp ll l ll if的下一條語句復 bnz 標號制 若上一條指令執行的結果非零,就跳到標號執行他是判斷flag暫存器的zf位,若結果不為0,則 跳轉到標號處 組合語言程式的一道題。求高手解答 你...
組合語言呼叫子程式地址入棧出棧情況
子程式,應該稱為過程。定義過程的時候,有 遠 近 的區別。呼叫遠過程,就是段地址和偏移地址,都要入棧。組合語言中子程式呼叫需要哪些暫存器進棧 段內呼叫至少有ip,段間呼叫還有cs 1 一個包宣告抄 package statement,可選 襲 bai2 任意數量引入du語句zhi import st...
組合語言中ptr的作用是什麼,組合語言中CMP的作用是什麼?
ptr應該就是pointer 說明地址指標型別。當兩個運算元型別均不明確時,必須用byte ptr 位元組屬性 或word ptr 字屬性 將一個儲存器運算元定義為位元組或字型別。如 mov byte ptr si oah 指明 si 為位元組型別 在沒有暫存器名存在的情況下,用操作符 x ptr ...