第九章(筆記)

2021-06-14 05:38:49 字數 1435 閱讀 2616

轉移指令是可以修改ip,或同時修改cs和ip的指令

offset 是用於提取標號偏移位址的操作符

jmp在第2章裡說到時用於修改ip或同時修改cs和ip的轉移指令,這章裡單獨的jmp指令是乙個無條件的轉移指令

jmp short 標號 是實現段內短轉移

jmp near ptr 標號 是實現段內近轉移 

這兩條指令的機器碼都沒有記錄要轉移的目的位址,而是記錄著執行jmp指令後第乙個位元組的位址到目的位址的位移量

而 jmp short 標號 的位移量只有8位(-128~127)

jmp near ptr 標號 的位移量就是16位(-32768~32767)

可以通過書本上的一段**可以觀察到:

這是書本上讓我們分析的一段奇怪的**

assume cs:code

code segment

mov ax,4c00h

int 21h

start: mov ax, 0

s: nop

nopmov di, offset s

mov si, offset s2

mov ax, cs:[si]

mov cs:[di], ax

//這是把s2標號所對應位址的機器碼,

//複製給s標號所對應位址的記憶體單元裡

s0: jmp short s

s1: mov ax,0

int 21h

mov ax,0

s2: jmp short si

nopcode ends

end start

通過debug可以觀察到:·

由圖可以看到s2標號處的jmp指令所對應的機器碼是ebf6

那麼mov di, offset s   

mov si, offset s2

mov ax, cs:[si]     

mov cs:[di], ax

這4條指令執行後,s標號處位址對應的記憶體單元儲存著ebf6這機器碼

得到的位址就是1455:0000,那麼轉移到1455:0000處繼續執行指令,這位址記憶體單元儲存的指令是mov ax,4c00h

jmp far ptr 標號 是實現段間轉移,又稱為遠轉移,它的轉移時通過指明目標的cs:ip實現的。

jmp word ptr (記憶體單元位址)這是通過記憶體單元裡的資料來指明轉移位址

jmp dword ptr (記憶體單元位址) 這是通過記憶體單元裡的資料來指明轉移的ip和cs

jcxz 這是條件轉移指令(所以條件轉移指令都是短轉移),這條件是cx 為 0 才進行轉移

之前所學的loop指令是屬於轉移指令(所有的迴圈指令都是短指令)

第九章作業

班級 0401304 學號 2013211526 姓名 鄧小俊 2.身份驗證 依據使用者所提供的身份資訊,來進行登入驗證,可以再細分為使用者是否可以登入sql sever 使用者是否可以登入到指定的目標資料庫等。授權 已通過身份驗證的使用者,檢查其所被賦予的許可權,是否可以訪問或者執行目標的物件 3...

第九章 引用

引用擁有指標的所有功能,只是語法更加的簡單 1 引用就是別名,變數的另外乙個名字,變數和別名它們的位址是一樣的,操作別名就是操作變數 2 引用就是別名常量,一旦引用被初始化就不能再改變了 可以理解為指標常量,指向的值不能改變,能改變的只是它的該位址處的值 3 引用物件huamn mike human...

第九章 介面

1 介面前面可以用pullic private 修飾,但是介面裡面的域預設是public static final的,即使該域是乙個內部介面也是public的,不寫代表是public而不是protected,成員變數儲存 在靜態區域.介面裡面的方法預設是public的,可以不寫,因此實現該介面的類的...