匯編,寄存器,內存,mov指令


一.代碼 和 匯編 和 二進制之間的關系

 

 

  二.復習一下計算機組成原理的知識

1.寄存器

計算機中有三個存儲

 

 

 32位cpu提供的寄存器有三種類型8位 16位 32位

 

 

 

 64位的只是32位的擴展 並且程序大多是32位

 以下是32位的8個通用寄存器(有寬度)

 

 

2.MOV指令

 

mov eax ,1(向eax寄存器存1)

 

mov  edx , eax(把edx里面的值存到eax

 

 

 

例子:  EAX:32位通用寄存器 假如FFFFFFFF   一個F(16進制)化為2進制 1111,也就是4位

           所以為什么叫32(四個字節) ? 4*8=32

 

 

 

三.內存

1.內存

        內存空間和物理內存都不是內存條!物理內存和內存條之間還有一層映射關系。

   下面的話其實並不是真正的給每一個進程分了4g的內存條,等進程  真正要去寫/讀內存的時候就把4g內存映射到物理內存上去。

   

 

 

 

2.內存地址

內存太多起不了名字 只能用編號。

每一行的內存編號代表一個字節

 

 

 

 

 

3.mov指令向內存寫數據

與往寄存器里面寫是不一樣的 內存 eax32位 ax16位 他是自帶數據寬度的,

而內存不一樣,內存是連起來的一大片

所以 !

不同點:向內存寫的時候必須明確告訴其寬度。

byte = 1字節

word = 2字節

dword = 4字節

 

 

 

 

 

<1>

 

 

 

 那么就有一個問題,就是一行的內存地址編號是一個字節。

現在村的數據是四個字節,那么可行嗎?

可行 ,它會從你指定的內存編號接着往后寫。

 

<2>

  

 

  不可以寫成 mov dword ptr ds:[18FFFC] ,ax   寬度不一樣 

<3>

  

 

 

 

  記住一點 ,匯編里面絕大部分的指令是不可以從內存到內存。必須得經過寄存器。

  

四.內存地址的五種形式

 

 

 

 

 

 

 

 

 

 

 也就是第二種形式就是先把內存存到寄存器中去了

 

 

 

 

 

       先往寄存器寫入一個地址 然后寄存器+4,將立即數寫入(寄存器+4)后的內存地址中去

   

 

 

  第四種形式主要就是高級語言生成的數組,匯編之后就是這樣的形式

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM