8086指令系統(tǒng)---串處理指令
?、?串處理指令
MOVSB / MOVSW 串傳送
STOSB / STOSW 存串
LODSB / LODSW 取串
CMPSB / CMPSW 串比較
SCASB / SCASW 串掃描
⑵ 串重復(fù)前綴
REP 重復(fù)串操作
REPE / REPZ 相等/為零時(shí)重復(fù)
REPNE / REPNZ 不等/不為零時(shí)重復(fù)
?、?設(shè)置方向標(biāo)志
CLD 使DF=0
STD 使DF=1
MOVSB / MOVSW 串傳送
STOSB / STOSW 存串
LODSB / LODSW 取串
CMPSB / CMPSW 串比較
SCASB / SCASW 串掃描
⑵ 串重復(fù)前綴
REP 重復(fù)串操作
REPE / REPZ 相等/為零時(shí)重復(fù)
REPNE / REPNZ 不等/不為零時(shí)重復(fù)
?、?設(shè)置方向標(biāo)志
CLD 使DF=0
STD 使DF=1
1 設(shè)置方向標(biāo)志指令
CLD DF置0(clear direction flag)
STD DF置1(set direction flag)
為了處理連續(xù)存儲(chǔ)單元中的字符串或數(shù)串,地址指針需要連續(xù)地增量或減量,指針增量或減量決定了串處理的方向。當(dāng)用CLD指令使DF=0時(shí),源串的指針SI和目的串的指針DI自動(dòng)增量(+1或+2),當(dāng)用STD指令使DF=1時(shí),指針SI和DI自動(dòng)減量(―1或―2)。地址指針是±1還是±2,取決于串操作數(shù)是字節(jié)還是字,處理字節(jié)串時(shí),地址指針每次+1或―1,處理字串時(shí),地址指針每次+2或―2。
2 串處理指令
MOVSB / MOVSW 串傳送(move string byte/word)
執(zhí)行操作:
(ES:DI)←(DS:SI)
(SI)←(SI)±1(字節(jié))或±2(字)
(DI)←(DI)±1(字節(jié))或±2(字)
STOSB / STOSW 存串(load from string byte/word)
執(zhí)行操作:
(ES:DI)←(AL)或(AX)
(DI)←(DI)±1(字節(jié))或±2(字)
LODSB / LODSW 取串(store into string byte/word)
執(zhí)行操作:
(AL)或(AX)←(DS:SI)
(SI)←(SI)±1(字節(jié))或±2(字)
CMPSB / CMPSW 串比較(compare string byte/word)
執(zhí)行操作:
(DS:SI)-(ES:DI),根據(jù)比較的結(jié)果設(shè)置條件碼
(SI)←(SI)±1(字節(jié))或±2(字)
(DI)←(DI)±1(字節(jié))或±2(字)
SCASB / SCASW 串掃描(scan string byte/word)
執(zhí)行操作:
(AL)-(ES:DI)或(AX)-(ES:DI),根據(jù)掃描比較的結(jié)果設(shè)置條件碼
(DI)←(DI)±1(字節(jié))或±2(字)
CLD DF置0(clear direction flag)
STD DF置1(set direction flag)
為了處理連續(xù)存儲(chǔ)單元中的字符串或數(shù)串,地址指針需要連續(xù)地增量或減量,指針增量或減量決定了串處理的方向。當(dāng)用CLD指令使DF=0時(shí),源串的指針SI和目的串的指針DI自動(dòng)增量(+1或+2),當(dāng)用STD指令使DF=1時(shí),指針SI和DI自動(dòng)減量(―1或―2)。地址指針是±1還是±2,取決于串操作數(shù)是字節(jié)還是字,處理字節(jié)串時(shí),地址指針每次+1或―1,處理字串時(shí),地址指針每次+2或―2。
2 串處理指令
MOVSB / MOVSW 串傳送(move string byte/word)
執(zhí)行操作:
(ES:DI)←(DS:SI)
(SI)←(SI)±1(字節(jié))或±2(字)
(DI)←(DI)±1(字節(jié))或±2(字)
STOSB / STOSW 存串(load from string byte/word)
執(zhí)行操作:
(ES:DI)←(AL)或(AX)
(DI)←(DI)±1(字節(jié))或±2(字)
LODSB / LODSW 取串(store into string byte/word)
執(zhí)行操作:
(AL)或(AX)←(DS:SI)
(SI)←(SI)±1(字節(jié))或±2(字)
CMPSB / CMPSW 串比較(compare string byte/word)
執(zhí)行操作:
(DS:SI)-(ES:DI),根據(jù)比較的結(jié)果設(shè)置條件碼
(SI)←(SI)±1(字節(jié))或±2(字)
(DI)←(DI)±1(字節(jié))或±2(字)
SCASB / SCASW 串掃描(scan string byte/word)
執(zhí)行操作:
(AL)-(ES:DI)或(AX)-(ES:DI),根據(jù)掃描比較的結(jié)果設(shè)置條件碼
(DI)←(DI)±1(字節(jié))或±2(字)
這組串處理指令用于處理連續(xù)存儲(chǔ)單元中的字操作數(shù)或字節(jié)操作數(shù),它們有幾個(gè)共同點(diǎn):
1. 它們一般都分兩步執(zhí)行,第一步完成處理功能,如傳送、存取、比較等。第二步進(jìn)行指針修改,以指向下一個(gè)要處理的字節(jié)或字。
2. 源串必須在數(shù)據(jù)段中,目的串必須在附加段中,串處理指令隱含的尋址方式是SI和DI寄存器的間接尋址方式。源串允許使用段跨越前綴來(lái)指定段。
3. 串處理的方向取決于方向標(biāo)志DF,DF=0時(shí),地址指針SI和DI增量(+1或+2);DF=1時(shí),地址指針SI和DI減量(-1或-2)。程序員可以使用指令CLD和STD來(lái)建立方向標(biāo)志。
4. MOVS、STOS、LODS指令不影響條件碼,CMPS、SCAS指令根據(jù)比較的結(jié)果設(shè)置條件碼。
與串傳送指令MOVS和串存入指令STOS聯(lián)用的重復(fù)前綴是REP,取串指令LODS一般不加重復(fù)前綴。 與串比較指令和串掃描指令聯(lián)用的重復(fù)前綴是REPE(REPZ)或REPNE(REPNZ)。
REP 重復(fù)執(zhí)行串指令,(CX)=重復(fù)次數(shù)
執(zhí)行操作:
?、?(CX)=0時(shí),串指令執(zhí)行完畢,否則執(zhí)行② ~ ④
② (CX)←(CX)-1
?、?執(zhí)行串指令(MOVS或STOS)
④ 重復(fù)執(zhí)行①
REPE / REPZ 相等/為零時(shí)重復(fù)執(zhí)行串指令,(CX)=比較/掃描的次數(shù)
執(zhí)行操作:
?、?(CX)=0或ZF=0時(shí),結(jié)束執(zhí)行串指令,否則繼續(xù)② ~ ④
?、?(CX)←(CX)-1
③ 執(zhí)行串指令(CMPS或SCAS)
?、?重復(fù)執(zhí)行①
REPNE / REPNZ 不等/不為零時(shí)重復(fù)執(zhí)行串指令,(CX)=比較/掃描的次數(shù)
執(zhí)行操作:
?、?(CX)=0或ZF=1,結(jié)束執(zhí)行串指令,否則繼續(xù)② ~ ④
?、?(CX)←(CX)-1
?、?執(zhí)行串指令(CMPS或SCAS)
?、?重復(fù)執(zhí)行①
REP對(duì)其后的串指令(MOVS或STOS)只有一個(gè)結(jié)束條件,即重復(fù)次數(shù)(CX)=0。在進(jìn)行串比較和串掃描時(shí),串指令前應(yīng)加前綴REPE(REPZ)或REPNE(REPNZ),這兩條重復(fù)前綴用重復(fù)次數(shù)(CX)和比較結(jié)果(ZF)來(lái)控制串指令的結(jié)束。當(dāng)(CX)=0時(shí),說(shuō)明每個(gè)串?dāng)?shù)據(jù)都比較(或掃描)過(guò)了,此時(shí)串操作正常結(jié)束;當(dāng)因ZF=1或0而結(jié)束串操作時(shí),說(shuō)明在滿足比較結(jié)果相等或不等的條件下,可提前結(jié)束串操作。
關(guān)鍵詞:
8086指令系統(tǒng)串處理指
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開(kāi)關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開(kāi)發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論