Easy68K を使用してクラス用のアセンブリ言語プログラムを初めて作成しました。
コードを複製するために if-else 分岐を使用しています。
IF (P > 12)
P = P * 8 + 3
ELSE
P = P - Q
PRINT P
しかし、CMPがP <12のケースを見つけた後でも、コードに最初の停止がなければ、プログラムはとにかくIFブランチを実行するため、ブランチが間違っていると思います。これをしている?
ここに私のアセンブリコードがあります:
START: ORG $1000 ; Program starts at loc $1000
MOVE P, D1 ; [D1] <- P
MOVE Q, D2 ; [D2] <- Q
* Program code here
CMP #12, D1 ; is P > 12?
BGT IF ;
SUB D2, D1 ; P = P - Q
MOVE #3, D0 ; assign read command
TRAP #15 ;
SIMHALT ; halt simulator
IF ASL #3, D1 ; P = P * 8
ADD #3, D1 ; P = P + 3
ENDIF
MOVE #3, D0 ; assign read command
TRAP #15 ;
SIMHALT ; halt simulator
* Data and Variables
ORG $2000 ; Data starts at loc $2000
P DC.W 5 ;
Q DC.W 7 ;
END START ; last line of source