關於ds暫存器(資料段暫存器)(cs是**段暫存器)
8086cpu不支援資料直接送入段暫存器的操作,ds是乙個段暫存器,所以 mov ds,100h非法,只能用乙個暫存器進行中轉
在8086cpu加電啟動或復位後(即cpu剛開始工作時)cs和ip被設定為cs=f000h,ip=ffffh,即在8086pc機剛啟動時,cpu從記憶體ffff0h單元中讀取指令執行,ffffoh單元中的指令是8086pc機開機後執行的第一條指令。
mov指令的幾種形式:
mov 暫存器,資料
mov 暫存器,暫存器
mov 暫存器,記憶體單元
mov 記憶體單元,暫存器 (mov [0],ax)
mov 段暫存器,暫存器
sub和add的不同之處在於它們不可以對段暫存器有操作
乙個字型資料佔兩個單元,所以偏移位址是[0],[2],[4]
棧:一種具有特殊的訪問方式的儲存空間,特殊性在於最後進入這個空間的資料最先出去。
8086cpu提供入棧和出佔指令,最基本的兩個是:push(入)和pop(出)
push 暫存器/段暫存器/記憶體單元
pop 暫存器/段暫存器/記憶體單元
注意ss:sp永遠指向棧頂元素
如果將10000h-1000fh這段空間當作棧,初始狀態棧是空的,此時ss=1000h,sp=0010
棧會越界,會影響到其它的資料,棧越界是危險的。
cpu只知道棧頂位置,不知道棧空間的大小
每一次執行push前都會將sp-2,因此cpu執行push要兩步,而move只要一步
乙個棧的最大值是64kb
用乙個段存放**,用乙個段存放資料,用乙個段當作棧,這些都是我們自己安排的。
資料段存在ds中,**段存在cs中,棧段存在ss中
一段記憶體可以什麼都是,也可以什麼都不是
debug中t命令執行改變ss後下一條指令緊接著執行
debug在其處理d命令的程式段中,必須有將段位址送入段儲存器的**,訪問記憶體指令一般被存在ds中
e a u 命令也可以這樣如上
10月27日培訓日記
再次回顧了 formbean bo actionservlet action manager dao db的呼叫流程式 以使用者登入為例,讓大家必須能自己把這個流程和其中的細節說出來,包括如何判斷使用者登入資訊是否正確的細節。接著詳細為大家講解cookie的有關細節知識 cookie相當於伺服器給客...
10月27日培訓日記
再次回顧了 formbean bo actionservlet action manager dao db的呼叫流程式 以使用者登入為例,讓大家必須能自己把這個流程和其中的細節說出來,包括如何判斷使用者登入資訊是否正確的細節。接著詳細為大家講解cookie的有關細節知識 cookie相當於伺服器給客...
2023年1月27日訓練日記
今天寫乙個 優化問題 2141 第n個智慧型數 乙個正整數如果能表示成兩個正整數的平方差,則稱這個數為乙個 智慧型數 比如 16 就等於 5的平方減去 3 的平方,所以 16 就是乙個智慧型數,從 1 開始的自然數列中,將 智慧型數 從小到大編號為 1,2,3,n。現輸入乙個正整數 n,輸出第 n ...