movsb

movsb 的意思是 move string byte
翻译为:字节传送指令

配合cx寄存器和rep movsb这个指令,还可以实现批量复制。
执行完movsb或者rep movsb指令,sidi 的值会增加 1,或者减少 1,这取决于 DF 标志位到底是 1 还是 0


movsb

movsb 的意思是 mov string word
翻译为:字传送指令

也就是比 movsb 每次多传送 1 个字节。
配合 cx 寄存器和 rep movsw 这个指令,也可以实现批量复制。
执行完 movsw 或者 rep movsw 指令,sidi 的值会增加 2,或者减少 2,这取决于 DF 标志位到底是 1 还是 0

jmp near Code 
Data:
;dw 0x1122, 0x3344, 0x5566
db 0xAA, 0x11, 0x22, 0x33, 0x44, 0x55


Code:
mov ax, 0x0050
mov es, ax    ;目标地址段寄存器初始化
mov di, 0      ;目标地址偏移寄存器初始化

mov ax, 0x07C0
mov ds, ax   ;原始地址段寄存器初始化
mov si, Data ;原始地址偏移寄存器初始化


mov cx, (Code - Data) / 2    ;一次移动一个字,所以要除2
rep movsw                    ;rep movsw是一条指令

;16位的汇编兼容8位汇编, movsw mov sb
;32位的movsd(double word)


end:
jmp 0x07C0:end

times 510 - ($ -$$) db 0x00
dw 0xAA55 ; 相当于 db 0x55,0xAA