1.数据块传送
(1)将数据段中3000H单元开始存放的10个数(8位数)传送到4200H开始的10个字节中。
代码:
assume cs:codesg
codesg segment
start: mov cx,10
mov si,4200H
mov bx,3000H
s: mov al,[bx]
mov ah,0
mov [si],al
inc bx
inc si
loop s
mov ax,4c00H
int 21h
codesg ends
end start
结果:
(2)将数据段DATA1中的10个字数据(16位数)传送到数据段DATA2中。
这十个数假设为0123h,0342h,0987h,0333h,0abch,0,1,2,3,4
代码:
assume cs:codesg,ds : data
data segment
DATA1 dw 0123h,0342h,0987h,0333h,0abch,0,1,2,3,4
DATA2 dw 10 dup(0)
data ends
codesg segment
start: mov ax,data
mov ds,ax
mov cx,10
mov bx,0
s: mov ax,[offset DATA1+bx]
mov [offset DATA2+bx],ax
add bx,2
loop s
mov ax,4c00H
int 21h
codesg ends
end start
运行结果;
2.存储访问
任务:Data 开始的存储单元中存放两位十六进制数值,两个数做相加后存入到SUM 存储单元中
代码:
assume cs:codesg,ds : data
data segment
DATA1 dw 0123h
DATA2 dw 0342h
SUM dw 1 DUP(0)
data ends
codesg segment
start: mov ax,data
mov ds,ax
mov si,offset DATA1
mov ax,[si]
mov si,offset DATA2
mov bx,[si]
add ax,bx
mov si,offset SUM
mov [si],ax
mov ax,4c00H
int 21h
codesg ends
end start
运行结果:
3.实验心得
要注意各个寻址方式的不同,ds段地址不能直接mov传递,要通过ax作为媒介传递,offset作用是取得标号的偏移地址。通过本次实验,使我更加深入了解了其知识体系和计算机组成及内部程序执行的原理。对于各命令的熟练掌握后,自己亲自动手实验更是体会到了各命令的用途及执行的方法。