设在以XX为首地址的内存区存放了一些字节数,共计100个,分别使用MOV、MOVSB、REP MOVSB和LODSB、STOSB实现为这100个数据传送至以YY为首地址的存储区
【正确答案】:① MOV BX,0
MOV CX,100
NEXT: MOV AL,XX[BX]
MOV YY[BX],AL
INC BX
DEC CX
JNZ NEXT
② MOV CX,100
LEA SI,XX
LEA DI,XX
CLD
LP: MOVSB
LOOP LP
③ MOV CX,100
LEA SI,XX
LEA DI,YY
CLD
REP MOVSB
④ MOV CX,100
LEA SI,XX
LEA DI,YY
CLD
LP: LODSB
STOSB
LOOP LP
【题目解析】:第一种方法:把0存入BX,作为偏移地址,100存入CX,作为循环次数,把XX为首址的第1个数据(偏移地址为0)存入AL,再把AL的内容存入YY地址。然后让BX加1,指向下一个数据,CX减1,如果不为0,则跳转到NEXT处,再次通过AL把第二个数据存到YY的相应位置。
第二种方法:把循环次数100存入CX,把XX的首址存入SI,把YY的首址存入DI,通过CLD命令使地址自动增量。然后进入LOOP循环,利用MOVSB命令把SI的内容送到DI处,同时SI和DI自动加1,只要CX不为0,就继续循环。
第三种方法:把循环次数100存入CX,把XX的首址存入SI,把YY的首址存入DI,通过CLD命令使地址自动增量。利用REP MOVSB就重复执行MOVSB指令,每执行一次,CX自动减1,一直到CX为0,指令才执行结束。
第四种方法:把循环次数100存入CX,把XX的首址存入SI,把YY的首址存入DI,通过CLD命令使地址自动增量,进入LOOP循环,通过LODSB从SI中取指令,送到AL中,然后SI自动加1,通过STOSB指令把AL中的内容送到DI中,然后DI自动加1,只要CX不为0,就继续循环。
设在以XX为首地址的内存区存放了一些字节数,共计100个,分别使用MOV、MOVSB、REP MOVSB和LODSB、STOSB
- 2024-09-08 13:24:11
- 汇编语言程序设计(02321)