首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-05 
一个汇编题,看不太明白啊现有下列数据段:DATA SEGMENTSTR1 DB ‘ABCDEFGHIJKL’COUNT EQU –STR1BUF DB COUNT

一个汇编题,看不太明白啊
现有下列数据段:
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

热点排行