Fork me on GitHub

汇编:将指定的内存中连续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

 

posted @ 2019-01-09 20:46  粥里有勺糖  阅读(438)  评论(0编辑  收藏  举报