組合語言中延時子程式的問題,我想請教一下有關組合語言延時子程式的問題下面的子程式有點看不懂,請大家幫忙解釋一下,謝謝

2021-03-03 22:43:15 字數 972 閱讀 4171

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 ...