emu8086:汇编语言复制数组案例

  • Post author:
  • Post category:其他



1. 题目

现在你在寄存器中有一个索引从0开始的数组,数组长度为9,要求你将这个数组复制到寄存器索引从A开始的位置上(即每个数依次后移10位)。


2. 思路

直接使用LOOP循环搬运,一个变量取出数组当前值,然后赋值到对应区域上。


3. 解法代码

   MOV  BX,0000H             ;BX设定为0,从原数组第一个数开始读取
   MOV  CX,0009H             ;CX设定为9,即循环9次
L1:MOV  DX,[BX]				 ;创建循环,用DX读取数组中索引为BX的值
   MOV  [BX+10],DX           ;把DX后移10位放入寄存器
   INC  BX					 ;索引值BX加1
   LOOP L1					 ;CX减1,当CX为0时循环结束


4. 完整代码

DATA  SEGMENT
    A  DB  12H,23H,34H,45H,56H,67H,78H,89H,9AH
DATA ENDS
PROGNAM SEGMENT
   ASSUME CS:PROGNAM,DS:DATA
   START:  MOV  AX,DATA
           MOV  DS,AX
           MOV  AX,BX
           
           MOV  CX,0009H
        L1:MOV  DX,[BX]
           MOV  [BX+10],DX
           INC  BX
           LOOP L1
           
           MOV AH,4CH
           INT 21H
   PROGNAM  ENDS
           END START


5. 运行结果

由图可以看到数组已经复制到了索引从A开始的位置了

在这里插入图片描述



版权声明:本文为m0_52937106原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。