DATA_SEG SEGMENT
STR1 DB 50 DUP(?) ;STR1指向一个50字节的存储空间
STR2 DB 50 DUP(?) ;STR2指向一个50字节的存储空间
DATA_SEG ENDS ;数据段DATA_SEG定义完成
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG,DS:DATA_SEG ;关联各段与相应的段寄存器
START:
MOV AX,DATA_SEG
MOV DS,AX ;将代码段DATA_SEG首地址传给DS寄存器
LEA BX,STR1 ;将STR1的段内偏移地址传给BX
LEA SI,STR2 ;将STR2的段内偏移地址传给SI
MOV DI,31H ;(DI)=49,用作数组下标
MOV CX,32H ;CX是隐含的LOOP循环计数器,设定循环次数为50次,每循环一次,CX减一
NEXT:
MOV AL,[BX][DI] ;基址加变址寻址,用作数组的处理,相当于BX[DI]
MOV [SI],AL ;将STR1的最后一个字节传给STR2的第一个字节
DEC DI ;(DI)=(DI)-1
INC SI ;(SI)=(SI)+1
LOOP NEXT ;当CX≠0时,跳转到NEXT处;当CX=0时,继续下面的指令
MOV AH,4CH ;调用功能号为4CH的DOS功能
INT 21H ;中断,执行调用的DOS子程序,结束程序
CODE_SEG ENDS ;代码段定义完成
END START ;汇编结束,程序入口为START
将str1缓冲区的50个字节数据按照相反的方向依次传送到存储区str2中
最新推荐文章于 2022-07-12 00:26:57 发布