2012-11-30 112 views
0
.MODEL SMALL 
    .STACK 100h 
    .DATA 
Var1 dd 2 
PromptStr DB 'is perfect',13,10,'$' 
ans dd 2 
count dd 2 
    .CODE 
    .386 
Begin: 
    MOV AX,@DATA  ; DS can be written to only through a register 
    MOV DS,AX  ; Set DS to point to data segment  

dobody1: 
    JMP TestNext1 
dobody2: 
    CMP ans,32513 
    JA finish 
    MOV EAX,ans 
    MOV EBX,2 
    MUL EBX 
    MOV ans,EAX 
    DEC count 
TestNext1: 
    CMP var1,2 
    JE check2 
    MOV EAX,count 
    CMP Var1,EAX 
    JNE dobody2 
check2 : 
    MOV EAX,ans 
    MOV EBX,2 
    MUL EBX 
    INC EAX 
    MOV EBX,ans 
    MUL EBX 
    MOV AH,9 
    INT 21h 
    MOV ans,2 
    MOV count,2 
    DEC Var1 
    JMP dobody1 

finish : 

MOV AH,4Ch  ; Set terminate option for int 21h 
INT 21h  ; Return to DOS (terminate program) 
END Begin 

我試圖打印與彙編程序tasm完美的數字,我得到一個意外的文件遇到錯誤enf!彙編程序代碼錯誤

+1

我不明白爲什麼你的代碼跳得這麼多。 (2 ^(n-1))*((2^n)-1) –

+0

)是不是必須在最後有一個'結束'(加上也許是一個額外的空白行)? –

+0

編譯器錯誤?( –

回答

0

您需要在end begin之前添加ends。不知道這是不是一個大問題,但.386不應該在代碼段,但在.MODEL之前。

+0

我已經嘗試過你的解決方案仍然有同樣的問題 –

+0

已解決! 這是我的電腦感謝問題:D –