簡體   English   中英

將匯編語言轉換為Python代碼

[英]Converting Assembly Language to Python Code

我正在嘗試將匯編語言轉換為Python。 當我這樣做時,我試圖盡可能地遵循匯編代碼。 我知道此特定代碼將需要嵌套條件語句。 我正在使用a,b,c,d作為存儲位置。

這是匯編語言:

    0   IN a
    1   LOAD d
    2   COMPARE a
    3   JUMPLT 6
    4   JUMPEQ 6
    5   JUMPGT 12
    6   OUT c 
    7   LOAD a
    8   ADD b
    9   STORE c
    10  DECREMENT d
    11  JUMP 20
    12  DECREMENT c
    13  LOAD a
    14  COMPARE c
    15  JUMPLT 19
    16  JUMPEQ 19
    17  INCREMENT d   
    18  CLEAR c             
    19  OUT d
    20  OUT b
    21  HALT

這是我將代碼從字面上翻譯成Python的過程。

      a = input()

      if a<=d:
        print c
        c = a+b
        d = d-1
        print b  

      else:
        c = c-1
        if c<=a:
          print d
          print b

        else:
          d=d+1
          c=0
          print d
          print b

我看到print d和print b包含在if和else嵌套語句中,因此,如果我不對代碼進行字面翻譯,也許應該看起來像這樣?

      a = input()

      if a<=d:
        print c
        c = a+b
        d = d-1
        print b 

      else:
        c = c-1
        print d
        print b

        if c>a:
          d=d+1
          c=0

我的最后一個問題是:這些翻譯中的任何一個正確嗎? 他們的評估方式不同。 還有更好的方法進行此翻譯嗎?

歡迎您記住其他有關轉換的提示或規則。

在此先感謝您的幫助。

是的,我看過的部分對我來說是正確的。 但是,將print b放在if / else塊之后會更准確,因為所有執行路徑都在它之前合並。

asm笨拙(例如,省略前兩個條件分支,因此JUMPGT 12會跳轉或掉下來),所以是的,它和/或Python還有很多空間。 初學者非常頻繁寫低效分支跳轉的一種方式或其他,而不是僅僅跳躍或下降通過。

暫無
暫無

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

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