2012-11-30 63 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 –