串操作指令

串操作指令

4 串操作指令【操作系统】_数据段

例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