2014-10-14 3 views
0

대학에서는 TASM 어셈블리 언어를 배우기 시작했습니다. 요점은, 내가 내 임무를 완전히 잃어 버렸기 때문에 나는 도움이 필요하다는 것이다. 키보드에서 번호를 스캔하고 fibonacci의 n 자리 번호를 인쇄해야합니다. 예 : 6에 입력 한 프로그램은 8TASM 어셈블리에서 fibonacci 번호 인쇄

가 여기 내 미완성 코드의 출력합니다 : 난 그냥 내가 무엇을해야하는지 모르는이 후

.model small 
.stack 100h 

.data 
    number db 255 

.code 
start: 
    mov dx, @data 
    mov ds, dx 
    mov al, 0 
    mov bl, 1 

.readline: 
    mov ah, 0Ah 
    mov dx, offset number 
    mov cx, dx; 
    int 21h 

.fibonacci: 
    add al, bl 
    mov dl, al 
    mov al, bl 
    mov bl, dl 

    loop .fibonacci 
    int 21h 
.writeln 
    mov ah, 9 
    mov dx, dl 
    int 21h 


end start 

또는 만든 실수가있을 경우. 누구든지 다음에해야 할 일에 대해 조언 해 줄 수 있습니까?

답변

1

Here은 사용자 입력 및 출력을 구현하는 데 필요한 몇 가지 코드 예가 ​​포함 된 PDF 설명서입니다.

다음은 재귀없이 피보나치 시퀀스를 계산하는 방법에 대한 아이디어를 제공하는 테스트되지 않은 코드 조각입니다.

mov cx, 6 
    mov ax, 0 ;a = 0 
    mov bx, 1 ;b = 1 
fib: 
    mov dx, ax 
    add dx, bx ;sum = a + b 
    mov ax, bx ;a = b 
    mov bx, dx ;b = sum 
    loop fib 

주어진 사용자 입력으로 카운트 레지스터 (CX)를 설정해야합니다.

또한 32 비트 레지스터를 사용하고 있으므로 레지스터에 저장할 수있는 최대 피보나치 수는 46입니다.

+0

피보나치의 실제 계산은 분명 OP가 문제가되는 것이 아닙니다. –

+0

사실입니다. 나는 같은 강연을 보았고 같은 과제로 어려움을 겪었다. 필자가 제공 한 PDF 파일에는 최종 솔루션을 구성하는 데 필요한 모든 코드 예제가 있습니다 (영문은 아닙니다). 현재 TASM 에뮬레이터에 대한 액세스 권한이 없으므로 코드를 수정하고 테스트 할 수 없습니다. –

+0

빠른 대답은 debes.is에 감사드립니다. 나는 pdf를 살펴볼 것이다. 그것이 나의 첫번째 프로그램을 완성하는 데 도움이되기를 바랍니다. –

-2
.MODEL SMALL 

.DATA 
.CODE 
MAIN PROC 

      MOV AX,@DATA 
      MOV DX,AX 

      MOV AL,20 
      MOV CL,10 
      MOV AH,00 
      DIV CL 
      MOV DX,AX 
      ADD DX,3030h 
      MOV AH,02H 
      INT 21H 

      MOV DL,DH 
      INT 21H 




      MOV AX,4C00H 
      INT 21H 

MAIN ENDP 
+0

이것은 2 자리 정수를 인쇄하는 코드입니다. 이 코드에 답할 수있는 SO에 관한 질문이 있습니다 (플러스/왜 작동하는지 등을 설명하는 몇 가지 텍스트가 포함되어 있습니다). 그러나이 질문은 해당 질문과 관련이 없습니다. –