专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > 汇编语言

一个汇编题,看不太明白啊该怎么处理

发布时间:2010-06-14 15:51:44 文章来源:www.iduyao.cn 采编人员:星星草
一个汇编题,看不太明白啊
现有下列数据段:
DATA SEGMENT
STR1 DB ‘ABCDEFGHIJKL’
COUNT EQU –STR1
BUF DB COUNT DUP(0)
DATA ENDS
下面程序段是实现把STR中所有字符逆向传送到BUF缓冲区(STR中第一个字符送到BUF的最后一个单元,STR中最后一字符送到BUF的第一个单元),试把程序中所空缺的指令填上。
MOV SI,OFFSET BUF-1
MOV DI,OFFSET BUF
MOV CX,COUNT
①CLD或①STD
LOOP:MOVSB
②SUB SI,2或②ADD DI,2
LOOP LOP

那个-STR什么意思?还有,是不是不完整啊,LOP没有啊
后边的SUB SI,2什么用?

------解决方案--------------------
特意拿去编译了下。

1.如果没猜错的话应该是:COUNT EQU $ - STR1
表示当前地址到STR1地址的长度,也就是求'ABCDEFGHIJKL'的长度。

2.SUB SI,2 是将SI减去2,以达到逆向传送数据的效果


因为实现逆向复制数据有2种方法,一种就是自己用loop循环,从最高地址开始,每次循环进行减,直到到达最低位置;另一种就是利用movsb,在此前需要设置传输方向,cld表示正向,std表示逆向

当然,也可以使用rep movsb
其效果相当于:
s: movsb
loop s
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: