《網路與系統攻防技術》第二週作業 組合語言

2022-10-08 21:27:23 字數 4426 閱讀 1883

真值:用+或-的數叫做真值

機器數:用0或1表示正負的機器數

原碼 反碼 補碼

最廣泛採用的是ascii碼低。低七位是字元編碼,第八位是奇偶校驗。

ascii碼有128個,兩類。非列印ascii碼有33個。可列印ascii碼有95個。

cpu主儲存器

乙個位元組由八個二進位制表示-一般乙個位元組是乙個儲存單元

乙個儲存器由多個儲存單元組成 從0000000000到1111111111

習慣上將cpu和主儲存器成為主機

主機之外的儲存,叫做輔存或外存

輸入輸出裝置及介面

i/o裝置需要通過i/o介面和系統匯流排連線

系統匯流排

序列方式

cpu三個操作 取指 執行 存數

系統匯流排對應 忙 閒 忙

指令流水線方式

cpu分為兩個部分執行單元(eu)匯流排介面單元(biu)

eu裡面有通用暫存器、算數邏輯單元(alu)、暫存器、標誌暫存器、eu控制器。

biu裡面有段暫存器(定址,作為邏輯位址裡面的基址)、16位資料匯流排、20位位址匯流排

eu負責取出指令**,對運算元執行各種指定的算數或邏輯運算以及向biu傳送訪問主存或i/o的命令

biu負責cpu與儲存器、i/o的資訊傳送。主要負責:取指令、訪問資料。

兩個分工又合作的兩個部分。

biu取指取數存數,eu執行。匯流排幾乎一直在忙。

資料暫存器

ax每個都是16位暫存器

例mov ax,bx; add ch,dh;

有些時候不需要明確指出暫存器的名稱。比如loop中cx隱含指定。

指標暫存器

存放16位位址,作為偏移量使用。

sp指標在堆疊操作隱含使用,指向堆疊底部

bp指令,指向堆疊某一處

變址暫存器

作為位址指標

儲存器的組成

儲存器是由若干儲存單元構成 單元多少決定容量

每個儲存單元存放相同長度二進位制數 一般為8位二進位制數(乙個位元組)

每個儲存單元有乙個唯一的位址編號 有20個位址線(即20位位址碼)

位址用5個十六進製制數表示

任何兩個相鄰位元組單元構成乙個字單元 16位長資料存放:低8位放在低位元組單元,高8位存放在高位元組單元

3456h 存放 56 34

在定義乙個位址時必須指出是位元組還是字型別屬性

儲存器的段結構

儲存器的段結構有以下特點

邏輯位址與實體地址對應關係

實體地址

每個實體地址是唯一的,從00000h到fffffh

邏輯位址

邏輯位址包括段基值偏移量

邏輯位址轉換為實體地址

biu轉換

段基值左移4位與16位偏移量相加

取位址 cs ip

堆疊操作 ss sp

取源串 ds(cs ss es) si

存目的串 es di

以bp作為基址 ss(cs ds es) ea

訪問一般變數 ds(cs ss es) ea

()內為允許代替**也叫作段超越

堆疊操作及其操作方法

堆疊的用途:暫存資料以及在過程中呼叫或處理中斷時儲存斷點資訊

堆疊的構造

分為專用堆疊儲存器軟體堆疊

堆疊固定的一段叫做棧底,是最大位址單元

浮動一段叫做棧頂

sp使用指向棧頂單元

堆疊訪問資料規則是先進後出filo

8086/8088堆疊的組織

sp中的內容始終表示基址與棧頂之間的距離 sp=0表示全滿

sp初始化指向棧底+2單元,值是堆疊的長度

為單位存放,低8位存放較低位址單元,反之亦然。

乙個堆疊段長度超過64kb,可以設定多個

改變ss可以改變到另乙個堆疊段,改變後應立刻給sp賦新值

堆疊操作

一條指令由兩大部分組成 操作碼+運算元

指令系統

一種計算機所能執行的各種型別的指令的集合稱為該計算機的指令系統。

指令系統的指令可以分為六大類

傳送類指令

算數運算類指令

位操作類指令

串操作類指令

程式轉移類指令

處理器控制類指令

指令的格式劃分可以分為三類:雙運算元指令 單運算元指令 無運算元指令

無運算元指令包含一下兩種指令:

不需要運算元 暫停指令hlt

沒有顯式指明運算元 指令pushf

傳送類指令

算數運算類指令

位操作類指令

處理器控制類指令

指令編碼

雙運算元指令編碼格式

例如mov add and,運算元是以下兩種情況

·乙個運算元在暫存器中,乙個在暫存器或儲存器中。

·目的運算元在暫存器或儲存器中,源運算元是立即數。

目標**長度是2~6個位元組

指令編碼有4個部分

單運算元指令編碼格式

操作特徵部分:包括opcode v w三個字段。

v只有移位/迴圈指令才有

與ax和al有關的指令編碼格式

除乙個運算元是ax/al外,另乙個可以是立即數或者儲存單元

其他指令編碼格式

組合語言語句種類及其格式

指令語句

一般格式為

標號 : 指令助記符 運算元 ; 注釋

偽指令語句

又叫做命令語句

符號名 偽指令符 運算元 ; 注釋

識別符號指令語句中的標號和偽指令語句中的符號名統稱為識別符號。

組成規則:

字數1-31個

第乙個必須是字母 問號 @ 下劃線之一

第二個開始可以是 字母 數字 @ 下劃線 問號

不能使用保留字

組合語言資料

資料是指令和偽指令語句運算元的基本組成部分。由數值和屬性兩個部分組成。

常見的資料型別有常數 變數和標號

常數常數幾種形式:

變數變數用來表示存放資料的儲存單元

可以認為變數名就是存放資料的儲存單元位址

標號標號是指令位址的別名

標號有三個屬性 段屬性 偏移量屬性 距離屬性(型別屬性)

near(近) 段內轉移

far(遠) 可以被非本段轉移和呼叫

確定有兩種方法

隱含方式 sub1預設near

label+型別 sub1_far label far

label偽指令還可以定義變數的屬性

符號定義語句

常數或數值表示式

count equ 5

num equ count+5

位址表示式

adr1 equ ds:[bp+14]

變數、暫存器名或指令助記符

creg equ cx

同一符號不能被equ定義多次

表示式與運算子

任何表示式的值在程式被彙編的過程中進行確定,而不是到程式執行時才計算

length size 圓括號

ptr offset seg type this

high low

eq ne lt le gt ge

notand

or xor

可以用圓括號改變運算順序

程式的段結構

未指定組合型別 與其他段沒有連線關係

public 與段同名的鄰接在一起

common 產生乙個覆蓋段 與common說明的同名段置成相同的段基值

stack 把所有同名段連線成乙個連續段

at表示式 可定位在表示式所指示的小節邊界上

memory 應定位在所有其它段之後的最高位址上

類別名必須用單引號引起來

段定址偽指令

段定址偽指令assume的作用是告訴匯程式設計序,在處理源程式時,定義的段和哪個暫存器關聯

一般格式 assume 段暫存器名: 段名,段暫存器名:段名,......

可以使用nothing將前面的設定刪除

段暫存器的裝入

過程定義偽指令(proc/endp)

格式如下:

過程名 proc [near/far]

...ret

...過程名 endp

當前位置計數器$與定位偽指標org

位置計數器$使用上完全類似變數的使用

定位偽指標org 用來改變位置計數器的值

org 數值表示式

標題偽指令title

title 標題名

從程式返回作業系統的方法

20189317 《網路攻防技術》 第二週作業

提起袁任廣,知道的人或許並不多。但如果提起袁哥或者大兔子,在國內安全業界稱得上盡人皆知。在國內,他的windows系統方面的造詣可謂首屈一指,早在1999年就曾提出過windows的共享漏洞。袁哥經常將黑客比作網路軍火商,並認為 在國家利益面前,如果沒有情報和網路軍火 乙個國家將不堪一擊。作為頂尖黑...

網路攻防技術與實踐 第二週學習總結

經過本週學習,大體梳理一下學到的知識。網路攻防技術與實踐 第一章和第二章,大概介紹了以下的內容。本書第一章從實際案例開始講起,為讀者介紹了dasher蠕蟲。從該蠕蟲病毒的爆發,到狩獵女神團隊對其作出應急響應,再到追蹤 定位黑客,以及清理威脅,生動形象的為讀者描述了一場精彩的網路攻防戰。也帶讀者感性的...

20169219《網路攻防》第二週作業

samy kamka 吳石黑客資訊 安全工具有很多,例如 meterpreter nmap ethereal whisker libwhisker kismet netfilter nmap 掃瞄工具 nmap用法詳解 對乙個大範圍的網路或活躍的主機進行滲透測試,必須要了解這些主機上所開啟的埠號。在...