本文介绍了如何循环使用汇编语言的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我将如何计算斐波那契数列的前12个值,并可以将其放置在EAX章。和显示主叫姆preGS?采用间接寻址,我知道我需要一个for循环在这里,但我不知道怎么去甚至这个。任何帮助或提示是AP preciated。

 包括Irvine32.inc; (插入符号定义在这里)。数据; (此处插入变量)
   斐波纳契字节1,1,10 DUP(?)。code
主要PROC; (此处插入可执行指令)
    ; (这将在下面显示的字符串六内容。)
      MOV ESI,OFFSET斐波那契;抵消变量
      MOV EBX,1;字节格式
      MOV ECX,SIZEOF斐波那契;计数器
      调用dumpMem
    出口 ;退出到操作系统
主要ENDP; (此处插入附加程序)主要END


解决方案

您可以让这样一个循环:

  MOV ECX,12
your_label:
;您code
环your_label

循环指令递减 ECX 并跳转到指定的标签,除非 ECX 等于零。您也可以构建同一个循环是这样的:

  MOV ECX,12
your_label:
;您code
十二月ECX
JNZ your_label

How would I calculate the first 12 values in the Fibonacci number sequence and be able to place it in EAX reg. and display calling DumpRegs? Using Indirect addressing I know I need a for loop here but I'm not sure how to even go about this. Any help or tips are appreciated.

      INCLUDE Irvine32.inc

; (insert symbol definitions here)

.data

; (insert variables here)
   Fibonacci BYTE 1, 1, 10 DUP (?)

.code
main PROC

; (insert executable instructions here)


    ; (This below will show hexa contents of string.)
      mov   esi, OFFSET Fibonacci       ; offset the variables
      mov   ebx,1                   ; byte format
      mov   ecx, SIZEOF Fibonacci       ; counter
      call  dumpMem


    exit        ; exit to operating system
main ENDP

; (insert additional procedures here)

END main
解决方案

You can make a loop like this:

mov ecx,12
your_label:
; your code
loop your_label

The loop instruction decrements ecx and jumps to the specified label unless ecx is equal to zero. You could also construct the same loop like this:

mov ecx,12
your_label:
; your code
dec ecx
jnz your_label

这篇关于如何循环使用汇编语言的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-23 15:25