2021-2022-1 20211200 《資訊保安專業導論》第5周學習總結
2021-2022-1 20211200 《資訊保安專業導論》第5周學習總結
作業資訊
這個作業屬於哪個課程 | 2020-2021-1資訊保安專業導論 |
---|---|
這個作業要求在哪裡 | 2020-2021-1資訊保安專業導論第5周作業 |
這個作業的目標 | Pep/9虛擬機器、機器語言與組合語言、演算法與虛擬碼、測試:黑盒,白盒 |
作業正文 | 尋找你的黑客偶像、無窮的技藝 |
教材學習內容總結
- 機器語言與組合語言的區別:
機器語言是計算機直接使用的二進位制編碼構成的指令(由此我也明白了為什麼早期電腦科學家都是數學家);而組合語言是一種低階語言,用助記碼表示特定計算機的機器語言,由彙編器進行翻譯工作。 - 虛擬機器pep/9的重要特性:
虛擬機器是一種假想機器,用來模擬真實機器- 基本特性:記憶體單元由65536位元組的儲存空間構成。字長是2位元組,16位,可用兩個十六進位制數字表示一個位元組中的位模式。它有七個暫存器
- 指令格式:兩部分構成,即8位的指令說明符和(可選的)16位的運算元說明符。長度為1位元組或3位元組。
指令說明符的格式是操作程式碼(即操作碼),4位到8位不等,教材中均是4位,由此第五位位暫存器,教材中均是0,因為都是A暫存器(累加器)。後面3位是定址模式說明符,其中000是立即定址,001是直接定址。沒有運算元(要處理的資料)的指令稱為一元指令,長度為1位元組。
- 基本特性:記憶體單元由65536位元組的儲存空間構成。字長是2位元組,16位,可用兩個十六進位制數字表示一個位元組中的位模式。它有七個暫存器
- 區分立即定址和直接定址:
立即定址就是指令當中自帶資料,直接讀取,最快;
直接定址就是指令中存放的是地址,直接解析這個地址;
間接定址就只指令中存放的是地址的地址,或者是存放地址的暫存器,最慢。
1、立即定址方式:
運算元就包含在指令中。作為指令的一部分,跟在操作碼後存放在程式碼段。
這種運算元成為立即數。立即數可以是8位的,也可以是16位的。
例如:
指令: MOV AX,1234H
則: AX = 1234H
2、直接定址方式:
運算元在暫存器中,指令直接包含有運算元的有效地址(偏移地址)
注:運算元一般存放在資料段
所以運算元的地址由DS加上指令中直接給出的16位偏移得到。如果採用
段超越字首,則運算元也可含在資料段外的其他段中。
例如:
MOV AX,[8054]
如(DS) = 2000H,
則執行結果為(AX) = 3050H
(實體地址=20000+8054=28054H)
28054H裡的內容為3050H
-
編寫一個簡單的機器語言程式:
-
描述建立和執行組合語言程式的步驟:
1、畫框圖
2、編制程式碼
3、除錯編譯
4、執行測試 -
編寫簡單的組合語言程式:
-
區分彙編器的指令和要翻譯的指令
彙編器是將組合語言翻譯為機器語言,而要翻譯的指令是將該虛擬碼翻譯成pep/9語句,二者有本質區別。 -
區分執行一種演算法和開發一種演算法
執行一種演算法是“從有化為有形”,即演算法已經有了,執行出結果進行輸出;而開發一種演算法則是“從無到有”,即本沒有該種演算法,而新編寫了一個演算法。 -
描述表達演算法時使用的虛擬碼結構
- 變數
- 賦值
- 輸入/輸出
- 重複(迭代、迴圈)
- if-then 選擇
- if-then-else選擇
-
使用虛擬碼描述演算法
如:
Set sum to 0
Read num1
Set sum to sum + num1
Read num2
Set sum to sum + num2
if(sum<0)
Write "Error"
ELSE
Write sum
給變數sum賦值0,輸入num1,將sum賦值為num1+sum,輸入num2,將sum賦值為sum+num2。如果sum的結果小於0,則輸出“Error”,否則輸出sum的值,從而實現num1+num2
-
描述兩種測試方式
- 程式碼覆蓋測試法,又叫明箱測試法,測試者可以看到程式碼
- 資料覆蓋測試法,又叫暗箱測試法,測試者看不到程式碼,該測試法基於輸入的資料而非程式碼
-
設計和實現測試方案
針對上述兩數相加,首先確保不超過儲存邊界值,其次分別對輸入兩個正數、兩個負數、一正一負(其中正數絕對值大於負數絕對值,另一種正數絕對值小於負數絕對值)以及大數進行驗證,輸出結果與預期相符則加大我們對程式執行的信心,若不一樣,則應該尋找沒有覆蓋到的問題。
教材學習中的問題和解決過程
- 問題1:立即定址和直接定址究竟是什麼區別
- 問題1解決方案:首先,我去查了一下網路,得到一個比較通俗的答案,如下圖
儘管如此,我還是不太清楚在程式具體執行過程中究竟有什麼區別,然後我再去閱讀了教材,接著去雲班課提問,首先得到學長和同學的答覆,連結分別如下:
https://blog.csdn.net/bjbz_cxy/article/details/80534371
https://blog.csdn.net/skyxmstar/article/details/70039520
其中均講了直接定址、間接定址和立即定址。
立即定址就是指令當中自帶資料,直接讀取,最快;
直接定址就是指令中存放的是地址,直接解析這個地址;
間接定址就只指令中存放的是地址的地址,或者是存放地址的暫存器,最慢。
1、立即定址方式:
運算元就包含在指令中。作為指令的一部分,跟在操作碼後存放在程式碼段。
這種運算元成為立即數。立即數可以是8位的,也可以是16位的。
例如:
指令: MOV AX,1234H
則: AX = 1234H
2、直接定址方式:
運算元在暫存器中,指令直接包含有運算元的有效地址(偏移地址)
注:運算元一般存放在資料段
所以運算元的地址由DS加上指令中直接給出的16位偏移得到。如果採用
段超越字首,則運算元也可含在資料段外的其他段中。
例如:
MOV AX,[8054]
如(DS) = 2000H,
則執行結果為(AX) = 3050H
(實體地址=20000+8054=28054H)
28054H裡的內容為3050H
由此我大概明確了二者的區別。
程式碼除錯中的問題和解決過程
- 問題1:在宣告類變數的時候,
def speak(self,sound):
print("{}在叫,'{}'!".format(self.name,sound))
其中,括號裡第二個{}外面我用了雙引號,與最外面的雙引號難以區分,出現問題。
- 問題1解決方案:將任意一對引號改成單引號即可,這裡我改了第二個的{}的引號
- 問題2:c語言中,用char確定的字元我輸入了中文字元,最後輸出不出來,報錯了,不知為何
- 問題2解決方案:求教了學長,學長告訴我,中文是兩位的,char預設只是一位的,所以報錯,幫我修改了一下,如圖:
- 問題3:在pep/9中使用匯編語言的迴圈時,忘記在第一行輸入BR(轉到位置001A)和main,使得迴圈執行不出結果
- 問題3解決方案:補上後,成功執行
[程式碼託管]
上週考試錯題總結
- 錯題1: The category of numbers called integers includes negative numbers.
本題應該是正確,本題題意為整數包含負數,我當時並沒有理解到位就做了答。 - 錯題2: The value of each position in number system is determined by subtracting the base from the position number.
本題應該是錯誤,本題題意為“數字系統中每個位置的值是通過從位置編號中減去基數來確定的。”,並非是減去基數,而是乘以基數的多少次決定的,如十進位制數字23中,基數為10,左邊的值是2*10^1決定。 - 錯題3: Grace Murray Hopper participated in the design of the COBOL programming language.
本題應該是正確,Grace Murray Hopper參與了COBOL的設計。 - 錯題4: Which of the following is data about data , such as the resolution of an image being stored with the image?
A.Scientific notation
B.Keyword encoding
C.Metadata
D.Digital
E.Analog data
本題應該選C元資料,元資料的概念是元資料(Metadata),又稱中介資料、中繼資料,為描述資料的資料(data about data),主要是描述資料屬性(property)的資訊,用來支援如指示儲存位置、歷史資料、資源查詢、檔案記錄等功能。 - 錯題5: Huffman encoding uses variable length binary strings to represent particular characters.
本題應該是正確,霍夫曼編碼,是一種編碼方式,霍夫曼編碼是可變字長編碼(VLC)的一種
其他
程式這一塊感覺有點難度,不止是程式碼本身,還要理解程式碼如何執行,現在腦子裡執行一遍,再用終端驗證自己的想法。
學習進度條
程式碼行數(新增/累積) | 部落格量(新增/累積) | 學習時間(新增/累積) | 重要成長 | |
---|---|---|---|---|
目標 | 5000行 | 30篇 | 400小時 | |
第一週 | 200/200 | 2/2 | 20/20 | |
第二週 | 300/500 | 2/4 | 18/38 | |
第三週 | 500/1000 | 3/7 | 22/60 | |
第四周 | 300/1300 | 2/9 | 30/90 | |
第五週 | 300/1600 | 3/11 | 30/120 |
-
計劃學習時間:25小時
-
實際學習時間:30小時
-
改進情況:思考時間比以往明顯增加,查閱資料的次數也多了許多。
參考資料
- 《電腦科學概論》
- ...