簡體   English   中英

MASM組裝,創建循環

[英]MASM Assembly, creating loops

 .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? 即使當我輸入“有效”數字時,它仍會打印消息“已拒絕”,但隨后退出程序。 也許在比較之后我不能有多個跳轉語句?

您以錯誤的順序放置循環。 輸入0 ,您退出,否則進行處理, THEN您要重復循環直到輸入0 ,還可以選擇在輸入錯誤值時打印消息。

     cmp number,0
     je  finish

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


message:
    output rejected
    jmp forever

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM