資源描述:
《《X86指令系統(tǒng)》PPT課件》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、8086指令系統(tǒng)§1數(shù)據(jù)類型§2指令格式§3尋址方式§4指令系統(tǒng)(指令簡表)§1數(shù)據(jù)類型變量定義不區(qū)分是否是有符號數(shù)是否是有符號數(shù)由程序自己控制位數(shù)無符號數(shù)有符號數(shù)字節(jié)80~255-128~127字160~65535-32768~32767雙字320~232-1-231~231-1字符按字節(jié)算,長度<64K§2指令格式名稱指令參數(shù)1,參數(shù)2;注釋名稱若是變量名(變量定義),后無冒號名稱若是標號(轉(zhuǎn)移入口),后有冒號,例:VarDW1234HLabel0:MOVAX,Var參數(shù)(操作數(shù))之間用逗號隔開§3尋址方式寄存器尋址:MOVAX,BX立即數(shù):MOVAL,3內(nèi)存尋址:最多由3部分組成:基址(
2、BX或BP)、變址(SI或DI)及偏移量組成直接尋址(只有偏移):MOVAL,[1234](Debug),在匯編中用變量名代替寄存器間接(有基址或變址之一):MOVAL,[BX]基址加變址:MOVAL,[BX+DI]相對(基址或變址+偏移):MOVAL,[SI+2]基址加變址相對(3部分都有):MOVAL,[SI+BP+4]段寄存器的使用默認段寄存器以BP為間接尋址的為SS其它的為使用DS若需要改變段寄存器,在內(nèi)存前增加前綴即可,如:MOVAL,CS:[SI]386+還可以使用新增的兩個寄存器FS與GS在DEBUG中,段前綴為單獨的一條指令§4指令系統(tǒng)數(shù)據(jù)傳送IO算術(shù)運算邏輯運算移位串操作程序
3、轉(zhuǎn)移其它數(shù)據(jù)傳送MOVX1,X2PUSHXPOPXXCHGX1,X2XLATLEAR,MLDSR,MLESR,MLAHFSAHFPUSHFPOPFIOINAL,PINAX,POUTP,ALOUTP,AX算術(shù)運算ADDX1,X2ADCX1,X2SUBX1,X2SBBX1,X2AAADAAINCXDECXCMPX1,X2MULXIMULXDIVXIDIVXCBWCWD邏輯運算NOTXANDX1,X2ORX1,X2XORX1,X2TESTX1,X2NEGX移位SALX,NSHLX,NSARX,NSHRX,NROLX,NRORX,NRCLX,NRCRX,N串操作MOVSLODSSTOSCMPSSCAS
4、REP/REPE/REPNZ程序轉(zhuǎn)移CALL目標RETIRETJMP目標LOOP目標LOOPZ/LOOPELOOPNZ/LOOPNEINTnINTO條件轉(zhuǎn)移(只能近轉(zhuǎn)移)JCXZ目標JZ/JEJNZ/JNEJA/JNBEJBE/JNAJB/JNAEJNB/JAEJG/JNELJNG/JELJL/JNEGJNL/JEG其它CLCCMCSTCCLDSTDCLISTINOPHLTESCMOV不能用任何指令直接修改CS源與目標應(yīng)要相同的數(shù)據(jù)長度,若兩者都為不確定內(nèi)容(立即數(shù)或內(nèi)存),用用PTR指定類型,例:MOVBYTEPTR[SI],1不能直接傳送:立即數(shù)到段寄存器、內(nèi)存到內(nèi)存PUSH/POP入棧出
5、棧應(yīng)配對使用,后進先出的原則8086一次只能用16位寄存器或內(nèi)存SS:SP為堆棧指針,壓入一個,SP減2286開始可以PUSH立即數(shù)386開始可以操作32位寄存器與內(nèi)存XLATXLAT為查表指令相當于MOVAL,[BX+AL](但沒此指令)例:查表求平方:TABLEDB0,1,4,9,16,25,36,49,64,81MOVBX,OFFSETTABLE;起始地址MOVAL,7;查7的平方XLAT;結(jié)果49已經(jīng)在AL中LEA格式:LEAR16,M功能:取內(nèi)存地址與MOV不同,MOV取值,LEA取地址LEAAX,OFFSETV與LEAAX,V的結(jié)果相同,但是兩種不同的辦法可以用LEAAX,[SI+
6、3],但MOVAX,SI+3是錯的LDS/LES格式:LDS寄存器,內(nèi)存功能:內(nèi)存的低16位送寄存器,高16為送DS寄存器只能是16位的LAHF/SAHF/PUSHF/POPF專門針對標志寄存器的操作LAHF:把標志的低8位(有SZAPC標志位)保存到AH中SAHF:把AH中的值恢復到標志的低8位中PUSHF:16位標志寄存器入棧POPF:16位標志寄存器出棧IN/OUTI/O指令的尋址空間為64K,不需要段INAL,n只能尋址地址為0-255的端口INAL,[DX]可以尋址高端口地址ADD/ADC格式:ADDX1,X2功能:相加結(jié)果放X1X1可為R/M,X2可為R/M/nADC在相加后還要加
7、上進位位,若多字相加,先最低字用ADD,高字用ADCSUB/SBB格式、功能與ADD/ADC類似SBB在相減后,還要再減去進位位有符號數(shù)與無符號數(shù)的加減使用相同的指令。無符號數(shù)加減進位為1表示溢出有符號數(shù)加減溢出位為1表示溢出INC/DEC格式:INCX/DECX功能:加一、減一X可為R或M不影響進位標志位CFCMP格式與標志位影響同SUB結(jié)果不變一般用于轉(zhuǎn)移判斷,緊跟條件轉(zhuǎn)移指令AAA/DAA/