日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

汇编工具

發(fā)布時(shí)間:2023/12/25 综合教程 26 生活家
生活随笔 收集整理的這篇文章主要介紹了 汇编工具 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

【常見(jiàn)的基本匯編書(shū)籍】

《Windows.環(huán)境下32位匯編語(yǔ)言程序設(shè)計(jì)(第2版)》

《匯編語(yǔ)言編程藝術(shù)》

《Intel匯編語(yǔ)言程序設(shè)計(jì)(第四版)》

《Intel匯編語(yǔ)言程序設(shè)計(jì)(第五版)范例》

《80×86匯編語(yǔ)言程序設(shè)計(jì)教程》

《IBM.PC.匯編語(yǔ)言程序設(shè)計(jì)(第五版)》

《Microsoft MASM手冊(cè)》

《Intel? 64 and IA-32 Architectures Software Developer’s Manuals》


回頁(yè)首

【匯編編譯器】

MASM32

MASM6.0

NASM-Win32

NASM-DOS

NASM-Linux

TASM5.0

簡(jiǎn)易MASM附帶Turbo Debugger

Windows環(huán)境下編寫(xiě)匯編程序的工具


回頁(yè)首

匯編語(yǔ)言網(wǎng)站

編程中國(guó)>>技術(shù)教程>>開(kāi)發(fā)語(yǔ)言>>匯編 http://www.bccn.net/Article/kfyy/hb/

匯編網(wǎng) http://www.asmedu.net/

80×86匯編小站 www.x86asm.com/

AoGo匯編小站 http://www.aogosoft.com/

Assembly Language for Intel-BasedComputers http://kipirvine.com/asm/

NASM http://www.nasm.us/

Assembly Language Programming – MASM& Intel Docs http://web.sau.edu/LillisKevinM/csci240/masmdocs/


回頁(yè)首

一些博客帖子

自己寫(xiě)的一個(gè)匯編計(jì)算器 http://blog.csdn.net/KingWolfOfSky/archive/2009/11/11/4800028.aspx

Linux匯編語(yǔ)言開(kāi)發(fā)指南 http://blog.csdn.net/KingWolfOfSky/archive/2009/08/09/4427623.aspx

創(chuàng)建Win32圖形界面應(yīng)用程序 http://blog.csdn.net/KingWolfOfSky/archive/2009/08/07/4423958.aspx

架設(shè)WIN32匯編程序的開(kāi)發(fā)環(huán)境 http://blog.csdn.net/KingWolfOfSky/archive/2009/07/23/4375411.aspx

匯編初學(xué)者問(wèn)題合集 http://blog.csdn.net/mydo/archive/2007/09/07/1776304.aspx

[幽默機(jī)智問(wèn)答]匯編系列,給初學(xué)者 http://topic.csdn.net/u/20080423/21/e1fa715d-9613-4b8d-aa69-58b6f95be894.html

從匯編分析Win32消息原理 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74531.html

用匯編寫(xiě)特殊要求的strlen http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74530.html
8051存儲(chǔ)器 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74495.html

8051尋址方式 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74494.html

GCC內(nèi)聯(lián)匯編基礎(chǔ)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74493.html
匯編的角度來(lái)理解數(shù)組與指針http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74390.html
從匯編語(yǔ)言翻譯到c語(yǔ)言代碼http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74492.html
函數(shù)調(diào)用得到傳遞參數(shù)的想法 http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74491.html

匯編語(yǔ)言寫(xiě)ESMTP電子郵件發(fā)送程序http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74529.html

使用Mutex防止程序運(yùn)行兩次http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74489.html

匯編開(kāi)發(fā)的進(jìn)制輸出的程序http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74528.html

匯編實(shí)現(xiàn):接受一個(gè)小寫(xiě)字母輸出對(duì)應(yīng)大寫(xiě)字母http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74488.html
接受一個(gè)小寫(xiě)字母,找出前個(gè)字符和后續(xù)字符http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74487.html

匯編排序&查找實(shí)例http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74486.html

16位數(shù)拆分為4組實(shí)例代碼http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74485.html

不定參函數(shù)實(shí)現(xiàn)方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74389.html

反匯編激活成功教程Radmin密碼實(shí)例http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74484.html

對(duì)話框代碼模塊源碼(匯編) http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyuanma/2009/0316/74555.html

MASM32編程讀取網(wǎng)站首頁(yè)代碼http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyuanma/2009/0316/74554.html

Win32匯編讀者/寫(xiě)者,寫(xiě)者具有優(yōu)先權(quán)的問(wèn)題http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74387.html

匯編程序在屏幕顯示字符的源代碼http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyuanma/2009/0316/74553.html

echo命令基礎(chǔ)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74377.html

”VB“版的匯編環(huán)境的配置方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianyingyong/2009/0316/74527.html

程序轉(zhuǎn)移指令http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74376.html

匯編語(yǔ)言串指令http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74375.html

匯編語(yǔ)言邏輯運(yùn)算指令http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74374.html

匯編語(yǔ)言算術(shù)運(yùn)算指令http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74373.html

常見(jiàn)修改(機(jī)器碼)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74372.html

需要熟練掌握的全部匯編知識(shí)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74371.html

匯編語(yǔ)言經(jīng)典句式http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74370.html

斷點(diǎn)設(shè)置表http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74369.html

匯編基礎(chǔ)資料速查http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74478.html

用內(nèi)聯(lián)匯編判斷整數(shù)計(jì)算是否產(chǎn)生進(jìn)位借位或溢出http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74477.html

泛型類型的子類及通配符的使用http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74368.html

win32下使用內(nèi)存映射文件http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74367.html

直接系統(tǒng)服務(wù)(Direct System Service)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74366.html

時(shí)鐘服務(wù)(Clock Service——INT 1AH)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74365.html

并行口服務(wù)(Parallel Port Service——INT 17H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74364.html

鍵盤(pán)服務(wù)(Keyboard Service——INT 16H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74363.html

雜項(xiàng)系統(tǒng)服務(wù)(Miscellaneous System Service——INThttp://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74362.html

串行口服務(wù)(Serial Port Service——INT 14H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74361.html

直接磁盤(pán)服務(wù)(Direct Disk Service——INT 13H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74360.html

顯示服務(wù)(Video Service——INT 10H)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74359.html

其它DOS中斷http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74358.html

鼠標(biāo)功能中斷INT 33Hhttp://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74357.html

時(shí)間和日期功能(Time and Date Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74356.html

進(jìn)程控制功能(Process-Control Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74355.html

系統(tǒng)功能(System Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74354.html

內(nèi)存分配功能(Memory-Allocation Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74353.html

記錄操作功能(FCB)(Record Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74352.html

文件操作功能(FCB)(File Operation Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74350.html

磁盤(pán)管理功能(Disk-Management Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74348.html

目錄控制功能(Directory-Control Function)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74347.html

字符功能調(diào)用類(Character-OrientedFunction)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74346.html

鼠標(biāo)中斷實(shí)例學(xué)習(xí)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74475.html

斷點(diǎn)設(shè)置原理http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74345.html

ESP定律手工脫殼方法步驟http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74474.html

匯編中的管道操作方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74343.html

匯編進(jìn)程控制的實(shí)現(xiàn)方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74342.html

匯編中使用定時(shí)器的方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74341.html

匯編復(fù)雜形狀的窗口實(shí)例學(xué)習(xí)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74340.html

匯編圖形界面的操作http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74339.html

控件的子類化http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74338.html

工具欄和狀態(tài)欄的使用http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74337.html

匯編菜單和加速鍵http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74336.html

匯編語(yǔ)言中窗口的基本知識(shí)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74335.html

檢測(cè)不了的錯(cuò)誤現(xiàn)象及解決方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianshili/2009/0316/74473.html

匯編基礎(chǔ)-對(duì)話框和資源文件的使用http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74334.html

Win32匯編程序的結(jié)構(gòu)和語(yǔ)法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74333.html

Win32匯編的環(huán)境和基礎(chǔ)http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74332.html

常量符號(hào)定義方法http://coderarea.net/html/bianchengyuyan/huibianyuyan/huibianrumen/2009/0316/74331.html


回頁(yè)首

常見(jiàn)的匯編指令

一、通用數(shù)據(jù)傳送指令

1、傳送指令MOV (move)

指令的匯編格式:MOV DST,SRC
指令的基本 功能:(DST)<-(SRC)將原操作數(shù)(字節(jié)或字)傳送到目的地址。
指令支持的尋址方式:目的操作數(shù)和源操作數(shù)不能同時(shí)用存儲(chǔ)器尋址 方式,這個(gè)限制適用于所有指令。
指令的執(zhí)行對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特殊要求:目的操作數(shù)DST和源操作數(shù)SRC不允許同時(shí)為段寄存器;
目的操作數(shù)DST不能是CS,也不能用立即數(shù)方式。

2、進(jìn)棧指令PUSH (push onto the stack)
出棧指令POP (pop from the stack)

指令的匯編格式:PUSH SRC;POP DST
指令的基本功能:PUSH指令在程序中常用來(lái)暫存某些數(shù)據(jù),而POP指令又可將這些數(shù)據(jù)恢復(fù)。
PUSH SRC (SP)<-(SP)-2;(SP)<-(SRC)
POP DST (DST)<-((SP));(SP)<-(SP)
指令支持的尋址方式:push和pop指令不能不能使用立即數(shù)尋址方式。
指 令對(duì)標(biāo)志位的影響:PUSH和POP指令都不影響標(biāo)志位。
指令的特殊要求:PUSH和POP指令只能是字操作,因此,存取字?jǐn)?shù)據(jù)后,SP的修改必須是+2或者-2;
POP指令的DST不允許是CS寄存器;

3、 交換指令XCHG (exchange)

指令的匯編格式:XCHG OPR1,OPR2
指令的基本功能:(OPR1)<->(OPR2)
指令支持的尋址方式:一個(gè)操作數(shù)必須在寄存器中,另一個(gè)操作數(shù)可以在寄存器或存儲(chǔ)器中。
指令 對(duì)標(biāo)志位的影戲:不影響標(biāo)志位。
指令的特殊要求:不允許使用段寄存器。

二、累加器專用傳送指令

4、輸入指令I(lǐng)N (input)
輸出指令OUT (output)

指令的匯編格式:IN ac,port port<=0FFH
IN ac,DX port>0FFH
OUT port,ac port<=0FFH
OUT DX,ac port>0FFH
指令的基本功能:對(duì)8086及其后繼機(jī)型的微處理機(jī),所有I/O端口與CPU之間的通信都由輸入輸出指令I(lǐng)N和OUT來(lái)完成。IN指令將信息從I/O輸入到CPU,OUT指令將信息從CPU輸出到I/O端口,因此,IN和OUT指令都要指出I/O端口地址。
IN ac,port port<=0FFH (AL)<-(port)傳送字節(jié) 或(AX)<-(port+1,port)傳送字
IN ac,DX port>0FFH (AL)<-((DX))傳送字節(jié) 或(AX)<-((DX)+1,(DX))傳送字
OUT port,ac port<=0FFH (port)<-(AL)傳送字節(jié) 或(port+1,port)<-(AX)傳送字
OUT DX,ac port>0FFH (DX)<-(AL)傳送字節(jié) 或((DX)+1,(DX))<-(AX)傳送字
指令對(duì) 標(biāo)志位的影響:不影響標(biāo)志位。
指令的特殊要求:只限于在AL或AX與I/O端口之間傳送信息。
傳送16位信息用AX,傳送8位信息用AL,這取決于外設(shè)端口的寬度。

5、換碼指令XLAT (translate)

指令的匯編格式:XLAT opr或XLAT
指令的基本功能:這條指令根據(jù)AL寄存器提供的位移量,將BX指使的字節(jié)表格中的代碼換存在AL中。
(AL)<-((DS)*16+(BX)+(AL))
指 令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特殊要求:所建字節(jié)表格的長(zhǎng)度不能超過(guò)256字節(jié),因?yàn)榇娣盼灰屏康氖?位寄存器AL。
opr為 表格的首地址,因?yàn)閛pr所表示的偏移地址已存入BX寄存器,所以opr在換碼指令中可有可無(wú),有則提高程序的可讀性。

三、地址傳送指令

6、 有效地址傳送器LEA (load effective address)

指令的匯編格式:LEA reg,src
指令的基本 功能:LEA指令把源操作數(shù)的有效地址送到指定的寄存器,這個(gè)有效地址是由src選定的一種存儲(chǔ)器尋址方式確定的。
指令支持的尋址方式:各種存儲(chǔ) 器尋址方式。
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特出要求:指令中reg不能是段寄存器;

7、指針?biāo)图拇嫫骱虳S LDS (load DS with point)
指針?biāo)图拇嫫骱虴S LES (load ES with point)
指令的匯編 格式:LDS reg,src
LES reg,src
指令的基本功能:LDS和LES指令把確定內(nèi)存單元位置的偏移地址送寄存器,段地址DS或ES。這個(gè)偏移地址和段地址(也稱地址指針)是由src指定的兩個(gè)相繼字單元提供的。
LDS reg,src (reg)<-(src) (DS)<-(src+2)
LES reg,src (reg)<-(src) (ES)<-(src+2)
指令支持的尋址方式:src必須為存儲(chǔ)器尋址方式
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。
指令的特 殊要求:指令中REG不能是段寄存器;

四、標(biāo)志寄存器傳送指令

8、標(biāo)志寄存器的低字節(jié)送AH LAHF (load AH with FLAGS)

指令的匯編格式:LAHF
指令的基本功能:(AH)<-(FLAGS)0-7
指令對(duì) 標(biāo)志位的影響:不影響標(biāo)志位

9、AH送標(biāo)志寄存器低字節(jié)SAHF(store AHinto FLAGS)

指令的匯 編格式:SAHF
指令的基本功能:(FLAGS)0-7<-(AH)
指令對(duì)標(biāo)志位的影響:由裝入值來(lái)確定標(biāo)志位的值。

10、 標(biāo)志進(jìn)棧PUSHF (push the flags)

指令的匯編格式:PUSHF
指令的基本功能:(SP)<-(SP)-2 ((SP)+1,(SP))<-(FLAGS)0-15
指令對(duì)標(biāo)志位的影響:不影響標(biāo)志位。

11、 標(biāo)志出棧POPF (pop the FLAGES)

指令的匯編格式:POPF
指令的基本功能:(FLAGS)0-15<-((SP)+1,(SP)) (SP)<-(SP)+2
指令對(duì)標(biāo)志位的影響:由裝入值來(lái)確定標(biāo)志位的值。

[算 術(shù)指令]

一、加法指令

12、加法指令A(yù)DD (addition)

指令的匯編格式:add dst,src
指令的基本功能:(dst)<-(src)+(dst)
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。 即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:

SF=1加法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0加法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1加法結(jié)果為零
ZF=0加法結(jié)果不為零
CF=1最高有效位向高位有進(jìn)位
CF=0最高有效位向高位無(wú)進(jìn)位
OF=1兩個(gè)同符號(hào)數(shù)相加(正數(shù)+正數(shù) 或 負(fù)數(shù)+負(fù)數(shù)),結(jié)果符號(hào)與其相反。
OF=0兩個(gè)不同符號(hào)數(shù)相加,或同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相同。

13、帶進(jìn)為加法指令A(yù)DC (add with carry)

指令的匯編格式:ADD dst,src
指令的基本功能:(dst)<-(src)+(dst)+CF
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外, 源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1加法結(jié)果為負(fù)數(shù)
SF=0加法結(jié)果為正數(shù)
ZF=1加法結(jié)果為零
ZF=0加法結(jié)果不為零
CF=1最高有效位向高位有進(jìn)位
CF=0最低有效位相高位無(wú)進(jìn)位
OF=1兩個(gè)同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相反,
OF=0兩個(gè)同符號(hào)數(shù)相加,或同符號(hào)相加,結(jié)果符號(hào)與其相同

14、加1指令I(lǐng)NC (increament)
指令的匯編格式:INC opr
指令的基本功能:(opr)<-(opr)
指令支持的尋址方式 可以使用除立即數(shù)方式外的任何尋址方式
指令對(duì)標(biāo)志位的影響:SF=1加法結(jié)果為負(fù)數(shù)
SF=0加法結(jié)果為正數(shù)
ZF=1加法結(jié)果為零
ZF=0加法結(jié)果不為零
OF=1兩個(gè)同符號(hào)數(shù)相加,結(jié)果符號(hào)與其相反,
OF=0兩個(gè)同符號(hào)數(shù)相加,或同符號(hào)相加,結(jié)果符號(hào)與其相同。

二、減法指令

15、減法指令SUB (subtract)

指 令的匯編格式:SUB dst,src
指令的基本功能:(dst)<-(dst)-(src)
指令支持的尋址方式:他們兩個(gè)操作數(shù) 不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1減法結(jié)果為零
ZF=0減法結(jié)果不為零
CF=1二進(jìn)制減法運(yùn)算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0二進(jìn)制減法運(yùn)算中最高有效為向高位無(wú)借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。

16、 帶借位減法指令SBB (subtract with borrow)

指令的匯編格式:SBB dst,src
指令的基本功 能:(dst)<-(dst)-(src)-CF
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況 外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1減法結(jié)果為零
ZF=0減法結(jié)果不為零
CF=1二進(jìn)制減法運(yùn)算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0二進(jìn)制減法運(yùn)算中最高有效為向高位無(wú)借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。

17、 減1指令DEC (decrement)

指令的匯編格式:DEC opr
指令的基本功能:(opr)<-(opr)-1
指 令支持的尋址方式:可以使用除立即數(shù)方式外的任何尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1減法結(jié)果為零
ZF=0減法結(jié)果不為零
OF=1兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。

18、 比較指令CMP (compare)

指令的匯編格式:CMP opr1,opr2
指令的基本功能:(opr1)-(opr2),根據(jù)相減結(jié)果設(shè)置條件碼,但不回送結(jié)果。
指令支持的尋址方式:他們兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù) 為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:SF=1減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1減法結(jié)果為零
ZF=0減法結(jié)果不為零
CF=1二進(jìn)制減法運(yùn)算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0二進(jìn)制減法運(yùn)算中最高有效為向高位無(wú)借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。

19、 求補(bǔ)指令NEG (negate)

指令的匯編格式:NEG opr
指令的基本功能:(opr)<- -(opr)
指 令支持的尋址方式:可以使用除立即數(shù)方式外的任何尋址方式。
指令對(duì)標(biāo)志位的影響:CF=1不為0的操作數(shù)求補(bǔ)時(shí)
CF=0為0的操作數(shù)求補(bǔ)時(shí)
OF=1操作數(shù)為-128(字節(jié)運(yùn)算)或操作數(shù)為-32768(字運(yùn)算)
OF=0當(dāng)求補(bǔ)運(yùn)算的操作數(shù)不為-128(字節(jié))或-32768(字)時(shí)

三、乘法指令

20、無(wú)符號(hào)乘法指令NUL (unsigned multiple)
有符號(hào)乘法指令I(lǐng)MUL(signed muliple)

指令的匯編格式:NUL src
IMUL src
指令的基本功能:(AX)<-(AL)*(src)
(DX,AX)<-(AX)*(src)
指 令支持的尋址方式:src可以使用除立即數(shù)方式以外的任一種尋址方式。
指令對(duì)標(biāo)志位的影響:乘法指令只影響標(biāo)志位CF和OF,其他條件碼位無(wú)定義。
MUL指令的條件碼設(shè)置為:
CF OF=0 0乘積的高一半為0(字節(jié)操作的(AH)或字操作的(DX))
CF OF=1 1乘積的高一半不為0
IMUL指令的條件碼設(shè)置為:
CF OF=0 0乘積的高一半為低一半的符號(hào)擴(kuò)展.
CF OF=1 1其他情況
指令的特殊要求:MUL和IMUL指令的區(qū)別僅在于操作數(shù)是無(wú)符號(hào)還是帶符號(hào)數(shù),它們的共同點(diǎn)是,指令中只給出源操作數(shù)src,目的操 作數(shù)是隱含的,它只能是累加器(字運(yùn)算為AX,字節(jié)運(yùn)算為AL)。隱含的乘積寄存器是AX或DX(高位)和AX(低位)。

四、符 號(hào)擴(kuò)展指令

21、節(jié)擴(kuò)展為字CBW (convert byte to word)

指令的匯編格式:CBW
指 令的基本功能:(AH)=00H當(dāng)(AL)的最高有效位為0時(shí)
(AH)=FFH當(dāng)(AL)的最高有效位為1時(shí)
指令對(duì)標(biāo)志位的影響:不 影響標(biāo)志位
指令的特殊要求:這是條無(wú)操作數(shù)的指令,進(jìn)行符號(hào)擴(kuò)展的操作數(shù)必須存放在AL寄存器或AX寄存器中。

22、字?jǐn)U展為雙 字CWD (convert word to double word)

指令的匯編格式:CWD
指令的基本功能:(DX)=0000H當(dāng)(AX)的最高有效位為0時(shí)
(DX)=FFFFH當(dāng)(AX)的最高有效位為1時(shí)
指令對(duì)標(biāo)志位的影響:不影響標(biāo) 志位
指令的特殊要求:這是條無(wú)操作數(shù)的指令,進(jìn)行符號(hào)擴(kuò)展的操作數(shù)必須存放在AL寄存器或AX寄存器中。

五、除法指令

23、 無(wú)符號(hào)數(shù)除法DIV (unsigned divide)
帶符號(hào)數(shù)除法IDIV (singed divide)

指令的匯編 格式:DIV src
IDIV src
指令的基本功能:字操作
(AL)<-(AX)/src的商
(AH)<-(AX)/src的余數(shù)
字節(jié)操作
(AX)<-(DX,AX)/src的商
(DX)<-(DX,AX)/src的余數(shù)
指令支持 的尋址方式:src作為除數(shù),可用除立即數(shù)以外的任一種尋址方式來(lái)取得。
指令對(duì)標(biāo)志位的影響:不影響條件碼。
指令的特殊要求:除法指令要 求字操作時(shí),被除數(shù)必須為32位,除數(shù)是16位,商和余數(shù)是16位的;
字節(jié)操作時(shí),被除數(shù)必須為16位,除數(shù)是8位,得到的商和余數(shù)是8位的。

六、 十進(jìn)制調(diào)整指令

[邏輯指令]

一、邏輯運(yùn)算

24、邏輯與AND (logic and)

指 令的匯編格式:AND dst,src
指令的基本功能:(dst)<-(dst)與(src)
指令支持的尋址方式:兩個(gè)操作數(shù)不能 同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目地操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:指令執(zhí)行后CF和OF置零,AF無(wú)定義。
SF=1指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1指令執(zhí)行后的結(jié)果為零
ZF=0指令執(zhí)行后的結(jié)果不為零
PF=1結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0

25、邏輯或OR (logic or)

指令的匯編格式:OR dst,src
指 令的基本功能:(dst)<-(dst)或(src)
指令支持的尋址方式:兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況 外,原操作數(shù)和目的操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:令執(zhí)行后CF和OF置零,AF無(wú)定義。
SF=1指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1指令執(zhí)行后的結(jié)果為零
ZF=0指令執(zhí)行后的結(jié)果不為零
PF=1結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0

26、 邏輯非NOT (logic not)

指令的匯編格式:NOT orc
指令的基本功能:(dst)<-(opr)
指 令支持的尋址方式:除立即數(shù)尋址方式以外的其余尋址方式
指令對(duì)標(biāo)志位的影響:對(duì)標(biāo)志位無(wú)影響

27、異或XOR (exclusice or)

指令的匯編格式:XOR dst,src
指令的基本功能:(dst)<-(dst)異或(src)
指令支持的尋址方式:兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋址。即為除源操作數(shù)為立即數(shù)的情況外,原操作數(shù)和目的操作數(shù)必須有一個(gè)寄存器尋址方 式。
指令對(duì)標(biāo)志位的影響:令執(zhí)行后CF和OF置零,AF無(wú)定義。
SF=1指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1指令執(zhí)行后的結(jié)果為零
ZF=0指令執(zhí)行后的結(jié)果不為零
PF=1結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0

28、測(cè)試指令TEST

指令的 匯編格式:TEST opr1,opr2
指令的基本功能:(opr1)與(opr2)
指令支持的尋址方式:兩個(gè)操作數(shù)不能同時(shí)為存儲(chǔ)器尋 址,即為除源操作數(shù)為立即數(shù)的情況外,源操作數(shù)和目的操作數(shù)必須有一個(gè)寄存器尋址方式。
指令對(duì)標(biāo)志位的影響:令執(zhí)行后CF和OF置零,AF無(wú)定義。
SF=1指令執(zhí)行后的結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0指令執(zhí)行后的結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1指令執(zhí)行后的結(jié)果為零
ZF=0指令執(zhí)行后的結(jié)果不為零
PF=1結(jié)果操作數(shù)中1的個(gè)數(shù)為偶數(shù)時(shí)置1
PF=0結(jié)果操作數(shù)中1的個(gè)數(shù)為奇數(shù)時(shí)置0

二、移位指令

29、邏輯左移SHL (shift logical left)

指 令的匯編格式:SHL dst,cnt
指令的基本功能:SHL指令向左逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最低位用0來(lái)補(bǔ)充,最高位移入CF。
指 令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫(xiě)在指令中,cnt〉1時(shí),cnt必須 放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。

30、邏輯右移SHR (shift logical right)

指令的匯編格式:SHR dst,cnt
指令的基本功能:SHR指令向右逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最高位用0來(lái)補(bǔ)充,最低位移入CF。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位 數(shù))cnt=1時(shí),1可以直接寫(xiě)在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果 設(shè)置。

31、算術(shù)左移SAL (shift arithmetic left)

指令的匯編格式:SAL dst cnt
指令的基本功能:SAL指令向左逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最低位用0來(lái)補(bǔ)充,最高位移入CF。
指令支持的尋址方式:目的 操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫(xiě)在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指 令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。

32、算術(shù)右移SAR (shift arithmetic right)

指令的匯編格式:SAR dst,cnt
指令的基本功能:SAR指令向右逐位移動(dòng)cnt次,每次逐位移動(dòng)后,最高位用符號(hào)位來(lái)補(bǔ)充,最低位移入CF。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移位次數(shù)(或位 數(shù))cnt=1時(shí),1可以直接寫(xiě)在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果 設(shè)置。

33、循環(huán)左移ROL (rotate left)

指令的匯編格式:ROL dst,cnt
指令的基本 功能:ROL對(duì)由dst指定的寄存器或存儲(chǔ)器操作數(shù)左移循環(huán)移動(dòng)cnt所指定的次數(shù),每左移一次,把最高位同時(shí)移入CF和操作數(shù)最低位。
指令支 持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移動(dòng)次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫(xiě)在指令中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。

34、循環(huán)右移ROR (rotate right)

指令的匯編格式:ROR dst,cnt
指令的基本功能:ROR對(duì)由dst指定的寄存器或存儲(chǔ)器操作數(shù)右移循環(huán)移動(dòng)cnt所指定的次數(shù),每右移一次,把最低位同時(shí)移入CF和操作數(shù)最高位。
指令支持的尋址方式: 目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移動(dòng)次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫(xiě)在指令中,cnt>1時(shí),cnt必須放入CL寄存 器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值
OF=1當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),移動(dòng)時(shí)最高位的值未發(fā)生變化。
SF、ZF、PF根據(jù)移動(dòng)后的結(jié)果設(shè)置。

35、帶進(jìn)位的循環(huán)左移RCL (rotate left through carry)

指令的匯編格式:RCL dst,cnt
指令的基本功能:RCL對(duì)由dst指定的寄存器或存儲(chǔ)器操作數(shù),連同進(jìn)位標(biāo)志CF左循環(huán)移動(dòng),m所指定的次數(shù),每左移一次,把操作數(shù)的最高位移入CF,而CF中原有內(nèi)容移入操作 數(shù)的最低位。
指定支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移動(dòng)次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫(xiě)在指令 中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值。
OF=1當(dāng)cnt=1時(shí),移動(dòng)后最高位的值未發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),移動(dòng)后最高位的值發(fā)生變化。
SF、ZF、PF標(biāo)志位不受影響。

36、 帶進(jìn)位的循環(huán)右移RCR (rotate right through carry)

指令的匯編格式:RCR dst,cnt
指 令的基本功能:RCR對(duì)由dst指定的寄存器或存儲(chǔ)器操作數(shù),連同進(jìn)位標(biāo)志CF右循環(huán)移動(dòng),m所指定的次數(shù),每右移一次,把操作數(shù)的最高低位移入CF,而CF中原有內(nèi)容移入操 作數(shù)的最高位。
指令支持的尋址方式:目的操作數(shù)dst可以是除立即數(shù)外的任何尋址方式。移動(dòng)次數(shù)(或位數(shù))cnt=1時(shí),1可以直接寫(xiě)入指令 中,cnt〉1時(shí),cnt必須放入CL寄存器中。
指令對(duì)標(biāo)志位的影響:CF=移入的數(shù)值。
OF=1當(dāng)cnt=1時(shí),操作數(shù)最高位的值未發(fā)生變化。
OF=0當(dāng)cnt=1時(shí),操作數(shù)最高位的值發(fā)生變化。
SF、ZF、PF標(biāo)志位不受影響。

[串 處理指令]

一、設(shè)置方向標(biāo)志指令

37、DF置零CLD (clear directionflag)
DF置 一STD (set direction flag)

指令的匯編格式:CLD
STD
指令的基本功能:CLD DF=0
STD DF=1

二、串處理指令

38、串傳送MOVSB / MOVSW (move string byte/word)

指 令的匯編格式:MOVSB
MOVSW
指令的基本功能:(ES:DI)<-(DS:SI)
(SI)<-(SI)+/-1(字 節(jié))或+/-2(字)
(DI)<-(DI)+/-1(字節(jié))或+/-2(字)
指令對(duì)條件碼的影響:不影響條件碼。
指令的特 殊要求:源串必須在數(shù)據(jù)段中,目的串必須在附加段中,串處理指令隱含的尋址方式是SI和DI寄存器的間接尋址方式。源串允許使用段跨越前綴來(lái)指定段。

39、 存串STOSB / STOSW (stroe from string byte/word)

指令的匯編格式:STOSB
STOSW
指 令的基本功能:(ES:DI)<-(AL)或(AX)
(DI)<-(DI)+/-1(字節(jié))或+/-2(字)
指令對(duì)條件碼的 影響:不影響條件碼。
指令的特殊要求:源串必須在數(shù)據(jù)段中,目的串必須在附加段中,串處理指令隱含的尋址方式是SI和DI寄存器的間接尋址方式。 源串允許使用段跨越前綴來(lái)指定段。

40、取串LODSB / LODSW (load from string byte/word)

指 令的匯編格式:LODSB
LODSW
指令的基本功能:(AL)或(AX)<-(DS:SI)
(SI)<-(SI)+/-1(字 節(jié))或+/-2(字)
指令對(duì)條件碼的影響:不影響條件碼。
指令的特殊要求:源串必須在數(shù)據(jù)段中,目的串必須在附加段中,串處理指令隱含的 尋址方式是SI和DI寄存器的間接尋址方式。源串允許使用段跨越前綴來(lái)指定段。

41、串比較CMPSB / CMPSW (compare string byte/word)

指令的匯編格式:CMPSB
CMPSW
指令的基本功能:(DS:SI)-(ES:DI)根據(jù)比較結(jié)果設(shè)置條件碼
(SI)<-(SI)+/-1(字節(jié))或+/-2(字)
(DI)<-(DI)+/-1(字 節(jié))或+/-2(字)
指令對(duì)條件碼的影響:SF=1減法結(jié)果為負(fù)數(shù)(符號(hào)位為1)
SF=0減法結(jié)果為正數(shù)(符號(hào)位為0)
ZF=1減法結(jié)果為零
ZF=0減法結(jié)果不為零
CF=1二進(jìn)制減法運(yùn)算中最高有效位向高位有借位(被減數(shù)小于減數(shù),不夠減的情況)
CF=0二進(jìn)制減法運(yùn)算中最高有效為向高位無(wú)借位(被減數(shù)〉=減數(shù),夠減的情況)
OF=1兩數(shù)符號(hào)相反(正數(shù)-負(fù)數(shù),或負(fù)數(shù)-正數(shù)),而結(jié)果符號(hào)與減數(shù)相同。
OF=0同符號(hào)數(shù)相減時(shí),或不同符號(hào)數(shù)相減,其結(jié)果符號(hào)與減數(shù)不同。

三、 循環(huán)指令

68、循環(huán)LOOP (loop)
指令的匯編格式:LOOP label
指令的基本功能:① (CX)←(CX)-1
②若(CX)≠0,則(IP)←(IP)當(dāng)前+位移量,否則循環(huán)結(jié)束。
指令的特殊要求:循環(huán)指 令都是短轉(zhuǎn)移格式的指令,也就是說(shuō),位移量是用8位帶符號(hào)數(shù)來(lái)表示的,轉(zhuǎn)向地址在相對(duì)于當(dāng)前IP值的-128 ~+127字節(jié)范圍之內(nèi)。

69、 為零/相等時(shí)循環(huán)LOOPZ/LOOPE (loopwhile nonzero or equal)
指令的匯編格 式:LOOPNZ/LOOPNE label
指令的基本功能:① (CX)←(CX)-1
②若ZF=1且(CX)≠0,則(IP)←(IP)當(dāng)前+位移量,否則循環(huán)結(jié)束。
指令的特殊要求:循環(huán)指令都是短轉(zhuǎn)移格式的指令,也就是說(shuō),位移量 是用8位帶符號(hào)數(shù)來(lái)表示的,轉(zhuǎn)向地址在相對(duì)于當(dāng)前IP值的-128 ~+127字節(jié)范圍之內(nèi)。

70、不為零/不相等時(shí)循環(huán)LOOPNZ/LOOPNE(loop while nonzero or not equal)
指令的匯編格式:LOOPNZ/LOOPNE label
指令的基本功能:① (CX)←(CX)-1
②若ZF=0且(CX)≠0,則(IP)←(IP)當(dāng)前+位移量,否則循環(huán)結(jié)束。
指令的特殊要求:循環(huán)指令都是短轉(zhuǎn)移格式的指令,也就是說(shuō),位移量 是用8位帶符號(hào)數(shù)來(lái)表示的,轉(zhuǎn)向地址在相對(duì)于當(dāng)前IP值的-128 ~+127字節(jié)范圍之內(nèi)。


回頁(yè)首

CPU常見(jiàn)寄存器介紹

32位CPU所含有的寄存器有:

4個(gè)數(shù)據(jù)寄存器(EAX、EBX、ECX和EDX)
2個(gè)變址和指針寄存器(ESI和EDI) 2個(gè)指針寄存器(ESP和EBP)
6個(gè)段寄存器(ES、CS、SS、DS、FS和GS)
1個(gè)指令指針寄存器(EIP) 1個(gè)標(biāo)志寄存器(EFlags)

1、數(shù)據(jù)寄存器

數(shù)據(jù)寄存器主要用來(lái)保存操作數(shù)和運(yùn)算結(jié)果等信息,從而節(jié)省讀取操作數(shù)所需占用總線和訪問(wèn)存儲(chǔ)器的時(shí)間。

32位CPU有4個(gè)32位的通用寄存器EAX、EBX、ECX和EDX。對(duì)低16位數(shù)據(jù)的存取,不會(huì)影響高16位的數(shù)據(jù)。這些
低16位寄存 器分別命名為:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。

4個(gè)16位寄存器又可分割成8個(gè)獨(dú)立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每個(gè)寄
存 器都有自己的名稱,可獨(dú)立存取。程序員可利用數(shù)據(jù)寄存器的這種“可分可合”的特性,靈活地處理字/字
節(jié)的信息。

寄存器AX和AL通常稱為累加器(Accumulator),用累加器進(jìn)行的操作可能需要更少時(shí)間。累加器可用于乘、
除、輸入/輸出等 操作,它們的使用頻率很高;
寄存器BX稱為基地址寄存器(BaseRegister)。它可作為存儲(chǔ)器指針來(lái)使用;
寄存器CX稱為計(jì)數(shù)寄存器(CountRegister)。在循環(huán)和字符串操作時(shí),要用它來(lái)控制循環(huán)次數(shù);在位操作
中,當(dāng)移多位時(shí),要用CL來(lái)指明 移位的位數(shù);
寄存器DX稱為數(shù)據(jù)寄存器(DataRegister)。在進(jìn)行乘、除運(yùn)算時(shí),它可作為默認(rèn)的操作數(shù)參與運(yùn)算,也
可 用于存放I/O的端口地址。

在16位CPU中,AX、BX、CX和DX不能作為基址和變址寄存器來(lái)存放存儲(chǔ)單元的地址,但在32位CPU中,其32位
寄存器EAX、EBX、ECX和EDX不僅可傳送數(shù)據(jù)、暫存數(shù)據(jù)保存算術(shù)邏輯運(yùn)算結(jié)果,而且也可作為指針寄存器,
所以,這些32位寄存器更具有通用性。

2、變址寄存器

32位CPU有2個(gè)32位通用寄存器ESI和EDI。其低16位對(duì)應(yīng)先前CPU中的SI和DI,對(duì)低16位數(shù)據(jù)的存取,不影響
高16位的數(shù) 據(jù)。

寄存器ESI、EDI、SI和DI稱為變址寄存器(Index Register),它們主要用于存放存儲(chǔ)單元在段內(nèi)的偏移量,
用它們可實(shí) 現(xiàn)多種存儲(chǔ)器操作數(shù)的尋址方式,為以不同的地址形式訪問(wèn)存儲(chǔ)單元提供方便。

變址寄存器不可分割成8位寄存器。作為通用寄存器,也可存儲(chǔ)算術(shù)邏輯運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。

它們可作一般的存儲(chǔ)器指針使用。在字符串操作指令的執(zhí)行過(guò)程中,對(duì)它們有特定的要求,而且還具有特
殊的功能。

3、指針寄存器

32位CPU有2個(gè)32位通用寄存器EBP和ESP。其低16位對(duì)應(yīng)先前CPU中的SBP和SP,對(duì)低16位數(shù)據(jù)的存取,不影
響高16位的 數(shù)據(jù)。

寄存器EBP、ESP、BP和SP稱為指針寄存器(Pointer Register),主要用于存放堆棧內(nèi)存儲(chǔ)單元的偏移量,
用它們可實(shí) 現(xiàn)多種存儲(chǔ)器操作數(shù)的尋址方式,為以不同的地址形式訪問(wèn)存儲(chǔ)單元提供方便。

指針寄存器不可分割成8位寄存器。作為通用寄存器,也可存儲(chǔ)算術(shù)邏輯運(yùn)算的操作數(shù)和運(yùn)算結(jié)果。

它們主要用于訪問(wèn)堆棧內(nèi)的存儲(chǔ)單元,并且規(guī)定:

BP為基指針(Base Pointer)寄存器,用它可直接存取堆棧中的數(shù)據(jù);
SP為堆棧指針(Stack Pointer)寄存器,用它只可訪問(wèn)棧頂。

4、段寄存器

段寄存器是根據(jù)內(nèi)存分段的管理模式而設(shè)置的。內(nèi)存單元的物理地址由段寄存器的值和一個(gè)偏移量組合而成
的,這樣可用兩個(gè)較少位數(shù)的值組合成一 個(gè)可訪問(wèn)較大物理空間的內(nèi)存地址。

CPU內(nèi)部的段寄存器:

CS——代碼段寄存器(Code Segment Register),其值為代碼段的段值;
DS ——數(shù)據(jù)段寄存器(Data Segment Register),其值為數(shù)據(jù)段的段值;
ES——附加段寄存器(Extra Segment Register),其值為附加數(shù)據(jù)段的段值;
SS——堆棧段寄存器(Stack Segment Register),其值為堆棧段的段值;
FS——附加段寄存器(Extra Segment Register),其值為附加數(shù)據(jù)段的段值;
GS——附加段寄存器(Extra Segment Register),其值為附加數(shù)據(jù)段的段值。

在16位CPU系統(tǒng)中,它只有4個(gè)段寄存器,所以,程序在任何時(shí)刻至多有4個(gè)正在使用的段可直接訪問(wèn);在32位
微機(jī)系統(tǒng)中,它有6個(gè)段寄存 器,所以,在此環(huán)境下開(kāi)發(fā)的程序最多可同時(shí)訪問(wèn)6個(gè)段。

32位CPU有兩個(gè)不同的工作方式:實(shí)方式和保護(hù)方式。在每種方式下,段寄存器的作用是不同的。有關(guān)規(guī)定簡(jiǎn)
單描述如下:

實(shí)方式: 前4個(gè)段寄存器CS、DS、ES和SS與先前CPU中的所對(duì)應(yīng)的段寄存器的含義完全一致,內(nèi)存單元的邏輯
地址仍為“段值:偏移 量”的形式。為訪問(wèn)某內(nèi)存段內(nèi)的數(shù)據(jù),必須使用該段寄存器和存儲(chǔ)單元的偏移量。
保護(hù)方式: 在此方式下,情況要復(fù)雜得多,裝入段寄存器的不再是段值,而是稱為“選擇子”(Selector)的某個(gè)值。。

5、指令指針寄存器

32位CPU把指令指針擴(kuò)展到32位,并記作EIP,EIP的低16位與先前CPU中的IP作用相同。

指令指針EIP、IP(Instruction Pointer)是存放下次將要執(zhí)行的指令在代碼段的偏移量。在具有預(yù)取指令功
能的系統(tǒng) 中,下次要執(zhí)行的指令通常已被預(yù)取到指令隊(duì)列中,除非發(fā)生轉(zhuǎn)移情況。所以,在理解它們的功能
時(shí),不考慮存在指令隊(duì)列的情況。

在實(shí)方式下,由于每個(gè)段的最大范圍為64K,所以,EIP中的高16位肯定都為0,此時(shí),相當(dāng)于只用其低16位
的IP來(lái)反映程序中指令的執(zhí) 行次序。

6、標(biāo)志寄存器

一、運(yùn)算結(jié)果標(biāo)志位
1、進(jìn)位標(biāo)志CF(Carry Flag)
進(jìn)位標(biāo)志CF主要用來(lái)反映運(yùn)算是否產(chǎn)生進(jìn)位或借位。如果運(yùn)算結(jié)果的最 高位產(chǎn)生了一個(gè)進(jìn)位或借位,那么,其值為1,否則其值為0。

使用該標(biāo)志位的情況有:多字(字節(jié))數(shù)的加減運(yùn)算,無(wú)符號(hào)數(shù)的大小比較運(yùn)算,移位操作,字(字節(jié))之間移位,專門(mén)改變CF值的指令等。

2、奇偶標(biāo)志PF(Parity Flag)
奇偶標(biāo)志PF用于反映運(yùn)算結(jié)果中“1”的個(gè)數(shù)的奇偶性。如果“1”的個(gè)數(shù)為偶數(shù),則PF的值為1,否則其值為0。

利用PF可進(jìn)行奇偶校驗(yàn)檢查,或產(chǎn)生奇偶校驗(yàn)位。在數(shù)據(jù)傳送過(guò)程中,為了提供傳送的可靠性,如果采用奇偶校驗(yàn)的方法,就可使用該標(biāo)志位。

3、輔助進(jìn)位標(biāo)志AF(Auxiliary Carry Flag)
在發(fā)生下列情況時(shí),輔助進(jìn)位標(biāo)志AF的值被置為1,否則其值為0:

(1)、在字操作時(shí),發(fā)生低字節(jié)向高字節(jié)進(jìn)位或借位時(shí);
(2)、在字節(jié)操作時(shí),發(fā)生低4位向高4位進(jìn)位或借位時(shí)。

對(duì)以上6個(gè)運(yùn)算結(jié)果標(biāo)志位,在一般編程情況下,標(biāo)志位CF、ZF、SF和OF的使用頻率較高,而標(biāo)志位PF和AF的使用頻率較低。

4、零標(biāo)志ZF(Zero Flag)
零標(biāo)志ZF用來(lái)反映運(yùn)算結(jié)果是否為0。如果運(yùn)算結(jié)果為0,則其值為1,否則其值為0。在判斷運(yùn)算結(jié)果是否為0時(shí),可使用此標(biāo)志位。

5、符號(hào)標(biāo)志SF(Sign Flag)
符號(hào)標(biāo)志SF用來(lái)反映運(yùn)算結(jié)果的符號(hào)位,它與運(yùn)算結(jié)果的最高位相同。在微機(jī)系統(tǒng)中,有符號(hào)數(shù)采用補(bǔ) 碼表示法,所以,SF也就反映運(yùn)算結(jié)果的正負(fù)號(hào)。運(yùn)算結(jié)果為正數(shù)時(shí),SF的值為0,否則其值為1。

6、溢出標(biāo)志OF(Overflow Flag)
溢出標(biāo)志OF用于反映有符號(hào)數(shù)加減運(yùn)算所得結(jié)果是否溢出。如果運(yùn)算結(jié)果超過(guò)當(dāng)前運(yùn)算位數(shù)所 能表示的范圍,則稱為溢出,OF的值被置為1,否則,OF的值被清為0。

“溢出”和“進(jìn)位”是兩個(gè)不同含義的概念,不要混淆。如果不太清楚的話,請(qǐng)查閱《計(jì)算機(jī)組成原理》課程中的有關(guān)章節(jié)。

二、狀態(tài)控制標(biāo)志位
狀態(tài)控制標(biāo)志位是用來(lái)控制CPU操作的,它們要通過(guò)專門(mén)的指令才能使之發(fā)生改變。

1、追蹤標(biāo)志TF(Trap Flag)
當(dāng)追蹤標(biāo)志TF被置為1時(shí),CPU進(jìn)入單步執(zhí)行方式,即每執(zhí)行一條指令,產(chǎn)生一個(gè)單步中斷請(qǐng)求。這 種方式主要用于程序的調(diào)試。

指令系統(tǒng)中沒(méi)有專門(mén)的指令來(lái)改變標(biāo)志位TF的值,但程序員可用其它辦法來(lái)改變其值。

2、中斷允許標(biāo)志IF(Interrupt-enable Flag)
中斷允許標(biāo)志IF是用來(lái)決定CPU是否響應(yīng)CPU外部的可屏蔽中斷發(fā) 出的中斷請(qǐng)求。但不管該標(biāo)志為何值,CPU都必須響應(yīng)CPU外部的不可屏蔽中斷所發(fā)出的中斷請(qǐng)求,以及CPU內(nèi)部產(chǎn)生的中斷請(qǐng)求。具體規(guī)定如下:

(1)、當(dāng)IF=1時(shí),CPU可以響應(yīng)CPU外部的可屏蔽中斷發(fā)出的中斷請(qǐng)求;

(2)、當(dāng)IF=0時(shí),CPU不響應(yīng)CPU外部的可屏蔽中斷發(fā)出的中斷請(qǐng)求。

CPU的指令系統(tǒng)中也有專門(mén)的指令來(lái)改變標(biāo)志位IF的值。

3、方向標(biāo)志DF(Direction Flag)
方向標(biāo)志DF用來(lái)決定在串操作指令執(zhí)行時(shí)有關(guān)指針寄存器發(fā)生調(diào)整的方向。具體規(guī)定在第5.2.11節(jié)——字符串操作指令——中給出。在微機(jī)的指令系統(tǒng)中,還提供了專門(mén)的指令來(lái)改變標(biāo)志位DF的值。

三、32位標(biāo)志寄存器增加的標(biāo)志位
1、I/O特權(quán)標(biāo)志IOPL(I/O PrivilegeLevel)
I/O特權(quán)標(biāo)志用兩位二 進(jìn)制位來(lái)表示,也稱為I/O特權(quán)級(jí)字段。該字段指定了要求執(zhí)行I/O指令的特權(quán)級(jí)。如果當(dāng)前的特權(quán)級(jí)別在數(shù)值上小于等于IOPL的值,那么,該I/O指令 可執(zhí)行,否則將發(fā)生一個(gè)保護(hù)異常。

2、嵌套任務(wù)標(biāo)志NT(Nested Task)
嵌套任務(wù)標(biāo)志NT用來(lái)控制中斷返回指令I(lǐng)RET的執(zhí)行。具體規(guī)定如下:

(1)、當(dāng)NT=0,用堆棧中保存的值恢復(fù)EFLAGS、CS和EIP,執(zhí)行常規(guī)的中斷返回操作;

(2)、當(dāng)NT=1,通過(guò)任務(wù)轉(zhuǎn)換實(shí)現(xiàn)中斷返回。

3、重啟動(dòng)標(biāo)志RF(Restart Flag)
重啟動(dòng)標(biāo)志RF用來(lái)控制是否接受調(diào)試故障。規(guī)定:RF=0時(shí),表示“接受”調(diào)試故障,否則 拒絕之。在成功執(zhí)行完一條指令后,處理機(jī)把RF置為0,當(dāng)接受到一個(gè)非調(diào)試故障時(shí),處理機(jī)就把它置為1。

4、虛擬8086方式標(biāo)志VM(Virtual 8086 Mode)
如果該標(biāo)志的值為1,則表示處理機(jī)處于虛擬的8086方式下的工作狀態(tài),否則,處理機(jī)處于一般保護(hù)方式下的工作狀態(tài)。

轉(zhuǎn)載于:https://www.cnblogs.com/Zblogs/p/3261213.html

總結(jié)

以上是生活随笔為你收集整理的汇编工具的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。