1、SI–ds:[si]
DI–es:[di]
assume cs:code,ds:data
data segment
db 'welcome to names'
db '----------------'
data ends
stack segment stack
dw 0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,32; 栈大小
mov ax,data
mov ds,ax
mov es,ax
mov si,0
mov di,16
mov cx,8
/------------------------------------
copydat: mov dl,ds:[si];
mov es:[di],dl
add si,2
add di,2
loop copydat
-------------------------------------
copydat: push ds:[si]
pop es:[di]
add si,2
add di,2
loop copydat
-------------------------------------/
mov ax,4C00H
int 21H
code ends
end start
2、ds:[bx+si] ds:[bx+di]
ds:[bx+si+2] ds:[bx+di+3]
案例:
data段每个单词头字母大写
assume cs:code,ds:data,ss:stack
data segment
;'123456789abcdef'
db '1.file '
db '2.edit '
db '3.search '
db '4.view '
data ends
code segment
start:
mov ax,data
mov ds,ax
mov es,ax
mov bx,0
mov si,3
mov cx,4
upletter: mov dl,ds:[bx+si]
and dl,11011111B
mov es:[bx+si],dl
add bx,16
loop upletter
mov ax,4c00H
int 21H
code ends
end start
3、将单词改为大写
assume cs:code,ds:data,ss:stack
data segment
;'123456789abcdef'
db '1.ibm '
db '2.doc '
db '3.jkc '
db '4.vax '
data ends
stack segment
dw 0,0,0,0,0,0,0,0
dw 0,0,0,0,0,0,0,0
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,32
mov ax,data
mov ds,ax
mov cx,4; 4条数据
mov bx,0
mov si,3; 偏移量
upletter: push cx
push si
mov cx,3
upRow: mov dl,ds:[bx+si]
add dl,11011111B
mov es:[bx+si],dl
inc si
loop upRow
pop si
pop cx
add bx,16
loop upletter
mov ax,4c00H
int 21H
code ends
end start
4、*:mul /:div
OFFSET:
案例:
data segment
db 256 dup(0)
data ends
stack segment stack
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
s:
mov ax,bx
mov si,OFFSET s
mov di,OFFSET s0
mov dx,cs:[si]
mov cs:[di],dx
s0:
nop
nop
mov ax,4c00H
int 21H
code ends
start end
5、使用jmp指令执行后,cs,ip指向程序的第一条指令
data segment
db 0,0,0,0,0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
jmp word ptr ds:[bx+1]
mov ax,4c00H
int 21H
code ends
end start
*****************************
data segment
dd 12345678H
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
mov word ptr ds:[bx],0
mov ds:[bx+2],cs
jmp dword ptr ds:[0]
mov ax,4c00H
int 21H
code ends
end start
6、jcxz指令,在内存2000H,找值为0,将偏移地址放入
dx
assume cs:code
code segment
start:
mov ax,2000H
mov ds,ax
mov bx,0
s:
mov cx,0
mov cl,ds:[bx]
jcxz ok
inc bx
jmp s
ok:
mov dx,bx
mov ax,4c00H
int 21H
code ends
start end
7、int
data segment
db 256 dup(0)
data ends
stack segment stack
db 128 dup(0)
stack ends
code segment
start:
mov ax,stack
mov ss,ax
mov sp,128
call cpy_new_int
mov ax,4c00H
int 21H
;------------------------------
new_int:
mov ax,1000H
mov ax,1000H
mov ax,1000H
mov ax,1000H
new_int_end: nop
;------------------------------
cpy_new_int:
mov bx,cs
mov ds,bx
mov si,OFFSET new_int
mov bx,0
mov es,bx
mov di,7E00H
mov ex,OFFSET new_int_end
ret
code ends
start end