ORIGINAL POSThtml
此文總結第1、2、三單元所學。工具
由於前幾節課沒有去上,因此第一單元我可能不能很是正確地去總結,儘可能按着老師的課件來看下去。性能
第一章都是計算機基礎,或者能夠說計算機組成原理的超級簡略版?學習
silly binariesspa
計算機能夠直接識別、執行。不是給人寫的東西。翻譯
不一樣種類的計算機其機器語言是不相通的,按某種計算機的機器指令編制的程序不能在另外一種計算機上執行。debug
silly string replacercode
主體是彙編指令,使用助記符便於人記憶和使用。htm
機械語言是機械指令的集合,彙編語言是機械指令符號化。
每一種特定的彙編語言和其特定的機器語言指令集是一一對應的。(通用性仍是較低)
有時間仍是看看計算機組成原理吧。
-
仍是叫成bus 直觀。
若是說主板是一座城市,那麼總線就像是城市裏的公共汽車(bus),能按照固定行車路線,傳輸來回不停運做的比特。這些線路在同一時間內都僅能負責傳輸一個比特。所以,必須同時採用多條線路才能發送更多數據,而總線可同時傳輸的數據數就稱爲寬度,以比特爲單位,總線寬度愈大,傳輸性能就愈佳。
PC上通常有五種總線*:
* Wikipedia 上說總線有五種,課本上只有前三種。
虛擬地址空間?
現代的內存管理單元是以頁的方式,分割虛擬地址空間的。經過總線,CPU將各種存儲器當作一個邏輯存儲器對待。
感受相似於把各個存儲器mount 到地址空間上,使其擁有一個惟一的地址(路徑)。
寄存器
快 少 在CPU裏
字長:CPU在單位時間內能一次處理的二進制位數,反映出CPU內部運算處理的速度。
位寬:CPU經過外部數據總線與內存之間一次可以傳送的數據位。
大概就是高速公路收費站和高速公路車道數的關係吧。
Four of them, AX, BX, CX, DX, can also be accessed as twice as many 8-bit registers.
4個:ax, bx, cx, dx
亦可以使用ah, al 訪問通用寄存器的高位和低位。
感受main registers 翻譯成通用寄存器怪怪的。
課本的編排是真的亂七八糟。
爲何第二章PPT第12頁上說8086CPU的位寬是16位?
8086 數據總線16位, 地址總線 20位。
There are also three 16-bit segment registers (see figure) that allow the 8086 CPU to access one megabyte of memory in an unusual way. Rather than concatenating the segment register with the address register, as in most processors whose address space exceeds their register size, the 8086 shifts the 16-bit segment only four bits left before adding it to the 16-bit offset (16×segment + offset), therefore producing a 20-bit external (or effective or physical) address from the 32-bit segment:offset pair. As a result, each external address can be referred to by 212 = 4096 different segment:offset pairs.
也就是用
segment * 0x10 + offset = address
來實現IMB的尋址。
同時修改 cs ip
jmp segment:offset jmp segment:offset jmp segment:offset
只修改 ip
jmp register jmp register jmp register
不能用 mov ip, ax ,重要的事情說三遍
經常使用指令
沒啥好說的,有問題就敲?
段真的仍是挺不錯的一個結局方法。
在我學習彙編以前,就已經瞭解到了一個不錯的C/C++反彙編工具 —— Godbolt 。喜歡的能夠試一試。