組合語言編寫子程式時要將那些暫存器中的內容保護

時間 2021-08-14 23:00:26

1樓:匿名使用者

組合語言寫子程式時,一般需要將該子程式中用到的暫存器加以保護,比如最常用到的累加器a。舉例說明:

getdat:

push acc ;壓棧保護累加器,因為子程式中會改變其值push dpl ;壓棧保護資料指標,子程式中會改變資料指標push dph

mov dptr,#1000h

movx a,@dptr

mov 30h,a

inc dptr

movx a,@dptr

mov 31h,a

pop dph ;後進先出,彈出資料指標pop dpl

pop acc ;恢復累加器a的值ret

2樓:

一般是兩種暫存器需保護 一是在子程式中會直接使用的 二是在子程式中會被破壞的

3樓:手機使用者

stack segment

db 64 dup (?)

stack ends

data segment

msg1 db 'there are some empty rows under this row!','$'

msg2 db 'success!','$'

data ends

code segment

assume cs:code,ds:data,ss:stackstart:

mov ax,data

mov ds,ax

mov ah,09h

mov dx,offset msg1

int 21h

mov ax,4

call write

mov ah,09h

mov dx,offset msg2

int 21h

exit:

mov ah,07h

int 21h

mov ax,4c00h

int 21h

write:

;(插入空行,ax=所空行數)

;(注:ax為0時為重起一行)

mov cx,ax

inc cx

mov ah,02h

write001:

mov dl,0dh

int 21h

mov dl,0ah

int 21h

loop write001

retcode ends

end start

組合語言中子程式呼叫需要哪些暫存器進棧

4樓:匿名使用者

段內呼叫至少有ip,段間呼叫還有cs

5樓:匿名使用者

(1)乙個包宣告抄(package statement,可選)襲;

(bai2)任意數量引入du語句zhi(import statements);

(3)類的

dao宣告(class declarations)和介面宣告(inte***ce declarations)。

該三要素必須以上述順序出現。也就是說任何引入語句出現在所有類定義之前;如果使用包宣告,則包宣告必須出現在類和引入語句之前。

另外,虛機團上產品**,超級便宜

用組合語言編寫延時1S的子程式,用組合語言編寫乙個延時1S的子程式

湯旺河邊 本程式通過編譯,執行正確 code segment assume cs code,ds code subroutine 延時指定的時鐘嘀嗒數 入口 didas 時鐘嘀嗒數 1秒鐘約嘀嗒18.2次,10秒鐘嘀嗒182次。若延時不是秒的10數次倍,誤差稍微大點 delay1s proc nea...

彙編 延時子程式,組合語言中延時子程式的問題

daily proc near mov cx,2000h d0 mov ax,0ffffh d1 dec ax jz d1 loop d0 daily endp 延時大概是0.33s 其實延時跟cpu有很大關係,不能用軟體精確計算,可以用8254實現,硬體和軟體功能具有邏輯上的等效性。 用delay...

用組合語言編寫程式,用組合語言編寫乙個程式

print macro para 定義乙個巨集,這樣輸出字串的時候,可以省些事兒 lea dx,para mov ah,9 int 21h endm data segment msg1 db 請用拼音輸入姓名學號 格式為 xinming,xuhao buffer db 50,52 dup 0 為什麼...