第一章
基礎知識
硬體的體系結構
機器指令
二進位制數字
解析成高低電壓,電子元件收到驅動,進行運算
機器語言
機器指令的集合
每一種cpu設計上的不同導致機器語言的不同
組合語言
一種需要解釋的語言
為了將機器指令表示為一些易記得符號
儲存器放置指令和資料的容器
cpu執行的關鍵
儲存單元
儲存器計量單位
單位為1byte=8bit 1024b=1k
位址匯流排
儲存單位的位址
cpu和其他元件通訊的導線
資料匯流排
資料cpu和其他元件通訊的導線
控制匯流排
選項,讀或寫
cpu和其他元件通訊的導線
位址線寬
定址範圍
一根導線可以發出兩種訊號,n根導線2的n次方
資料線寬
傳輸速度
1次傳輸為n根導線的資料
隨機儲存器ram
存放程式和資料
唯讀儲存器rom
bios
記憶體位址空間
統一的儲存器訪問方式
運算器資訊處理
控制器控制
暫存器資訊儲存
ax 16位乙個字
ah+al
高八位加第八位
mov ax,[0]
將段ds暫存器記憶體位址偏移0個單位,取乙個字
cpu棧的實現
如何將乙個段位址表示為棧,任意時刻ss:sp指向棧頂
利用ss段儲存器和sp偏移儲存器
段 一段記憶體
資料段**段棧段
對於資料段只要將位址放置ds暫存器
**段放置cs 棧段ss
code段,data,stack段
code-1=stack
code-2=data
x86彙編指令
mox ax,18
將18送入暫存器ax
ax=18
mov ah,78
將78送入暫存器ah
ah=78
add ax, 8
將ax暫存器的值加8
ax=ax+8
8086是16位結構的cpu就是說資料傳輸,定址範圍為2的16次方也就是65k
外部位址匯流排為20位,有1m定址能力。cpu只能使用65k的儲存單元
於是cpu採用了兩個16位位址合成乙個20位的方法
段位址和偏移位址通過資料匯流排送入乙個位址加法器的部件
將兩個16位位址合併成乙個20位實體地址
位址加法器將20位實體地址送入輸入輸出控制電路
輸入輸出控制電路將20位位址送到外部位址匯流排
外部位址匯流排送到儲存器
位址加法器採用
段位址*16+偏移位址的方式和成實體地址
比如8086cpu訪問實體地址為123c8h的記憶體單元
1230 1230*16=12300
00c8 00c8
乙個十進位制數向左移動一位等於這個數乘10
乙個2進製數向左移動一位等於這個數*2
乙個16進製制數向左移動一位等於這個數*16
段位址*16+偏移位址的方式和成實體地址的本質就是為了使2個數相加表示乙個大的數
cpu中cs:ip就是段位址和偏移位址,cs和ip提供了指令的位址 8086加電啟動和復位後cs指向ffffh ip指向0000h
mov不能修改csip的值只有轉移指令可以修改
棧 last in first out
push ax 由兩部完成
1 sp=sp-2 ss:sp指向新的棧頂
2 將ax的值送入新的棧頂
cpu在設定棧時,必須是往低位址存,從低位址取,所以說棧頂是由高位址向低位址增長
push ax
1 將棧頂的值取到ax
2 將sp+=2
《組合語言》 王爽 第三版 讀書筆記 前言
又一次決定重新開始學習。一切重頭再來,不去管以前學的,半途而廢的,這次要完整的做筆記,完全梳理自己的程式設計知識。一切從組合語言開始,c語言延續。以後盡量保持半小時學習,兩小時思考加練習。今天學習的是王爽老師的組合語言的前言。本書的前言王爽老師主要闡明了幾個重要的問題 1 學習組合語言的原因 1.它...
C Primer 第三版 讀書筆記
前言 c primer 第三版這本書還是去年做window mobile 6開發時看完的,看完後做了一些筆記到本子後就沒管了。今天偶爾翻出來趕緊寫一篇文章備份一下,據說每次重讀這本書都有新的收穫,正所謂溫故而知新,可見這本書之經典。宣告 農民伯伯 正文 1.如果乙個變數是在全域性定義的,系統會保證給...
C Primer 第三版 讀書筆記
前言 c primer 第三版這本書還是去年做window mobile 6開發時看完的,看完後做了一些筆記到本子後就沒管了。今天偶爾翻出來趕緊寫一篇文章備份一下,據說每次重讀這本書都有新的收穫,正所謂溫故而知新,可見這本書之經典。宣告 農民伯伯 正文 1.如果乙個變數是在全域性定義的,系統會保證給...