汇编---串传送指令MOVS

更新时间:2023-08-02 13:54:42 阅读: 评论:0

汇编---串传送指令MOVS儿童秋天画
题⽬
在数据段中有⼀个字符串,其长度为17,要求把它们转送到附加段中的⼀个缓冲区中,应该怎么做呢
显然这个题要使⽤串传送指令MOVS,MOVS每次传送的是⼀个字节/字,因此需要重复执⾏串传送指令才能完成⼀个数据串的传送,即是使⽤ REP MOVS 指令
执⾏ REP MOVS指令前,应先做好:
把原串⾸地址送给SI寄存器
把⽬的串⾸地址送给DI寄存器
二年级数学故事
把数据串长度放⼊CX计数寄存器读后感如何写
设置⽅向标志DX(CLD/STD)
代码:
data gment
mess1 db 'personal_computer'
data ends
extra gment
mess2 db 17dup(?);开辟17个连续的字节单元,但是⾥⾯没有内容
extra ends
code gment
assume cs:code,ds:data,es:extra  ;这是⼀条伪指令
start:
mov ax,data
mov ds,ax
mov ax,extra
mov es,ax
lea si,mess1  ;原串⾸地址送给si
lea di,mess2  ;⽬的串⾸地址送给di
日本名字大全mov cx,17;传送次数
cld            ;地址递增
rep movsb      ;完成串传送,movsb是以字节⽅式进⾏传送
mov ah,4ch
int21h
code ends
end start
怎么按照地址减⼩的⽅向来传送呢?这时需要修改的地⽅如下:
lea si,mess1+16;原串末地址送给si
lea di,mess2+16;⽬的串末地址送给di
mov cx,17
std              ;地址递减
rep movsb
能不能把原串和⽬的串放在同⼀个段来处理呢?
⽅式1:段共⽤,数据段和附加段共⽤同⼀个段。段是可以共⽤的,但是共⽤的前提是数据没有冲突,可以看到这⾥并没有冲突
data gment
抵抗mess1 db 'personal_computer'
mess2 db 17 dup(?);开辟17个连续的字节单元,但是⾥⾯没有内容
data ends
code gment
assume cs:code,ds:data,es:data  ;这是⼀条伪指令
start:
mov ax,data
mov ds,ax
mov es,ax
冬凌草片的功效与作用lea si,mess1  ;原串⾸地址送给si
lea di,mess2  ;⽬的串⾸地址送给di
mov cx,17;传送次数
cld            ;地址递增
rep movsb      ;完成串传送,movsb是以字节⽅式进⾏传送
mov ah,4ch
int 21h
code ends
end start
⽅式2:把原串和⽬的串都放在附加段,这时要格外注意修改段跨越前缀
data gment
data ends
extra gment
mess1 db 'personal_computer'
多肉如何养mess2 db 17 dup(?);开辟17个连续的字节单元,但是⾥⾯没有内容
extra ends
code gment
assume cs:code,ds:data,es:extra  ;这是⼀条伪指令
start:
mov ax,data
mov ds,ax
mov ax,extra
mov es,ax
lea si,mess1  ;原串⾸地址送给si
lea di,mess2  ;⽬的串⾸地址送给di
mov cx,17;传送次数
cld            ;地址递增
rep movsb es:byte ptr[di],es:[si]
;完成串传送,movsb是以字节⽅式进⾏传送
mov ah,4ch
宝石简笔画
int 21h
code ends
end start
本⽂为个⼈学习笔记

本文发布于:2023-08-02 13:54:42,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1105507.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:传送   地址   送给
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图