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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

8086指令(II)

發布時間:2025/1/21 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 8086指令(II) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

算術運算指令

①加法類指令

②減法類指令

③乘法指令

④除法指令

⑤BCD嗎指令


一、加法類指令

首先我么們先看加法類指令三個(add,adc,inc)

1)不帶進位位的加法指令ADD

add用來執行2個字節或2個字的相加操作,運算時不考慮CF位


ADD DST,SRC?? ;DST<--(DST)+(SRC)


ADD影響OF,SF,ZF,AF,PF,CF標志


2)帶進位位的加法指令ADC

ADC在功能上和ADD類似,只是有一點區別,即執行ADC指令時,將進位標志CF的值加進和中。

ADC DST,SRC???????? ;DST<--(DST)+(SRC)+CF


ADC指令多用于多字節相加運算,如進行兩個8字節(64位)數據相加,應先用ADD指令將低32位相加,再用ADC指令將高32位相加,此時會把低位字節產生的進位傳遞到高位字節運算中。


ADC影響OF,SF,ZF,AF,PF,CF.標志位


3)增量指令INC

INC指令只有一個操作數,指令執行時,將操作數內容加1,


INC指令影響AF,OF,PF,SF,ZF.

注意:INC指令不影響進位標志CF


二、減法類指令(SUB,SBB,CMP,DEC,NEG)

1)比考慮借位的減法指令SUB

SUB和上面的加法類似,也是不帶借位的減

SUB [BP+2],CL?????????????? ;將ss段中的BP+2所指的單元中的值減去CL中的值,結果在BP+2所指堆棧單元中


SUB影響的標志位OF,ZF,AF,SF,PF,CF



2)考慮借位的減法指令SBB

和上面的ADC類似,就是SBB在執行減法運算時還要減去CF的值。


SBB AX,2530H?????? ;將AX中的內容減去2530H,并減去進位位CF的值

和上面類似,這里不在重復


3)減量指令DEC

這又和上面的INC類似,就是將操作數減一,同樣不會影響CF,只是執行減一而已。

和上面都一樣,這里不在重復。


4)求補指令NEC

其實我更喜歡叫它求負指令,它就是對給出的操作數求一個負,然后回送,可是機器內部是以補碼的形式存儲的,所以就是求補指令啦。


NEG影響的標志位AF,CF,ZF,PF,SF,OF'


注意:①如果操作數的值為80H、8000H、80000000H,那么執行求補指令會溢出,結果沒有變化,但溢出標志OF置1

②此指令執行時,通常使CF為1,只有當操作數為0時,CF才為0,因為此指令是用0減去某個操作數,所以除非為0,通常都會產生借位。


5)比較指令CMP

cmp也是執行兩個數相減操作,但不送回相減結果,會影響標志位

此指令會影響標志位AF,CF,OF,PF,SF,ZF


那么如果判斷比較結果呢?

答:如果比較的兩個操作數相等的話,ZF = 1,根據ZF就可判斷兩數是否相等


①兩個無符號比較

無符號相減時CF,就是借位標志,如果CF為0,表示無借位,則被減數大,若果,CF為1,則表示有借位,則減數大


②兩個有符號數比較

看符號標志SF,而符號標志SF總是和結果的最高位相同,如果SF為0,表示被減數大,如果SF為1,則表示減數大


一、乘法指令

乘法指令就兩個MUL,IMUL

①無符號乘法指令MUL


無符號字節乘法:AX <-- (AL) * (SRC)

無符號字乘法:? DX.AX <-- (AX) * (SRC)




例如:

MUL CX??????? ;ax 和 cx 中連個16位相乘,結果在dx 和 ax中,dx放高位,ax放低位


對標志位的影響:若乘積的高一半(AH/DX)為0,則OF = CF = 0,否則 OF=CF=1;



②有符號的乘法指令IMUL


有符號字節乘法:AX <-- (AL) * (SRC)

有符號字乘法 : DX.AX <-- (AX) * (SRC)


例如:

IMUL CL ???????? ;AL中與CL中的兩個8位有符號數相乘,結果在AX中


對標志位的影響:若乘積的高一半是低一半的符號擴展,則OF=CF=0;否則均為1.


乘法指令對其它標志位沒有定義,不知到到底什么值。


二、除法指令DIV,IDIV


①無符號除法DIV


無符號字節除法(AX)/(SRC) ?? AL←商,AH←余數
無符號字除法(DX.AX)/(SRC) ?? AX←商,DX←余數


例如:

DIV CL??????? ;AX中的數據除以CL中的數據,商在AL中,余數在AH中


②有符號除法IDIV

有符號字節除法(AX)/(SRC)?????????? AL←商,AH←余數
有符號字除法(DX.AX)/(SRC)???????? AX←商,DX←余數


說明:除法運算時,要求被除數的數位是除數的2倍,否則就必須將被除數進行擴展

除法運算對AF,CF,OF,PF,SF,ZF都是不確定的。


三、類型轉換指令CBW/CWD

C:convert(轉換)? B:byte(字節)?? W:word(字)????? D:double(雙字)???? 自己理解的哈!如果不對,謝謝指出

功能:就是符號擴展,將字節擴展為字,將字擴展為雙字,以適應除法運算的要求


四、BCD碼指令

實際應該叫BCD嗎調整指令,它其實就是對數據的一種調整。

可用四位2進制碼表示1個十進制碼,這個就叫做BCD碼。

BCD碼有兩類:1.組合的BCD碼(一個字節表示2位BCD碼,就是通常的8421碼),2.非組合BCD碼(1個字節只用低4位來表示BCD碼,高四位為0)。


①組合BCD加法調整指令DAA

比如:8+7 = 15

?? 0000 1000

+ 0000 0111

——————

??? 0000 1111

顯然不對,所以進行調整 ,+6,(即加上110)


9+9 = 18

?? 0000 1001

+ 0000 1001

——————

?? 0001 0010

不對,低四位向高四位進位時,內部機器是逢16進1,而BCD碼要求是逢十進一,就必須調整加上011,這是輔助進位標志AF就有用了,它如果為1,就表示有進位,這是加011,就可以調整過來了

調整:4位二進制碼對應的BCD碼大于9時,則加6調整,低四位往高四位進位時,加6調整


②組合BCD碼減法指令DAS


總結

以上是生活随笔為你收集整理的8086指令(II)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。