怎么用汇编语言实现for循环

怎么用汇编语言实现for循环,第1张

汇编语言实现for循环十分容易,比如51汇编,用DJNZ指令就可以了,举例如下:

C语言:

for(i=0i<10i++)a=a+i

汇编语言:

i equ 30h

m equ 31h

......

mov i,#0

mov m,#0

mov r2,#10

loop:

mov a,i

add a,m

mov m,a

djnz r2,loop

一个标准的循环程序应由以下四部分组成:循环准备、循环体、循环修改、循环控制。

循环准备是为循环做准备的,有循环次数和起始地址;循环体是循环程序解题所需的核心程序,题目要完成的功能在此进行;循环修改用来更新某些数据或修正循环控制的参数;循环控制是循环是否结束的控制。

如果在一个程序中的多个地方、或多个程序中的多个地方要用同一段程序,那么可以将这段程序单独设计,存放在某一存储区域,每当需要执行这段程序时,就调用指令转到这段程序去,执行完毕,再返回原来的程序。这段独立出来的程序叫做子程序或过程,调用它的程序称为主程序。采用子程序。使得设计结构清楚,程序的维护方便。当主程序需要执行这个子程序功能时,通过调用该子程序,执行子程序,子程序完成后返回主程序调用处,继续主程序后面的指令的执行。与子程序有关的指令有子程序的调用CALL、子程序返回RET两条指令。

        DATA  SEGMENT

         BUF  DB        11H,22H,33H,44H,55H,66H,77H,88H

           N  DB        $-BUF

         MIN  DB        ?

         MAX  DB        ?

        DATA  ENDS

        CODE  SEGMENT

              ASSUME    CS:CODE,DS:DATA

      START:

              MOV       AX,SEG DATA

              MOV       DS,AX

              MOV       DL,N

              XOR       DH,DH

               以下通过排序将最大置于首、最小置于尾              

              DEC       DX

         L1:

              MOV       CX,DX

              MOV       SI,OFFSET BUF

         L2:

              MOV       AL,[SI+1]

              CMP       AL,[SI]

              JG        NEXT

              XCHG      AL,[SI]

              MOV       [SI+1],AL

       NEXT:

              INC       SI

              LOOP      L2

              DEC       DX

              JNZ       L1

              MOV       SI,OFFSET BUF

              MOV       AL,[SI]

              MOV       MIN,AL

              MOV       AL,[SI+N-1]

              MOV       MAX,AL

              MOV       AH,4CH

              INT       21H

        CODE  ENDS

              END       START


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7731828.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-09
下一篇 2023-04-09

发表评论

登录后才能评论

评论列表(0条)

保存