《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 解決方案 > 計算機系統(tǒng)原理(十五) 數據傳送(復制)指令詳解

計算機系統(tǒng)原理(十五) 數據傳送(復制)指令詳解

2017-06-22
關鍵詞: 匯編語言

引言

上一章我們已經介紹了匯編語言的基礎部分,包括數據格式、寄存器以及操作數的標識方式,接下來我們就應該去認識一下匯編語言當中的各個指令了。這些指令大多數都非常簡單,但是組合在一起卻能模擬出我們程序當中想要的任何效果,確實是十分神奇的一件事。  

數據傳送指令

數據傳送指令的目的是為了將一個數據從一個位置復制到另外一個位置。既然如此,那么數據傳送指令就會包含一個源操作數和一個目的操作數,指令會將原操作數的值復制到目的操作數并覆蓋。

數據傳送指令一共可分為五種,分別是mov、movs、movz、push以及pop,下面LZ依次介紹一下這五個指令的作用。

mov指令

mov指令的作用是將源操作數S中的數據復制到目的操作數D中,mov指令有一個數據格式和兩個操作數,因此一般的形式為[movx S D]。其中x為數據格式,S為源操作數,D為目的操作數。

movs指令

movs指令的作用是將源操作數S中的數據做符號擴展后,再復制到目的操作數D中,movs指令有兩個數據格式和兩個操作數,因此一般的形式為[movsxy S D]。其中x、y為數據格式,S為源操作數,D為目的操作數。其中x、y的組合一共有三種,分別是bw、bl、wl,這三個組合代表的意思分別是單字節(jié)到雙字節(jié),單字節(jié)到雙字以及雙字節(jié)到雙字。

movz指令

movz指令的作用是將源操作數S做零擴展后,再復制到目的操作數中。它與movs指令十分相似,也有兩個數據格式和兩個操作數,因此一般的形式為[movzxy S D]。其中x、y為數據格式,S為源操作數,D為目的操作數。其中x、y的組合一共有三種,分別是bw、bl、wl,這三個組合代表的意思分別是單字節(jié)到雙字節(jié),單字節(jié)到雙字以及雙字節(jié)到雙字。

push指令

push指令與上面的mov族指令有著不同,它的目的操作數被固定為棧頂,因此它的指令當中沒有目的操作數。另外有一點需要注意的是,它在進行復制操作之前,需要移動棧頂指針(-4)。push指令的一般形式為[pushl S],其中l(wèi)代表數據格式為雙字,S為源操作數,目的操作數默認為棧頂。

pop指令

pop指令與push指令是做的相反的操作,一個是入棧一個是出棧。對于pop指令來講,它的源操作數被固定為棧頂,相反,它會先進行復制操作,然后再移動棧指針。pop指令的一般形式為[popl D],其中l(wèi)代表數據格式為雙字,D為目的操作數,源操作數默認為棧頂。


本站內容除特別聲明的原創(chuàng)文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創(chuàng)文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]