記錄一下學(xué)習(xí)過(guò)程,以后遺忘了也方便復(fù)習(xí)呈昔。
學(xué)習(xí)方法:b站視頻 + 匯編語(yǔ)言教材(王爽第3版)挥等,視頻中用到的工具在 百度網(wǎng)盤(pán) (提取碼: 7evz)中。
預(yù)備
1 相關(guān)軟件的安裝
主要是用到了DOSbox和Vim堤尾,工具都在網(wǎng)盤(pán)中肝劲。
配置DOSbox
- 在D盤(pán)中新建一個(gè)asm的文件夾,以后在這個(gè)文件夾中建立文件練習(xí)郭宝;
- 將網(wǎng)盤(pán)中的debug.exe放在asm文件夾下辞槐;
- 運(yùn)行DOSbox安裝程序(在網(wǎng)盤(pán)中),一直next即可粘室;
-
找到安裝目錄C:\Users\Administrator\AppData\Local\DOSBox榄檬,編輯配置文件,在最下面添加mount c: d:\asm 和 c:衔统,如圖:
這樣每次開(kāi)啟軟件就可以自動(dòng)運(yùn)行命令進(jìn)入目錄鹿榜,不用手動(dòng)輸入了;
- 運(yùn)行DOSbox锦爵,鍵入debug舱殿,再鍵入d,會(huì)有一些東西顯示,即成功险掀。
配置Vim
- 安裝Vim沪袭,一直next就好;
- 找到安裝目錄樟氢,C:\Program Files (x86)\Vim冈绊,編輯配置文件,加入
color evening
set nu
這樣就可以調(diào)成黑色背景并顯示行號(hào)了埠啃。
編譯小練習(xí)
- 將網(wǎng)盤(pán)中的LINK.exe死宣,MASM.exe,temp.txt霸妹,temp1.txt拷貝至asm文件夾內(nèi)十电,并新建t1.asm把temp.txt中的內(nèi)容復(fù)制進(jìn)去;
- 進(jìn)入DOSbox配置文件,在底部加入
masm t1;
link t1;
- 打開(kāi)DOSbox鹃骂,即可自動(dòng)完成編譯和連接台盯,asm文件夾內(nèi)會(huì)出出現(xiàn)t1.obj和t1.exe;
- 在DOSbox中鍵入t1,發(fā)現(xiàn)屏幕中出現(xiàn)紫色小區(qū)域畏线,表示exe運(yùn)行成功静盅。
2 關(guān)于編碼
編碼是人類表示世界的方式
希臘人是如何用地圖表示世界地位置的?
用緯度和經(jīng)度表示寝殴。
人類是如何表示長(zhǎng)度的蒿叠?
有各種單位,如米蚣常、厘米市咽、英寸.......
人類是如何表示時(shí)間的?
年、月抵蚊、日施绎、時(shí)、分贞绳、秒.......
人類是如何表示天上的星星的谷醉?
有各種星座,金牛座冈闭、處女座俱尼、獵戶座,即用圖形表示星星之間的相對(duì)位置萎攒。
以上各種遇八,都是一種編碼系統(tǒng),都是人類對(duì)世界的表示躺酒。
又如我們是如何表示我們說(shuō)話時(shí)所發(fā)出的聲波的押蚤?拼音字母a、o羹应、e就是對(duì)我們發(fā)出的聲波的一種表示,對(duì)于英語(yǔ)來(lái)講次屠,英語(yǔ)是由音節(jié)組成并與讀音相對(duì)應(yīng)园匹,也是一種對(duì)人類發(fā)出聲波的一種編碼。
再一個(gè)例子劫灶,笛卡爾坐標(biāo)系裸违,本質(zhì)上也是一套編碼/表示系統(tǒng),用于表示坐標(biāo)系中的任意一點(diǎn)本昏。
世界與計(jì)算與計(jì)算要素
人類為了觀測(cè)世界供汛,用編碼對(duì)世界進(jìn)行表示,用數(shù)學(xué)對(duì)世界進(jìn)行描述(計(jì)算),
即 找到計(jì)算要素→對(duì)計(jì)算要素進(jìn)行表示→計(jì)算
一個(gè)簡(jiǎn)單的例子:
問(wèn):你給了我一個(gè)蘋(píng)果怔昨,然后又給了我兩個(gè)蘋(píng)果雀久,請(qǐng)問(wèn)我得到了幾個(gè)蘋(píng)果?
解:①找到其中的計(jì)算要素:一個(gè)蘋(píng)果趁舀、兩個(gè)蘋(píng)果赖捌;②用邏輯符號(hào)表示計(jì)算要素之間的關(guān)系;③進(jìn)行計(jì)算矮烹,即1+2=3越庇。
總結(jié)一下,就是用邏輯表示系統(tǒng)奉狈,將計(jì)算要素與計(jì)算要素之間的邏輯關(guān)系表示出來(lái)進(jìn)行計(jì)算卤唉,所有的學(xué)科皆是如此。
那就有人問(wèn)了仁期,你說(shuō)所有的學(xué)科皆是如此桑驱,那歷史呢,歷史也需要這個(gè)樣嗎蟀拷?
這就要拓寬對(duì)計(jì)算
的理解:舉一個(gè)歷史中的例子碰纬,比如說(shuō)一場(chǎng)戰(zhàn)役,雙方需要把天氣问芬、地形以及敵軍情況這些計(jì)算要素找出來(lái)悦析,然后據(jù)此制定作戰(zhàn)計(jì)劃進(jìn)行計(jì)算。再比如說(shuō)心理測(cè)試此衅,就是通過(guò)收集計(jì)算要素强戴,再用計(jì)算推斷出受測(cè)者的心理狀態(tài)。
這一切都是可以計(jì)算的挡鞍。
計(jì)算要素與表示系統(tǒng)
還是上面的蘋(píng)果例子骑歹。解決這個(gè)問(wèn)題我們可以用阿拉伯?dāng)?shù)字,也可以用算盤(pán)墨微,甚至可以結(jié)繩計(jì)數(shù)道媚,當(dāng)然效率是有差別的,即一套好的表示系統(tǒng)翘县,可以更好的表示出計(jì)算要素以及計(jì)算要素與計(jì)算要素之間的邏輯關(guān)系最域。
計(jì)算機(jī)編程語(yǔ)言是一套什么系統(tǒng)?
答案很明顯锈麸,是一套表示系統(tǒng)镀脂。
英語(yǔ)是一種語(yǔ)言,漢語(yǔ)也是一種語(yǔ)言忘伞,語(yǔ)言是用來(lái)互相交流的薄翅,我們之間正是由于采用了同一套表示/編碼系統(tǒng)沙兰,才能理解彼此的意思。
計(jì)算機(jī)編程語(yǔ)言也是用來(lái)人與計(jì)算機(jī)相互交流的翘魄。
python鼎天、java、c++是高級(jí)編程語(yǔ)言熟丸,而匯編語(yǔ)言是低級(jí)編程語(yǔ)言训措。
匯編語(yǔ)言雖然使用不便,但是它提供了一種觀測(cè)手段光羞,可以觀測(cè)到很多高級(jí)語(yǔ)言無(wú)法觀測(cè)到的東西绩鸣。
3 二進(jìn)制、十進(jìn)制與十六進(jìn)制
這個(gè)就記錄幾個(gè)要點(diǎn)纱兑。
二進(jìn)制由一和零組成呀闻,1代表有,0代表無(wú)潜慎。
二進(jìn)制與十進(jìn)制的快速轉(zhuǎn)換:比如十進(jìn)制數(shù)35捡多,可以拆成32+2+1,把相應(yīng)的二進(jìn)制位置為1铐炫,得到二進(jìn)制數(shù)10011垒手。
十六進(jìn)制與十進(jìn)制快速轉(zhuǎn)換:比如十進(jìn)制數(shù)83可以表示為16×5 + 3,表示成十六進(jìn)制為53H(H是后綴倒信,表示該數(shù)為十六進(jìn)制hex)科贬,注意在十六進(jìn)制中,1有0無(wú)規(guī)則失效鳖悠。
十六進(jìn)制與二進(jìn)制快速轉(zhuǎn)換:用4位二進(jìn)制代表一位十六進(jìn)制即可榜掌,比如2A,2用二進(jìn)制表示就是0010乘综,A用二進(jìn)制表示就是1010憎账,所以2A用二進(jìn)制表示為00101010。
反過(guò)來(lái)思考
4位二進(jìn)制數(shù)最高表示15卡辰,即1111胞皱。根據(jù)1有0無(wú)的規(guī)則,轉(zhuǎn)換時(shí)剪掉0所對(duì)應(yīng)的數(shù)就能得到十進(jìn)制數(shù)九妈。比如朴恳,1101,代表第二位缺失允蚣,那它就表示15-2=13