数据块移动,要求将指定区的数据搬移到另一块内存空间 求问程序哪里有错QWQ

本文介绍了一个使用汇编语言实现的数据复制程序示例,该程序将源缓冲区BUF1中的数据复制到目标缓冲区BUF2中,并通过打印功能显示了BUF2的内容。文章通过CMPS指令判断数据段的顺序并选择不同的复制方式,提供了两种循环方法来完成数据的逐字节复制。

STACK1 SEGMENT STACK

DW 256 DUP($)

STACK1 ENDS

DATA SEGMENT

MES1 DB 'The data in buf2 are:',0AH,0DH,'$'

BUF1 DB 11H,22H,33H,44H,55H,66H,77H,88H,99H,0AAH,0BBH,0CCH,0DDH,0EEH,0FFH,00H

BUF2 DB 20H DUP(0)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:

    MOV AX,DATA

    MOV DS,AX

    MOV SI,OFFSET BUF1

    MOV DI,OFFSET BUF2

    CMP SI,DI;判断数据段的先后顺序,决定首端移动或是尾端移动

    JG  LABEL1

    MOV CX,20H

  LOOPER:

    MOV BX,CX

    MOV CX,SI[BX]

    MOV DI[BX],CX

    PUSH DI[BX]

    INC BX

    CALL PRINT

    LOOP LOOPER

    JMP LAST

  LABEL1:

    MOV BX,20H

    SUB BX,CX

    MOV CX,SI[BX]

    MOV DI[BX],CX

    PUSH DI[BX]

    DEC BX

    CALL PRINT

    LOOP LABEL1

    JMP LAST

  LAST:

    RET

PRINT PROC

    POP DI[BX]

    PUSH AX

    MOV DX,DI

    MOV AL,02H

    INT 21H

    POP AX

    RET

PRINT ENDP

CODE ENDS

END START

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值