汇编 复制内存单元的内容

本文介绍了一种优化的汇编语言技巧,用于高效地复制内存单元。作者,一名五年级小学生,分享了如何通过使用两个寄存器和BX寄存器的偏移地址来改进代码,从而避免频繁修改DS寄存器,提高效率。示例展示了从内存0:200到0:23F传输数据0到63(3FH)的过程,整个操作仅需9条指令,包括退出程序的指令。
摘要由CSDN通过智能技术生成
汇编 复制内存单元的内容

大家好,我是小学五年级在读的蒟蒻,专注于后端,一起见证蒟蒻的成长,您的评论与赞与关注是我的最大动力,如有错误还请不吝赐教,万分感谢。一起支持原创吧!纯手打有笔误还望谅解。

  • 思路:通过不断调整ds的值然后配合bx寄存器不断修改基址和偏移地址
;将内存ffff:0~ffff:b的单元中数据复制到0:200~0:20b单元中
assume cs:code
code segment
    mov bx,0 ;偏移地址
    mov cx,12 ;0-b 一共12个地址

re:    mov ax,0ffffh
    mov ds,ax ;将内存ffff的基址给ds设置

    mov dl,[bx] ;将ds:[bx]位置的数据交给dl寄存器 ffff:0

    mov ax,0020h
    mov ds,ax
    mov [bx],dl ;将dl的数据放到ds:[bx]位置 0000:0

    inc bx ;将偏移地址的指针向后移动一位
    loop re

    mov ax,4c00h
    int 21h
code ends
end
  • 上面的代码需要使用寄存器一次修改两次ds的值导致效率很低,修改一下用两个寄存器存放值然后配合bx的偏移地址不断复制内存的数据

    assume cs:code
    code segment
        mov bx,0
        mov cx,12
    
        mov ax,0ffffh 
        mov ds,ax ;定义数据段
    
        mov ax,0020h
        mov es,ax ;定义附加段
    
    re:    mov dl,[bx]    ;数据复制转移
        mov es:
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小学五年级在读的蒟蒻

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值