LEA rep stos 指令學習

2022-08-20 04:42:15 字數 1851 閱讀 1401

lea是微機8086/8088系列的一條指令,取自英語load effective address——取有效位址,也就是取偏移位址。

指令格式如下:

lea reg16,mem

lea指令將儲存器運算元mem的4位16進製制偏移位址送到指定的暫存器。

這裡,源運算元必須是儲存器運算元,目標運算元必須是16位通用暫存器。

因該暫存器常用來作為位址指標,故在此最好選用四個間址暫存器bx,bp,si,di之一。

lea 取有效位址指令 (load effective address )

如:lea bx ,buffer

lea ax,[bx][di](j基址加變址定址)

lea dx,data [bx][si](相對基址加變址定址)

lea指令要求源運算元必須是儲存單元,而且目的運算元必須是乙個除段暫存器之外的16位或32位暫存器。

當目的運算元是16位通用暫存器時,那麼只裝入有效位址的低16位。

使用時要注意它與mov指令的區別,mov指令傳送的一般是源運算元中的內容而不是位址。

最近在學習組合語言,過程中遇到很多問題,對此在以後的隨筆會逐漸更新,這次談談mov,lea指令的區別

一,關於有沒有加上的問題

1,對於mov指令來說:

有沒有對於變數是無所謂的,其結果都是取值

如: num dw 2

mov bx,num

mov cx,[num];bx=cx=2

對於暫存器而言,有表示取位址,沒表示取值

如: num dw 2

mov ax,num

mov bx,ax;bx=2 

mov bx,[ax];mov bx;ds:[ax],這裡可能存在報錯的情況,總之大體意思能理解就行

2,對於lea指令來說:

有沒有對於變數是無所謂的,其結果都是取變數的位址,相當於指標(與mov相反)

如:num dw 2

lea  ebx,num;

lea  eax,[num];ebx=eax

對於暫存器而言,有表示取值,沒表示取位址

如:mov eax,2

mov ebx,[eax];ebx=2

mov ebx,eax;eax=位址,隨程式的不同而不同

lea     edi,[ebp-0c0h]

mov     ecx,30h

mov     eax,0cccccccch

rep stos dword ptr es:[edi]

rep指令的目的是重複其上面的指令.ecx的值是重複的次數.

stos指令的作用是將eax中的值拷貝到es:edi指向的位址.

如果設定了direction flag, 那麼edi會在該指令執行後減小,

如果沒有設定direction flag, 那麼edi的值會增加.

rep可以是任何字元傳指令(cmps, lods, movs, scas, stos)的字首.

rep能夠引發其後的字串指令被重複, 只要ecx的值不為0, 重複就會繼續.

每一次字串指令執行後, ecx的值都會減小.

stos((store into string),意思是把eax的內容拷貝到目的位址。

用法:stos dst,dst是乙個目的位址,例如:stos dword ptr es:[edi]。dword ptr字首告訴stos,一次拷貝雙字(4個位元組)的資料到目的位址。

執行stos之前必須往eax(32為暫存器)放入要拷貝的資料。上圖中,eax的內容是cccccccc,不用說都明白int3中斷。

這段**是初始化堆疊和分配區域性變數用的,往分配好的區域性變數空間放入int3中斷的原因是:防止該空間裡的東東被意外執行

參考:

linux打包指令,壓縮指令學習

compress,gzip,gcat,bzip2,bzcat 實現原理 因為檔案儲存的block性質,所以會存在儲存碎片,壓縮工具把這些沒有用的空間去除,使檔案儲存空間變小,另外一種方式是將重複的資料簡化處理 如乙個檔案在二進位制中儲存為111.111一百個1時,可以儲存為1百個1.而不是真正儲存一...

Linux指令學習

這篇部落格完全是給自己看的,一些在工作中用的指令,想到哪就寫到 或去查詢,希望自己以後能夠熟練掌握linux指令。1.使用者之間的切換指令 登入使用者 longkun,要求轉換成longquan使用者day su longqun 空格不要少 su 切換到根目錄 sudo 指令是小於root的大許可權...

Linux 指令學習

ctr alt t 開啟控制台 tab鍵檔名提示 解壓 tar.bz2 tar.gz 例 tar zxvf a.tar.gz 解壓命令使用tar 或z 解壓gz格式 或j 解壓bz2格式 或 x解壓tar格式 或 v顯示解壓資訊 或 f指向檔案 解壓檔名 壓縮檔案 tar zcvf a.tar.gz...