汇编实验:数 据 的 建 立 与 传 送 程 序

  1. 在内存 10000H 单元开始,建立 00H~0FH~00H 31 个数,要求 00H~0FH 数据逐渐增大,0FH~00H 逐渐减小。该程序从内存 CS:0100H 地址开始输入。
  2. 把上一个程序的执行结果(建立的 31 个字节数据块,其首地址在 10000H),分几种方式传送到以下指定的区域。

(a) 该程序从内存 CS:0150H 开始输入。把数据块传送到 15050H 开始的存贮区域中。

MOV AX, 1000H
MOV DS, AX
MOV SI, 0
MOV DI, 5050H
MOV CX, 1FH ; 数据块长度是 31
PPEA: MOV AL, [SI]
MOV [DI], AL
INC SI
INC DI
LOOP PPEA
INT 20H

(b) 用串传送指令 MOVSB,把数据块传送到 15150H 开始的区域,该程序从内存CS:0200H 开始输入。

ip:0200 es:1000 di:5150
mov ax,1000
mov ds,ax
mov es,ax
mov si,0
mov di,5150
mov cx,1f
CLD
MOVSB
LOOP 
INT 20

© 用重复串操作指令“REP MOVSB”把数据块传送到 15250H 开始的区域。该程序从 CS:250H 地址开始输入。

IP:250 es:1000  di:5250
mov ax,1000
mov ds,ax
mov es,ax
mov si,0
mov di,5250
mov cx,1f
cld
rep movsb
INT 20

(d) 用串操作的减量工作方式,把数据块传送到 25050H 开始的区域。该程序从 CS:0300H 开始输入。

es:2000(在这里是利用逻辑地址存储的,所以后四位的零舍掉,在第一章有讲过;逻辑地址与物理地址的互相转换;)
; di:5050  IP:300 
;注意:立即数不能直接送到段寄存器;
MOV AX,1000
MOV DS,AX
MOV AX,2505
MOV ES,AX
MOV SI,1E
MOV DI,1E
MOV CX,1F
STD
REP MOVSB
INT 20
;CLD(Clear direction flag)该指令使DF=0,在执行串操作指令时可使地址自动增量,STD(Set direction flag)该指令使DF=1,在执行串操作指令时可使地址自动减量,cli是关中断,sti是开中断。

猜你喜欢

转载自blog.csdn.net/weixin_44627672/article/details/109277129
今日推荐