2014-12-04 66 views
1
.386 
.MODEL FLAT 
ExitProcess PROTO NEAR32 stdcall, dwExitCode:DWORD 
Include io.h 
cr  equ 0DH 
Lf  equ 0AH 

    .STACK 4096 
    .DATA 

string byte 40 Dup (?) 
number dword ? 
rejected byte cr, Lf, "Rejected", 0 

    .code 
_start: 
main PROC 

forever: input string, 40 
     atod string 
     mov number, eax 
     cmp number,0 
     jne processing 
     je finish 
     jmp forever 

processing: 
    cmp number,10 
     jg message 
    cmp number,-10 
     jl message 

message: output rejected 


finish: 
    INVOKE ExitProcess, 0 

main endp 
PUBLIC _start 
     END 

我想要做到:讀了一些一次一個,過程號碼,檢查它是否是0,如果是這樣,退出程序,如果該號碼> 10或< -10打印一條消息「拒絕」。我在創建跳轉語句時遇​​到了很多麻煩,如何讓循環繼續處理數字直到0?即使輸入「有效」號碼,它仍會打印「拒絕」信息,但會退出程序。比較後可能不會有多個跳轉語句?MASM大會,創建循環

回答

1

您以錯誤的順序放置循環。當輸入0時,您退出,否則您將處理它並輸入THEN,直到輸入0,否則必須在輸入錯誤時打印消息。

 cmp number,0 
    je finish 

processing: 
    ... 
    jmp forever ; So everything is fine and you continue 


message: 
    output rejected 
    jmp forever