轉移指令是可以修改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的,可以不寫,因此實現該介面的類的...