nasm语言进行数据批量传输

数据批量传输

主要指令

数据批量传输所使用的指令有,传输命令movsb、movsw,以及循环指令loop。

movsb(或movsw)运行时,首先会检测df标志位的值,来决定数据读取的方向。并且自动以ds:si作为数据的源地址,以es:di作为目标地址。
命令运行以后会根据df的值自动修改该si和di的值,如果df=0也就是正向传输,则si和di的值同时加1(或2)

rep指令会循环执行后面跟随的指令,会自动检测cx寄存器中的值,如果不为0,则将cx减1,同时运行后面紧跟的命令。直到cx的值为0为止。

实验代码

jmp near start ;这里使用jmp直接跳到指令部分执行,原因就是cpu分不清指令和数据,都是按照顺序执行的。如果不手动跳过数据区,cpu就会误把数据当作指令执行,造成混乱。

mytext: db 'H',0x07,'e',0x07,'l',0x07,'l',0x07,'o',0x07,' ',0x07,\
'W',0x07,'o',0x07,'r',0x07,'l',0x07,'ed',0x07,'!',0x07,'!',0x07

start:
  mov ax, 0x7c0 ;设置数据段地址为0x7c0,可以省去拼接0x7c00的步骤
  mov ds, ax

  mov ax, 0xb800 ;显示缓冲区段地址
  mov es, ax

  ;显示Label Offset:
  cld
  mov si, mytext ;ds:si
  mov di, 0 ;es:di
  mov cx, (start-mytext)/2 ;循环的次数,计算结果为13
  rep movsw ;movsw和movsb指令会自动使用es作为目的数据段,可以不用
 拼接
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值