精品国产成人一区二区三区-女子十八毛片-欧洲性猛交-无码不卡一区二区三区在线观看-www.四虎在线-伊人网国产-国精产品自偷自偷综合下载-不卡av网站-俄罗斯黄色大片-一本久久知道综合久久-国产精品日韩一区二区-日韩精品色-免费人成网ww555kkk在线-黄色在线观看免费-日韩在线免费-久久久久99人妻一区二区三区-十八禁真人啪啪免费网站

機電之家資源網
單片機首頁|單片機基礎|單片機應用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓信息
贊助商
匯編語言指令
匯編語言指令
 更新時間:2008-7-26 19:36:26  點擊數:3
【字體: 字體顏色

指令系統(tǒng)確定了CPU所能完成的功能,是用匯編語言進行程序設計的最基本部分。如果不熟悉匯編指令的功能及其有關規(guī)定,那么,肯定不能靈活運用匯編語言。所以,本章的內容是學習本課程的重點和難點。
5.1 
匯編語言指令格式
為了介紹指令系統(tǒng)中指令的功能,先要清楚匯編語言是如何書寫指令的,這就象在學習高級語言程序設計時,要清楚高級語言語句的語義、語法及其相關規(guī)定一樣。
5.1.1 
指令格式
匯編語言的指令格式如下:
指令助憶符 [操作數1 [, 操作數2 [, 操作數3]]]   [;注釋]
指令助憶符體現該指令的功能,它對應一條二進制編碼的機器指令。指令的操作數個數由該指令的確定,可以沒有操作數,也可以有一個、二個或三個操作數。絕大多數指令的操作數要顯式的寫出來,但也有指令的操作數是隱含的,不需要在指令中寫出。
當指令含有操作數,并要求在指令中顯式地寫出來時,則在書寫時必須遵守:
指令助憶符和操作數之間要有分隔符,分隔符可以是若干個空格或TAB鍵;
如果指令含有多個操作數,那么,操作數之間要用逗號","分開。 
指令后面還可以書寫注釋內容,不過,要在注釋之前書寫分號";"
5.1.2 
了解指令的幾個方面
學習匯編指令時,指令的功能無疑是我們學習和掌握的重點,但要準確、有效地運用這些指令,我們還要熟悉系統(tǒng)對每條指令的一些規(guī)定或約束。
歸納起來,對指令還要掌握以下幾個方面內容:
、要求指令操作數的尋址方式;
、指令對標志位的影響、標志位對指令的影響;
、指令的執(zhí)行時間,對可完成同樣功能的指令,要選用執(zhí)行時間短的指令

 

 

 

匯編指令系統(tǒng)

指令系統(tǒng)是CPU指令的集合,CPU除了具有計算功能的指令外,還有實現其它功能的指令,也有為某種特殊的應用而增設的指令。
通常,把指令按其功能分成以下幾大類:
數據傳送指令 
標志位操作指令 
算術運算指令 
邏輯運算指令 
移位操作指令 
位操作指令 
比較運算指令 
下面,我們逐一介紹每類指令中的指令。循環(huán)指令 
轉移指令 
條件設置字節(jié)指令 
字符串操作指令 
ASCII-BCD
碼運算調整指令 
處理器指令 


5.2.1 
數據傳送指令 
數據傳送指令又分為:傳送指令、交換指令、地址傳送指令、堆棧操作指令、轉換指令和I/O指令等。
除了標志位操作指令SAHFPOPF指令外,本類的其它指令都不影響標志位。
1、傳送指令MOV(Move Instruction)
傳送指令是使用最頻繁的指令,它相對于高級語言里的賦值語句。指令的格式如下:
MOV  Reg/Mem, Reg/Mem/Imm
其中:Reg—Register(寄存器)Mem—Memory(存儲器),Imm—Immediate(立即數),它們可以是8位、16位或32(特別指出其位數的除外)。在本網絡課件的網頁中,都將采用上述縮寫,此后不再說明。
指令的功能是把源操作數(第二操作數)的值傳給目的操作數(第一操作數)。指令執(zhí)行后,目的操作數的值被改變,而源操作數的值不變。在存儲單元是該指令的一個操作數時,該操作數的尋址方式可以是任意一種存儲單元尋址方式。
下面列舉幾組正確的指令例子:
源操作數是寄存器
MOV  CH, ALMOV  BP, SPMOV  ECX, EBX
MOV  DS, AXMOV  [BX], CHMOV  [BX+SI], AX
源操作數是存儲單元
MOV  AL, [100H]MOV  BX, ES:[DI]MOV  EDX, [BX]
MOV  BX, VARWMOV  AX, [BX+SI]MOV  CH, [BX+DI+100H]
其中:VARW是字類型內存變量(下同)。
源操作數是立即數
MOV  AL, 89HMOV  BX, -100HMOV  EDX, 12345678H
MOV  VARW, 200HMOV  [BX], 2345HMOV  [BX+DI], 1234H

在匯編語言中,主要的數據傳送方式如圖5.1所示。雖然一條MOV指令能實現其中大多數的數據傳送方式,但也存在MOV指令不能實現的傳送方式。

5.1 MOV指令數據傳送示意圖
MOV指令有以下幾條具體規(guī)定,其中有些規(guī)定對其它指令也同樣有效。
1)
、兩個操作數的數據類型要相同,要同為8位、16位或32位;如:MOV  BL, AX等是不正確的;
2)
、兩個操作數不能同時為段寄存器,如:MOV  ES, DS等;
3)
、代碼段寄存器CS不能為目的操作數,但可作為源操作數,如:指令MOV  CS, AX等不正確,但指令MOV  AX, CS等是正確的;
4)
、立即數不能直接傳給段寄存器,如:MOV  DS, 100H等;
5)
、立即數不能作為目的操作數,如:MOV  100H, AX等;
6)
、指令指針IP,不能作為MOV指令的操作數;
7)
、兩個操作數不能同時為存儲單元,如:MOV  VARA, VARB等,其中VARAVARB是同數據類型的內存變量。

對于規(guī)定2、47,我們可以用通用寄存器作為中轉來達到最終目的。表5.1列舉一個可行的解決方案,盡供參考。讀者可考慮用其它辦法來完成同樣的功能。
5.1 MOV指令的變通方法 
功能描述不正確的指令可選的解決方法
DS的值傳送給ESMOV  ES, DSMOV  AX, DS
MOV  ES, AX
100H傳給DSMOV  DS, 100HMOV  AX, 100H
MOV  DS, AX
把字變量VARB的值傳送給字變量VARAMOV  VARA, VARBMOV  AX, VARB
MOV  VARA, AX

對于情況1:不同位數數據之間的傳送問題,在80386及其以后的CPU中,增加一組新的指令——傳送-填充指令,它可把位數少的源操作數傳送給位數多的目的操作數,多出的部分按指令的規(guī)定進行填充。

 

 

傳送填充指令(MOVe-and-Fill Instruction)

2、傳送填充指令(MOVe-and-Fill Instruction)
傳送填充指令是把位數短的源操作數傳送給位數長的目的操作數。指令格式如下:
MOVSX/MOVZX  Reg/Mem, Reg/Mem/Imm
     ;80386+
其中:80386+表示80386及其之后的CPU,其它類似符號含義類同,不再說明。
指令的主要功能和限制與MOV指令類似,不同之處是:在傳送時,對目的操作數的高位進行填充。根據其填充方式,又分為:符號填充和零填充。
傳送填充指令的功能如圖5.2所示。
 
(a). MOVSX
的執(zhí)行效果 
(b). MOVZX
的執(zhí)行效果

5.2 傳送填充指令執(zhí)行過程示意圖
、符號填充指令MOVSX(Move with Sign-Extend)
MOVSX
的填充方式是:用源操作數的符號位來填充目的操作數的高位數據位。
、零填充指令MOVZX(Move with Zero-Extend)
MOVZX
的填充方式是:恒用0來填充目的操作數的高位數據位。
5.1 已知:AL=87H,指令MOVSX  CX, AL,MOVZX  DX, AL執(zhí)行后,問CXDX的值是什么?
解:根據傳送-填充指令的填充方式可知:
指令MOVSX CX, AL執(zhí)行后,(CX)=0FF87H,指令MOVZX DX, AL執(zhí)行后,(DX)=0087H
從上例可看出,兩條指令的源操作數完全一樣,但因為它們的填充方式不同,所得到的結果而就不同。
試比較下列指令,分析它們執(zhí)行結果的相同和不同之處:
MOV
 AX, 87H   MOVSX AX, 87H   MOVZX AX, 87H
3
、交換指令XCHG(Exchange Instruction)
交換指令XCHG是兩個寄存器,寄存器和內存變量之間內容的交換指令,兩個操作數的數據類型要相同。其指令格式如下:
XCHG  Reg/Mem, Reg/Mem
該指令的功能和MOV指令不同,后者是一個操作數的內容被修改,而前者是兩個操作數都會發(fā)生改變。寄存器不能是段寄存器,兩個操作數也不能同時為內存變量。
XCHG
指令的功能如圖5.3所示。
5.3 XCHG指令的執(zhí)行功能示意圖

5.2 已知:AX=5678HBX=1234H,指令XCHG  AX, BX執(zhí)行后,AXBX的值是什么?
解:這是兩個寄存器內容進行交換,指令執(zhí)行后,有:(AX)=1234H(BX)=5678H。

 

 

 

HTTP協(xié)議狀態(tài)碼的含義

"100" : Continue
"101" : witching Protocols
"200" : OK
"201" : Created
"202" : Accepted
"203" : Non-Authoritative Information
"204" : No Content
"205" : Reset Content
"206" : Partial Content
"300" : Multiple Choices
"301" : MOVed Permanently
"302" : Found
"303" : See Other
"304" : Not Modified
"305" : Use Proxy
"307" : Temporary Redirect
"400" : Bad Request
"401" : Unauthorized
"402" : Payment Required
"403" : Forbidden
"404" : Not Found
"405" : Method Not Allowed
"406" : Not Acceptable
"407" : Proxy Authentication Required
"408" : Request Time-out
"409" : Conflict
"410" : Gone
"411" : Length Required
"412" : Precondition Failed
"413" : Request Entity Too Large
"414" : Request-URI Too Large
"415" : Unsupported Media Type
"416" : Requested range not satisfiable
"417" : Expectation Failed
"500" : Internal Server Error
"501" : Not Implemented
"502" : Bad Gateway
"503" : Service Unavailable
"504" : Gateway Time-out
"505" : HTTP Version not supported

  • 上一篇: DS18B20數字溫度計使用(2)
  • 下一篇: 用51單片機實現公歷與農歷星期的轉換
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負責信息內容的真實性、準確性和合法性。
    機電之家對此不承擔任何保證責任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網站

    網站經營許可證:浙B2-20080178-1
    台北县| 巴塘县| 松滋市| 礼泉县| 雷山县| 旺苍县| 林周县| 宁德市| 上虞市| 措勤县| 体育| 宿松县| 高邑县| 淮北市| 云阳县| 绥阳县| 望谟县| 日土县| 乡城县| 南岸区| 隆林| 锦屏县| 河源市| 铁岭县| 石河子市| 日喀则市| 邓州市| 平乐县| 霍邱县| 界首市| 高安市| 上杭县| 赞皇县| 北辰区| 梁山县| 景洪市| 固镇县| 新蔡县| 永和县| 赤壁市| 黔西|