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

私が達成しようとしていること:一度に1つずつ読み取り、その番号を処理して0かどうかを確認し、0の場合はプログラムを終了し、10以上または-10未満の場合は「拒否されました. " jump ステートメントを作成するのに多くの問題があります。ループが 0 まで数値を処理し続けるようにするにはどうすればよいですか? 「有効な」番号を入力しても、「拒否されました」というメッセージが出力されますが、プログラムは終了します。比較の後に複数の jump ステートメントを持つことはできないのでしょうか?

4

1 に答える 1

1

ループの順序を間違えています。0が入力されると終了し、それ以外の場合はそれを処理し、が入力さTHENれるまでループを繰り返します0。オプションで、入力が間違った値であったときにメッセージを出力する必要があります。

     cmp number,0
     je  finish

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


message:
    output rejected
    jmp forever
于 2014-12-04T07:23:34.767 に答える