SI和DI寄存器

SI和DI常执行与地址有关的操作

  • SI和DI是8086CPU中和BX功能相近的寄存器
    • 区别:(SI和DIl不能够分成两个8位寄存器来使用
  • 下面的三组指令实现了相同的功能:
    1. mov bx,0
      mov ax,[bx]
    2. mov si,0
      mov ax,[si]
    3. mov di,0
      mov ax,[di]
      1. mov bx,0
        mov ax,[bx+123]
      2. mov si,0
        mov ax,[si+123]
      3. mov di,0
        mov ax,[di+123]
  • BX:通用寄存器,在计算存储器地址时,常作为基址寄存器用
  • SI:source index,源变址寄存器
  • DI: destination in
  • dex,目标变址寄存器

应用SI和DI

  • 问题
    • 用寄存器SI和DI实现将字符串‘welcome tomasm!’复制到它后面的数据区中
    • 源数据起始地址:datasog:0
    • 目标数据起始地址:datasg:16
    • 用ds:si指向要复制的原始字符串
    • 用ds:di指向目的空间
    • 然后用一个循环来完成复制。
assume cs: codesg,ds:datasg
datasg segment
	db 'welcome to masm ! '
	db '..................'
datasg ends
codesg segment
start: 
	mov ax,datasg
    mov ds,ax
    mov si,0
    mov di,16
    mov cx,8
    
  s:mov ax,[si]
    mov [di],ax
    add si,2
    add di,2
    loop s
    
	mov ax,4c00h
	int 21h
codesg ends
end start

你可能感兴趣的:(汇编语言,数据结构)