串操作指令2

2022-05-05 05:36:07 字數 4593 閱讀 6441

組合語言 微機原理 8086

1. movs

; multi-segment executable file template.

data segment

; add your data here!

pkey db

"press any key...$"

str1 db

"howbin"

str2 db

6 dup(0)

ends

stack segment

dw128 dup(0)

ends

code segment

start:

; set segment registers:

movax, data

movds, ax

moves, ax

;1 設定源位址暫存器

leasi,str1;

;2 設定目的暫存器

leadi,str2;

;3.設定方向

cld;std

;4.設定迴圈次數

movcx, 6

;

;5.重複頭

repmovsb

;lea

dx, str2

movah, 9

int21h

; output string at ds:dx

; wait for any key....

movah, 1

int21h

movax, 4c00h

; exit to operating system.

int21h

ends

end start ; set entry point and stop the assembler.

2 stos

; multi-segment executable file template.

data segment

; add your data here!

pkey db

"press any key...$"

str1 db

6 dup(0)

ends

stack segment

dw128 dup(0)

ends

code segment

start:

; set segment registers:

movax, data

movds, ax

moves, ax

; add your code here

;1.選型 stos stosb

;2.設定al/al填充物 al 源

moval,'h'

;;3. 設定目的

leadi, str1

;4.設定方向

cld;5.設定次數

movcx,0

movcl,6

;6.設定重複頭

repstosb

;lea

dx, pkey

movah, 9

int21h

; output string at ds:dx

; wait for any key....

movah, 1

int21h

movax, 4c00h

; exit to operating system.

int21h

ends

end start ; set entry point and stop the assembler.

3 lods

; multi-segment executable file template.

data segment

; add your data here!

pkey db

"press any key...$"

block db -1,-2,-3,0,1,2,3,4

count equ

8 dplus db count dup(0)

ends

stack segment

dw128 dup(0)

ends

code segment

start:

; set segment registers:

movax, data

movds, ax

moves, ax

; add your code here

;從字串block中取正數存入位元組串dplus中

;1. 確定取出 lodsb 確定放入 stos

;2. 設定源頭 si 目的 di

leasi,block

leadi,dplus

;3. 設定方向

cld;4. 設定次數

movcx,0

;mov

cl,count;

again:

lodsb

; cmp

al,0

jle next;

stosb

next:

loop again;

leadx, pkey

movah, 9

int21h

; output string at ds:dx

; wait for any key....

movah, 1

int21h

movax, 4c00h

; exit to operating system.

int21h

ends

end start ; set entry point and stop the assembler.

4 cmps 串比較指令

;比較等長倆個字串,判斷他們是否相等

; multi-segment executable file template.

data segment

; add your data here!

pkey db

"press any key...$"

str1 db

"abc"

str2 db

"abc"

result db dub(0);

ends

stack segment

dw128 dup(0)

ends

code segment

start:

; set segment registers:

movax, data

movds, ax

moves, ax

mov result,0

;1.選擇cmps

;2.設定源與目的

leasi,str1;

leadi,str2

;3.設定方向

cld;4.設定次數

movcx,0

;mov

cl,3

;5.執重複頭

repe

cmpsb

;;6.判斷

jnz next;

mov result,1

next:

leadx, pkey

movah, 9

int21h

; output string at ds:dx

; wait for any key....

movah, 1

int21h

movax, 4c00h

; exit to operating system.

int21h

ends

end start ; set entry point and stop the assembler.

5 scas

;從乙個字串中查詢乙個指定字元

leadi,string

moval, '' ;20h 空格

mov cl, sizeof string

cld ;設定方向

repnz scasb

jz found

.....

found:....

enter code here

6 總結

1. 串操作,確定指令

2. 根據串的位置準備ds,es(ds可超越,但是es不可以)

3. 利用了lea,或者 設定offset si,di

4. 利用 sizeof lenghof 設定cx

5. 選擇合適的rep

6. 設定不同分支程式(針對repz或者repnz)

串操作指令

指令 movsb,movsw,movsd 描述 移動字串資料,複製由esi暫存器定址的記憶體位址處的資料至edi定址的記憶體位址處。在保護模式程式中,也就是我們80386預設的啟動模式,esi自動作為由ds定址的段內偏移,edi自動作為由es定址的段內偏移,es和ds總是具有同樣的值且無法改變它們。...

8086串操作指令

1.串傳送指令movs 常與無條件重複字首rep連用 movs 運算元1 運算元2 movsb movsw 2.串比較指令cmps 常與條件重複字首repe repz 或repne repnz 連用 cmps 運算元1 運算元2 cmpsb cmpsw repe repz cx 0且zf 1時繼續迴...

Centos 操作指令 2

centos常用命令在我們的使用中,經常被使用。所以,我們對一些經常使用又很重要的centos常用命令進行了全面的整理。下面,就來介紹這些centos常用命令。一 使用centos常用命令檢視cpu more proc cpuinfo grep model name grep model name ...