[055][アセンブリ言語]DFフラグとrep movsb、rep movsw

947 ワード

DFフラグビットはdi,si増減方向を決定する
mov es:[di],ds:[si]

df = 0  + +
inc di
inc si

df = 1  - -
dec di
dec si

movsbとmovsw
movsb       
rep movsb
   
s: movsb
  loop s
------------------

movsw      
rep movsw
   
s: movsw
  loop s

命令cldと命令std
8086CPU
cld df = 0 ++
std df = 1 --

プログラミング
(1)dataセグメントの最初の文字列をその後ろの空間にコピーする
  • データ
  • data segment
      db 'Welcom to masm!'
      db 16 dup (0)
    data ends
    
  • コード:フォワード転送++
  • mov ax,data
    mov ds,ax
    mov si,0
    mov es,ax
    mov di,16
    mov cx,16
    cld 
    rep movsb
    

    (2)F 000 Hセグメントの最後の16文字をdataセグメントにコピーする
  • データ
  • data segment
      db 16 dup (0)
    data ends
    
  • コード:逆転送-
  • F000H            F0000:FFFFH
    DATA            DATA:000FH
    
    mov ax,0f000H
    mov ds,ax
    mov si,0ffffH
    mov ax,data
    mov es,ax
    mov di,15
    mov cx,16
    std
    rep movsb