어셈블리 언어를 파이썬으로 변환하려고합니다. 필자는 이렇게 할 때 가능한 한 어셈블리 코드를 그대로 따르려고합니다. 이 특정 코드에는 중첩 된 조건문이 필요하다는 것을 알고 있습니다. 나는 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
이 파이썬으로 코드 내 직역입니다. 내가 코드의 직역을하고 있지 않다, 그래서 만약
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
나는 어쩌면 다음과 같아야합니다, 인쇄 D 및 인쇄 B가있는 경우와 다른 중첩 제표에 포함되는 것을 볼?
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
최종 질문 : 이러한 번역 중 하나가 맞습니까? 그들은 같은 방식으로 평가하지 않습니다. 또한이 번역을 할 수있는 더 좋은 방법이 있습니까?
이러한 전환에 대해 알아야 할 다른 도움말이나 규칙은 환영합니다.
미리 도움을 주셔서 감사합니다.
고맙습니다. 매우 도움이됩니다. 파이썬에서 설명한대로 시도해보고 테스트 해 보겠습니다. 첫 번째 번역본이나 두 번째 번역본을 보셨습니까? 아니면 둘 다 보셨습니까? 다시 한 번 감사드립니다! – JenTen10
@ Cinder1 : 주로 첫 번째, 대부분은 첫 번째'if' 블록/6 행부터 11 행까지의 asm입니다. –
굉장! 정말 고마워! – JenTen10