初级汇编程序(三)

本文介绍了如何用汇编语言编程实现将内存BUF1中的10个字节数据移至BUF2,通过典型的循环结构进行逐个字符传输,并探讨了更高效的串传输方法,展示了成功传输后的内存状态。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

三、循环程序和串的传送程序

编程实现将内存BUF1中的10个字节移至内存BUF2中。

data segment
    buf1 db 'ABCDEFGHIJ'
    buf2 db 10 dup(?)
data ends
code segment
    assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    lea si,buf1;将buf1的地址送si
    lea di,buf2;将buf2的地址送di
    mov cx,10;共传送10个字节
lop:
    mov al,[si]
    mov [di],al;[si]->[di]
    inc si;[si]+1->si
    inc di;[di]+1->di
    dec cx;[cx]-1->cx
    jnz lop;cx不为0时跳转到lop
    mov ah,4ch
    int 21h
code ends
end start

典型的循环结构,接下来看结果:
这里写图片描述
可以看到,前面的41-4A为buf1,后面的41-4A为buf2

可能你会觉得这样逐个字符传输太麻烦,那么就可以使用串的传输:

data segment
    buf1 db 'ABCDEFGHIJ'
    buf2 db 10 dup(?)
data ends
code segment
    assume cs:code,ds:data
start:
    mov ax,data
    mov ds,ax
    lea si,buf1
    lea di,buf2
    mov cx,10
    cld;置DF=0,传操作处理方向从最低地址逐个处理
    rep movsb;以字节传输,每传输一个字符执行:ds->es,di+1,si+1
              cx=0时退出rep循环
    mov ah,4ch
    int 21h
code ends
end start

结果:

这里写图片描述

注意这里是ES段,可以看到000A~0013的位置就是buf2,即传输成功!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值