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 為什麼...