組合語言第三版讀書筆記

2021-08-16 21:38:19 字數 1957 閱讀 7296

第一章

基礎知識

硬體的體系結構

機器指令

二進位制數字

解析成高低電壓,電子元件收到驅動,進行運算

機器語言

機器指令的集合

每一種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.如果乙個變數是在全域性定義的,系統會保證給...