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

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

生活随笔

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

综合教程

汇编语言—移位指令(如何正确学习汇编语言)

發(fā)布時(shí)間:2023/12/15 综合教程 36 生活家
生活随笔 收集整理的這篇文章主要介紹了 汇编语言—移位指令(如何正确学习汇编语言) 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

移位指令是一組經(jīng)常使用的指令,包括:算數(shù)移位、邏輯移位、雙精度移位、循環(huán)移位、帶進(jìn)位的循環(huán)移位;
移位指令都有一個(gè)指定需要移動(dòng)的二進(jìn)制位數(shù)的操作數(shù),該操作數(shù)可以是立即數(shù),也可以是CL的值;在8086中,該操作數(shù)只能是1,但是在其后的CPU中,該立即數(shù)可以是定義域[1,31]之內(nèi)的數(shù);
一、算數(shù)移位指令:
算數(shù)移位指令分為:算數(shù)左移SAL(Shift Algebraic Left)和算數(shù)右移SAR(Shift Algebraic Right);
指令格式: SAL/SAR reg/mem,CL/imm
受影響的標(biāo)志位:CF,OF,PF,SF,ZF;對(duì)AF的影響無(wú)定義;
算數(shù)左移SAL:把目的操作數(shù)的低位部分向高位方向移動(dòng)CL或imm指定的位數(shù);移位后,空出的低位部分全部用0填充;移出的高位存放在CF中;如果只向左移動(dòng)1位,那么,空出的最低位填0,移出的最高位存放在CF中;如果向左移動(dòng)N位,那么,空出的N個(gè)低位全部用0填充,移出的N個(gè)高位中,只把最后一次移出的那一位存放在CF中,即:CF中只存放最后一次移出的內(nèi)容;SAL效果如下圖所示:


算數(shù)右移SAR:把目的操作數(shù)的高位部分向低位方向移動(dòng)CL或imm指定的位數(shù);移位后,空出的高位部分全部用目的操作數(shù)原來(lái)的最高位(符號(hào)位)填充;如果只是向右移動(dòng)1位,那么,空出的最高位用目的操作數(shù)原來(lái)的最高位(符號(hào)位)來(lái)填充,移出的最低位存放到CF中;如果向右移動(dòng)N位,那么空出的N個(gè)高位全部都用目的操作數(shù)原來(lái)的最高位(符號(hào)位)填充,而移出的N個(gè)低位中,只把最后一次移出的那一位放到CF中,即:CF中存放的是最后一次移出的內(nèi)容;換句話說(shuō),算數(shù)右移時(shí),空出的高位上移入的是目的操作數(shù)原來(lái)的最高位的值,即:最高位保持不變,最低位同樣移入到CF中;算數(shù)右移常用于帶符號(hào)數(shù)的右移;SAR效果如下圖所示:


二、邏輯移位指令:
邏輯移位分為:邏輯左移SHL(Shift Logic Left)和邏輯右移SHR(Shift Logic Right);
指令格式: SHL/SHR reg/mem,CL/imm
受影響的標(biāo)志位: CF,OF,PF,SF,ZF;對(duì)AF的影響無(wú)定義;
邏輯左移SHL:把目的操作數(shù)的低位部分向高位方向移動(dòng)CL或imm指定的位數(shù);移位后,空出的低位部分全部填充0,移出的高位存放到CF中;如果向左移動(dòng)N位,則只把最后一次移出的內(nèi)容存放到CF中;SHL效果如下圖所示:


邏輯右移SHR:把目的操作數(shù)的高位部分向低位方向移動(dòng)CL或imm指定的位數(shù);移位后,空出的高位部分全部填充0,移出的低位存放到CF中;如果向右移動(dòng)N位,則只把最后一次移出的內(nèi)容存放到CF中;SHR效果如下圖所示:


三、雙精度移位指令:
分為:雙精度左移SHLD(Shift Left Double)和雙精度右移SHRD(Shift Right Double);這組指令都有三個(gè)操作數(shù);
指令格式: SHLD/SHRD reg/mem,reg,CL/imm
其中,第一操作數(shù)reg/mem是一個(gè)16位或32位的寄存器或存儲(chǔ)單元;第二操作數(shù)reg與第一操作數(shù)具有相同位數(shù),但它一定是一個(gè)寄存器;第三操作數(shù)CL/imm指定了移動(dòng)的位數(shù);
受影響的標(biāo)志位:CF,OF,PF,SF,ZF;對(duì)AF的影響無(wú)定義;
在執(zhí)行雙精度左移指令SHLD時(shí),第一操作數(shù)向左移動(dòng)N位,其”空出”的N個(gè)低位由第二操作數(shù)的高N位來(lái)填充,但是第二操作數(shù)本身并不移位、不改變;SHLD效果如下圖所示:


在執(zhí)行雙精度右移指令SHRD時(shí),第一操作數(shù)向右移動(dòng)N位,其”空出”的N個(gè)高位由第二操作數(shù)的低N位來(lái)填充,但是第二操作數(shù)本身并不移位、不改變;SHRD效果如下圖所示:


四、循環(huán)移位:
循環(huán)移位指令分為:循環(huán)左移ROL(Rotate Left)和循環(huán)右移ROR(Rotate Right);
指令格式:
ROL/ROR reg/mem,CL/imm
受影響的標(biāo)志位只有:CF、OF;
這兩條指令不會(huì)把進(jìn)位標(biāo)志CF納入循環(huán)位中;
循環(huán)左移ROL:把操作數(shù)的低位部分向高位方向循環(huán)移動(dòng)CL/imm指定的位數(shù),空出的低位部分由移出的高位部分來(lái)填充,同時(shí),移出的高位部分仍然會(huì)存放在CF中;如果是循環(huán)左移N位,那么,就空出N個(gè)低位,移出N個(gè)高位,然后,把移出的這N個(gè)高位按照移出的順序依次填入空出的N個(gè)低位中,同時(shí),CF中只保存最后一次移出的那一位的內(nèi)容;ROL效果如下圖所示:


循環(huán)右移ROR:把操作數(shù)的高位部分向低位方向循環(huán)移動(dòng)CL/imm指定的位數(shù),空出的高位部分由移出的低位部分來(lái)填充,同時(shí),移出的低位部分仍然會(huì)存放在CF中;如果是循環(huán)右移N位,那么,就空出N個(gè)高位,移出N個(gè)低位,然后,把移出的這N個(gè)低位按照移出的順序依次填入空出的N個(gè)高位中,同時(shí),CF中只保存最后一次移出的那一位的內(nèi)容;ROR效果如下圖所示:


五、帶進(jìn)位的循環(huán)移位指令:
帶進(jìn)位的循環(huán)移位指令分為:帶進(jìn)位的循環(huán)左移RCL(Rotate Left Through Carry)和帶進(jìn)位的循環(huán)右移RCR(Rotate Right Through Carry)
指令格式: RCL/ROR reg/mem,CL/imm
受影響的標(biāo)志位只有:CF,OF;
這兩條指令把進(jìn)位標(biāo)志CF納入了循環(huán)位中;
帶進(jìn)位的循環(huán)左移指令RCL:把操作數(shù)的低位部分向高位方向循環(huán)移動(dòng)CL/imm指定的位數(shù),每向左移動(dòng)一位,RCL指令都會(huì)先把CF的原有值填充到空出的最低位上,再把移出的最高位存放到CF中;這樣循環(huán)左移N位之后,CF中保存的仍然是最后一次移出的那一位的內(nèi)容;RCL效果如下圖所示:


帶進(jìn)位的循環(huán)右移指令RCR:把操作數(shù)的高位部分想低位方向循環(huán)移動(dòng)CL/imm指定的位數(shù),每向右移動(dòng)一位,RCL指令都會(huì)先把CF的原有值填充到空出的最高位上,再把移出的最低位存放到CF中;這樣循環(huán)右移N位之后,CF中保存的仍然是最后一次移出的那一位的內(nèi)容;RCR效果如下圖所示:


移位指令中,溢出標(biāo)志位OF的設(shè)置規(guī)則為:如果只移動(dòng)一位,則系統(tǒng)按照操作數(shù)的最高符號(hào)位在移位前后是否發(fā)生改變,來(lái)相應(yīng)地設(shè)置溢出標(biāo)志OF的值:如果移位前操作數(shù)的最高符號(hào)位與移位后操作數(shù)的最高符號(hào)位不相同(有變化),則設(shè)置OF=1,認(rèn)為溢出了;否則,設(shè)置OF=0,認(rèn)為沒(méi)有溢出;但是,如果移位位數(shù)大于1,則OF的值不確定;也就是說(shuō),溢出標(biāo)志OF的值只有在移位位數(shù)為1時(shí)才有意義;
進(jìn)位標(biāo)志CF的設(shè)置規(guī)則:系統(tǒng)按照移入的位來(lái)設(shè)置進(jìn)位標(biāo)志CF,根據(jù)移位后的結(jié)果影響SF,ZF,PF,而對(duì)AF的影響沒(méi)有定義;

FROM: http://bdxnote.blog.163.com/blog/static/8444235201061610333135/

總結(jié)

以上是生活随笔為你收集整理的汇编语言—移位指令(如何正确学习汇编语言)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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