組合語言 微機原理 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 ...