最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

第五周 串操作指令

2021-04-22 23:56 作者:康康Loong  | 我要投稿

大家好,又是我,沉迷學(xué)習(xí)無(wú)法自拔的小笨蛋康sir。 這個(gè)文集將會(huì)同步更新我觀看吳寧老師的《微機(jī)原理與接口技術(shù)》教學(xué)視頻寫(xiě)的筆記,學(xué)習(xí)筆記,大概每周一章。 有問(wèn)題大家可以在評(píng)論下面留言討論,歡迎糾錯(cuò)! 歡迎收藏閱讀,動(dòng)動(dòng)小手給個(gè)硬幣點(diǎn)個(gè)贊。? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?——@正能量的康sir??


也可移步我的博客(https://blog.csdn.net/qq_33956508)獲得更好的閱讀體驗(yàn)(暫不更新),也會(huì)更新一些其它技術(shù)類(lèi)文章。

串操作指令說(shuō)明:

針對(duì)數(shù)據(jù)塊或字符串的操作(這類(lèi)數(shù)據(jù)在內(nèi)存中存放)

可實(shí)現(xiàn)存儲(chǔ)器到存儲(chǔ)器的數(shù)據(jù)傳送(允許兩個(gè)操作數(shù)都是存儲(chǔ)器操作數(shù))

待操作的數(shù)據(jù)串成為源串,目標(biāo)地址稱(chēng)為目標(biāo)串

? ? ? ?

? ? ? ?

串操作指令的操作對(duì)象是多個(gè)字節(jié)數(shù)(一串字符或數(shù)據(jù)),因此,指令的執(zhí)行需要確定:

串所在的區(qū)域

串的首地址

串長(zhǎng)度(大小)

串的操作方向

串操作指令的要求

串所在區(qū)域及首地址:

源串一般存放在數(shù)據(jù)段,偏移地址由SI指定,允許段重設(shè)。

目標(biāo)串必須在附加段,偏移地址由DI指定。

? ? ? ?

? ? ? ?

串長(zhǎng)度:

串長(zhǎng)度值由CX指定

串的操作方向:由DF標(biāo)志位決定。指令根據(jù)DF狀態(tài)自動(dòng)修改地址指針

DF=0——>增地址方向

DF=1——>減地址方向

通過(guò)增加重復(fù)前綴,可以實(shí)現(xiàn)對(duì)CX值的自動(dòng)修改

重復(fù)前綴:

無(wú)條件重復(fù):REP

當(dāng)CX≠0時(shí),REP后的指令將繼續(xù)重復(fù)執(zhí)行;

常用于傳送類(lèi)指令前——>未傳完則繼續(xù)傳送

條件重復(fù):

相等(為0)重復(fù):REPE(REPZ),CX≠0∩ZF=1,則前綴后的指令將繼續(xù)重復(fù)執(zhí)行

不相等(不為零)重復(fù):REPNE(REPNZ), CX≠0∩ZF=0,則前綴后的指令將繼續(xù)重復(fù)執(zhí)行

條件前綴常用于運(yùn)算類(lèi)指令前,當(dāng):1)操作未結(jié)束AND結(jié)果=0或者

2)操作未結(jié)束AND結(jié)果≠0

使其后的指令繼續(xù)重復(fù)執(zhí)行。



串操作指令

串傳送MOVS

串比較CMPS

串掃描SCAS

串裝入LODS

串送存STOS


串操作指令流程

? ? ? ?

? ?

(串操作中,完成一個(gè)字節(jié)或字操作、修改地址指針(SI、DI)是通過(guò)串操作指令實(shí)現(xiàn)的,修改串長(zhǎng)度值(修改CX)、判斷完成否 是通過(guò)重復(fù)前綴實(shí)現(xiàn)的)


? ? ? ?

? ? ? ?

因?yàn)槭窍刃薷牡刂分羔?,再判斷完成否,所以?/p>

若按增地址方向操作,串操作結(jié)束時(shí):

? 串傳送指令:指針將指向串尾+1

? 串比較類(lèi)指令:指針將指向結(jié)束位+1

若按減地址方向操作,串操作結(jié)束時(shí):

? 串傳送指令:指針將指向串尾-1

? 串比較類(lèi)指令:指針將指向結(jié)束位-1

第25講 串傳送與串比較指令

1.串傳送指令

功能:將源數(shù)據(jù)串傳送到目標(biāo)地址

格式:①M(fèi)OVS OPRD1,OPRD2即MOVS [DI],[SI];此格式僅用于源操作數(shù)需段重設(shè)的情況下。所以②③更常用

②MOVSB按字節(jié)傳送

③MOVSW按字傳送

串傳送指令常與無(wú)條件重復(fù)前綴連用


例子:分別用MOV指令和MOVS指令編寫(xiě)將200個(gè)字節(jié)數(shù)據(jù)從內(nèi)存數(shù)據(jù)段

MEM1為首地址的區(qū)域送到同一邏輯段MEM2為首地址的區(qū)域中的程

序。

LEA SI,MEM1

LEA DI,MEM2

MOV CX,200

NEXT:MOV AL,[SI]

MOV [DI],AL

INC SI

INC DI

DEC CX

JNZ NEXT

HLT

用MOVS修改

LEA SI,MEM1

LEA DI,MEM2

MOV CX,200

CLD;CLD將DF清零,表示按增地址方向操作

REP MOVSB

HLT


2.串比較指令

功能:用于實(shí)現(xiàn)兩個(gè)數(shù)據(jù)串的比較

操作:目標(biāo)串-源串,結(jié)果不寫(xiě)回目標(biāo)地址

常與條件重復(fù)前綴連用

格式:①CMPS OPRD1,OPRD2

②CMPSB

③CMPSW

注意:前綴的操作對(duì)標(biāo)志位不影響。所以標(biāo)志位完全取決于CMPS的結(jié)果。

例子:測(cè)試上例中200個(gè)字節(jié)數(shù)據(jù)是否傳送正確

LEA SI,MEM1

LEA DI,MEM2

MOV CX,200

CLD

REPE CMPSB;(用REPE或REPZ相等則重復(fù)。結(jié)束串比較指令的條件有兩種:①CX=0,意味著兩個(gè)串完全相等;②CX≠0但ZF=0,意味著碰到了不相等的字節(jié))

JZ STOP;當(dāng)ZF=1,兩數(shù)據(jù)串相同,轉(zhuǎn)移到STOP

DEC SI;指向存放不相等數(shù)據(jù)的地址。因?yàn)榇僮鲿?huì)指向最后一個(gè)字節(jié)加一的位置,那再減一就是指向存放不相等數(shù)據(jù)的地址

MOV AL,[SI]

MOV BX,SI;這兩句是獲取不相等數(shù)據(jù)及存放該數(shù)據(jù)的地址

STOP: HLT

第26講 串掃描指令

常用于在指定存儲(chǔ)區(qū)域中尋找某個(gè)關(guān)鍵字

格式:SCAS OPRD;(OPRD是目標(biāo)操作數(shù))

?SCASB

?SCASW

執(zhí)行與CMPS指令相似的操作,區(qū)別是:這里的源操作數(shù)是AX或AL

串掃描指令應(yīng)用例:

在ES段中從2000H單元開(kāi)始存放了10個(gè)字符,尋找其中有無(wú)字符“A”。若有則記下搜索次數(shù),將搜索次數(shù)寫(xiě)入到DATA1單元,并將存放“A”的地址寫(xiě)入DATA2單元。

MOV DI,2000H

MOV BX,DI;做備份

MOV CX,0AH;因?yàn)橛?0個(gè)字符所以把0AH送給CX

MOV AL,’A’

CLD

REPNZ SCASB;不相等則重復(fù) 掃描

?JZ FOUND

?MOV DI,0

?JMP DONE

FOUND:DEC DI;地址減一才是存放的地址

MOV DATA2,DI

INC DI

SUB DI,BX

DONE:MOV DATA1,DI

HLT

? ? ? ?

? ? ? ?

第27講 串裝入與串送存指令

串裝入指令

格式:LODS OPRD;源操作數(shù)

LODSB

LODSW

操作

對(duì)字節(jié):Al←[DI:SI]數(shù)據(jù)段中SI所指向單元的內(nèi)容送給AL

對(duì)字:AX←[DS:SI]數(shù)據(jù)段中SI所指向的字單元的內(nèi)容送給AX

(1)用于將內(nèi)存某個(gè)區(qū)域的數(shù)據(jù)串依次裝入累加器,以便顯示或輸出到接口。

(2)LODS指令一般不加重復(fù)前綴(會(huì)覆蓋掉原來(lái)的內(nèi)容)


串存儲(chǔ)指令

格式:STOS OPRD

STOSB

STOSW

操作:對(duì)字節(jié):Al→[ES:DI]附加段的一塊區(qū)域

對(duì)字:AX→[ES:DI]

常用于將內(nèi)存某個(gè)區(qū)域置同樣的值

此時(shí):將待送存的數(shù)據(jù)放入AL(字節(jié)數(shù))或AX(字?jǐn)?shù)據(jù));

確定操作方向(增地址/減地址)和區(qū)域大小(串長(zhǎng)度值)

使用串存儲(chǔ)指令+無(wú)條件重復(fù)前綴,實(shí)現(xiàn)數(shù)據(jù)傳送

串存儲(chǔ)指令例

將6000H:1200H單元開(kāi)始的100個(gè)字存儲(chǔ)單元格內(nèi)容清零·

分析:可以用MOV指令或串存儲(chǔ)指令實(shí)現(xiàn)

MOV AX,6000H

MOV ES,AX

MOV DI,1200H

MOV CX,100

CLD

MOV AX,0

REP STOSW

HLT


串操作指令應(yīng)用注意事項(xiàng)

需要定義附加段:目標(biāo)操作數(shù)必須在附加段(后面第四章 匯編語(yǔ)言程序設(shè)計(jì)會(huì)學(xué))

需要設(shè)置數(shù)據(jù)的操作方向:確定DF的狀態(tài)。(CLD將DF清零,增地址方向)

源串和目標(biāo)串指針?lè)謩e為SI和DI

串長(zhǎng)度值必須由CX給出

注意重復(fù)前綴的使用方法:

????除了串裝入指令以外,其他串操作指令都建議使用重復(fù)前綴簡(jiǎn)化編寫(xiě);

????傳送類(lèi)指令前加無(wú)條件重復(fù)前綴;

????串比較類(lèi)(串比較、串掃描)指令前加條件重復(fù)前綴,但前綴不影響ZF狀態(tài)。



第五周 串操作指令的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
舟曲县| 漯河市| 阿尔山市| 阜康市| 英吉沙县| 叙永县| 大悟县| 郯城县| 蛟河市| 墨玉县| 社旗县| 营口市| 蒲城县| 三门峡市| 涿鹿县| 吴堡县| 莱州市| 正镶白旗| 华安县| 吉木萨尔县| 浦北县| 龙江县| 会理县| 南京市| 马尔康县| 葫芦岛市| 长宁县| 二连浩特市| 临夏市| 文成县| 清镇市| 灵寿县| 上栗县| 得荣县| 天镇县| 东阳市| 秭归县| 九寨沟县| 应城市| 肥东县| 汝阳县|