簡單的組合語言源程式基本語法:
assume cs:code
code segment
mov ax , 0001h
add ax , ax
mov ax , 4c00h
int 21h
code ends
end
在組合語言源程式中,包含兩種指令分別是,彙編指令和偽指令:
彙編指令:
1)(mov ax , 0001h ·······int 21h)這些指令有對應的機器碼,可以編譯成機器指令,最終為cpu所執行。
2)mov ax , 4c00h
int 21h
這兩行指令時作為乙個程式的返回(程式返回就是當乙個程式結束後,將cpu的控制權交給使它得以執行的程式)
偽指令:
1)assume 的作用是將有特定用途的段和相關的暫存器關聯起來。
2)*** segment ··········· *** ends 用於定義乙個段,segment為段的起始,ends是段的結束。而每個段都有乙個標識,***就是這段的識別符號。
3)end 標誌著程式的結束。
匯程式設計序從寫出到執行的過程:
程式設計 -> 源程式(.asm)-> 目標程式(.obj) -> 連線 -> 執行程式(.exe)-> 載入 -> 執行
練習:
assume cs:code
code segment
mov ax , 2000h
mov ss , ax ; 棧空間所在的段位址
mov sp , 0
add sp , 10 ;偏移位址
pop ax ;將記憶體中的棧空間的資料讀取到暫存器中
pop bx
push ax ;將暫存器中的資料傳送到記憶體中的棧空間
push bx
pop ax ;將記憶體中的棧空間的資料讀取到暫存器中
利用debug把程式載入到記憶體,同時給出記憶體中2000:0000 起的16個位元組
是定義棧空間所在的段位址
是定義棧空間的偏移位址(在debug中貌似把mov sp , 0 的指令執行隱式進行了)
把棧空間裡的資料進行讀取
把暫存器中的資料壓進棧空間
由於棧空間的操作時以字為單位,所以由圖可見:
棧空間操作之前:
棧空間操作之後:
2000:000a和2000:000c的以字型別的資料發生了互換
再次進行
pop ax
pop bx
把棧空間裡的資料進行讀取
暫存器ax和bx的資料發生了互換
第四章總結
1.對貪心演算法的認識 貪心演算法在求解問題時,不從整體上考慮,而是得到某種意義上的區域性最優解,做出當前看來是最好的選擇。每次的選擇都會依賴之前作出的選擇,而對後面的選擇不會產生影響。它具有最優子結構的性質,即問題的最優解包含其子問題的最優解。但貪心演算法不是對於所有的問題都能得到整體最優解,最重...
第四章筆記
一.引入樣式 1.行內樣式表 2.內部樣式表 在head標籤裡面,title標籤下面 優點方便在同頁面中修改樣式 缺點不利於在多頁面間共享復用 及維護,對內容與樣式的分離也不夠徹底 3.外部樣式表 嵌入式匯入式 嵌入式和匯入式的區別 1.標籤屬於xhtml,import是屬於css2.1 2.使用鏈...
第四章筆記
氣泡排序 從大到小 基本思想 兩層迴圈來完成,每一輪比較之後,把最小數沉到陣列的末尾,之後進行下一輪的比較,比較的次數減少一次,因為最後的數字已經是最小 外層迴圈控制比較的輪數,陣列的長度減一次 內層迴圈進行比較。int testarr for int i 1 i testarr.length 1 ...