2013-05-07 15 views
-1

다소간 이해가 필요합니다. 우리는 루프와 오프셋 피연산자에 들어가고 있으며 도움을 주셔서 감사합니다. 그래서 여기 내 안내입니다어셈블리 언어의 피보나치 시퀀스


경유이 피보나치 수열의 제 12 개 값을 계산 모드, {1, 1, 2, 3, 5, 8, 어드레싱과 LOOP 명령어를 사용하여 어셈블리어 프로그램을 작성 , 13, ...}. EAX 레지스터에 각 값을 배치하고 루프 내에 DumpRegs 문을 호출하여 표시합니다. 피보나치 BYTE 1, 1, 10 DUP

즉시 루프 후 다음 명령문을 삽입 (?) :

다음과 같은 변수 정의를 사용하십시오. 그들은 목표 문자열의 16 진수 내용을 표시합니다 : mov esi, OFFSET 피보나치; 오프셋 변수들 mov ebx, 1; 바이트 형식 mov ecx, SIZEOF 피보나치; 카운터 call dumpMem; 메모리에 데이터를 표시

프로그램이 제대로 작동하면 프로그램이 실행될 때, 당신은 화면에 진수 바이트의 다음과 같은 순서로 표시됩니다 01 01 02 03 05 08 0D 15 22 37 59 90


.data 

Fibonacci BYTE 1, 1, 10 DUP (?) 

.code 
main PROC 

    L1: 

    mov esi, OFFSET Fibonacci  ; offset the variables 
    mov ebx,1    ; byte format 
    mov ecx, SIZEOF Fibonacci  ; counter 
    call dumpMem    ; display the data in the memory 


    exit     ;exits to Operating System 
    main ENDP 

END main 

그래서 나는 루프 문을 만들 필요가 알고 있지만, 그것을 시작하는 방법에 완전히 붙어입니다. 어떤 조언을 크게 주시면 감사하겠습니다!

답변

2

어셈블리에서 루프를 만드는 방법을 알고 싶습니다. 몇 가지 예는 아래를 참조하십시오 : 나는 혼란 스러워요 있도록

x86 assembly programming loops with ecx and loop instruction versus jmp + j<condition>

+0

좋아. 나는 이것을 가지고있다 : – Shawn

+0

. 데이터 피보나치 BYTE 1, 1, 10 DUP (?) . MOV 카운트 EAX \t \t \t \t \t 상기 루프 카운트를 루프 L1 \t \t \t \t \t \t 절약 :; 코드 메인 PROC MOV의 EAX, 12 \t \t \t \t \t L1의 반복 횟수를 설정 \t, L1에서 루프 반복 mov esi, OFFSET 피보나치 \t \t ; 변수들을 오프셋한다. mov ebx, 1 \t \t \t \t \t \t; 바이트 형식 mov ecx, SIZEOF 피보나치 \t \t; 카운터 콜 덤프 메시지 \t \t \t \t \t; 메모리 \t 종료 \t \t \t \t \t에 데이터를 표시, 종료를 운영 체제에 \t 주요 ENDP 그것은 코드에 추가하면 유용 할 것 – Shawn

0
.586 
.MODEL FLAT 
INCLUDE io.h   ; header file for input/output 
.STACK 4096 


.DATA 

resultLbl BYTE "The result is", 0 
sum  BYTE 11 DUP (?), 0 

.CODE 
_MainProc PROC 

     mov eax,1 
     mov ebx,1 ; will store answer 
     dtoa sum , eax 
     output resultLbl , sum 
     dtoa sum ,ebx 
     output resultLbl ,sum 
     mov ecx ,5 
_for: 
     mov edx , eax 
    add edx , ebx 
    dtoa sum ,edx 
    output resultLbl ,sum 
    mov eax ,ebx 
    mov ebx ,edx 
    dec ecx 
    cmp ecx , 0 
    jne _for 
    mov eax , 0 
    ret 


_MainProc ENDP 
END 
+1

주요 END는 설명하고 가능한 일부 참조를 기록했다. – ext

+0

'dec'은 이미 ZF를 설정하고,'cmp'는 필요 없습니다. –