串操作指令
例
例4.11
将数据段中首地址为BUFFER1的200个字节传送到附加数据段首地址为
BUFFER2的内存区中。使用字节串传送指令的程序段如下
mov ax,data mov ds,ax LEA SI, BUFFERI ;(SI)<-源串首地址指针 LEA DI, BUFFER2 ;(DI)<-目的串首地址指针 MOV CX,200 ;(CX)-字节串长度 CLD ;清方向标志DF REP MOVSB ;传送200个字节 HLT
例4.14
一个数据块由大写或小写的英文字母、数字和各种其他符号组成,其结束符 基回车符CR(ASCII码为0DH),数据块的首地址为BLOCK1。将数据块传送到以BLOCK 为首地址的内存区,并将其中所用的英文小写字母(az)转换成相应的大写字母(AZ,其 余不变。
前面已经讨论过英文小写字母与相应的大写字母的ASCII码之间有一定的关系,即只 需将小写字母的ASCII码减20H,即可得到相应大写字母的ASCII码。程序加下
LEA SI, BLOCK1 ;(SI)<-源地址指针 LEA DI, BLOCK2 ;(DI)<-目标地址指针 CLD ;清方向标志DF NEXT: LODSB ;取一个字符到AL CMP AL, 0DH ;是否回车符 JZ DONE ;是,则转DONE CMP AL, 61H ;否则,是否小于'a' JC OK ;是,则转OK↵ CMP AL, 78H ;是否大于'z JNC OK ;是,转OK SUB AL,20H ;否则,AL减20H OK: STOSB ;送存 JMP NEXT ;转移到NEXT DONE: HLT