天天看點

彙編:将指定的記憶體中連續N個位元組填寫成指定的内容

1.loop指令實作

1 ;===============================
 2 ;循環程式設計
 3 ;将制定記憶體中連續count個位元組填寫成指定内容(te)
 4 ;loop指令實作
 5 DATAS SEGMENT
 6 string db 'a test string','$'
 7 te dw 'Q'   ;用于替換的字元(字)
 8 ; te db 'Q'   ;用于替換的字元(位元組)
 9 count db 5  ;連續5個位元組
10 DATAS ends
11 CODES SEGMENT
12     ASSUME CS:CODES, DS:DATAS
13     START:
14         mov AX,DATAS
15         mov DS,AX   
16 
17         xor cx,cx
18         xor ax,ax
19         mov si,offset string
20         ; mov al,te ;(位元組)
21         mov ax,te   ;用于替換的字元放入按下中
22         mov cl,count;設定循環次數
23     lp:
24         ; mov [si],Al
25         ; inc si     ;(位元組)
26         mov [si],Ax ;替換原内容 
27         add si,2    ;帶操作的記憶體的偏移位址增加
28         loop lp
29     print:
30         lea dx,string 
31         mov ah,09H
32         int 21h
33 
34     exit:
35         mov ah,4ch
36         int 21H
37 CODES ends
38     end START      

2.條件轉移指令

1 ;===============================
 2 ;循環程式設計
 3 ;将制定記憶體中連續count個位元組填寫成指定内容(te)
 4 ;條件轉移指令實作
 5 DATAS SEGMENT
 6 string db 'a test string','$'
 7 te db 'Q'   ;用于替換的字元
 8 count db 5  ;連續5個位元組
 9 DATAS ends
10 CODES SEGMENT
11     ASSUME CS:CODES, DS:DATAS
12     START:
13         mov AX,DATAS
14         mov DS,AX   
15 
16         xor cx,cx
17         xor ax,ax
18         mov si,offset string
19         mov al,te
20         mov cl,count
21     flag:
22         mov [si],al
23         inc si      ;si自增1
24         dec cl      ;cl自減1
25         cmp cl,00h
26         ja flag     ;cl大于0跳轉
27     print:
28         lea dx,string 
29         mov ah,09H
30         int 21h
31 
32     exit:
33         mov ah,4ch
34         int 21H
35 CODES ends
36     end START      

"你的指尖,擁有改變世界的力量! "

歡迎關注我的個人部落格:https://sugarat.top

繼續閱讀