si和di是8086cpu中和必须功能最相近的寄存器,si和di不能给凤城二个8位寄存器来使用。下面3组指令实现了相同的功能。
1:
mov bx,0
mov ax,[bx] ;ax=16*ds+bx
2:
mov si,0
mov ax,[si] ;ax=16*ds+si
3:
mov di,0
mov ax,[di] ;ax=16*ds+di
4:
mov bx,0
mov ax,[bx+123] ;ax=(16*ds)+(bx+123)
5:
mov s1,0
mov ax,[si+123] ;ax=(16*ds)+(si+123)
6:
mov di,0
1:
mov bx,0
mov ax,[bx] ;ax=16*ds+bx
2:
mov si,0
mov ax,[si] ;ax=16*ds+si
3:
mov di,0
mov ax,[di] ;ax=16*ds+di
4:
mov bx,0
mov ax,[bx+123] ;ax=(16*ds)+(bx+123)
5:
mov s1,0
mov ax,[si+123] ;ax=(16*ds)+(si+123)
6:
mov di,0
mov ax,[di+123] ;ax=(16*ds)+(di+123)
;将'welcome to masm!'复制到后面的数据中
assume cs:code,ds:data
data segment
db 'welcome to masm!' ;16字节
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
mov di,16
s:
mov ax,[si]
mov [di],ax
add si,2
add di,2
lo