68K Assembly Math Formula - PullRequest
       20

68K Assembly Math Formula

0 голосов
/ 25 апреля 2018

Мне нужно написать несколько строк на языке ассемблера 68k с математической формулой:

х ^ 2-5x + 6

Я хочу сделать это с помощью команд ADD и SUB и MOVE, но каким-то образом я не могу определить переменную x, она говорит, что это неопределенный символ, и я не могу понять, где моя проблема.

ORG    $1000
START:                  ; first instruction of program

MOVE    X*X, D0
MOVE    (-5X),D2  
MOVE    6,D3 
ADD     D0, D3
SUB     D2, D1



SIMHALT

Ошибка: ЛИНИЯ 10 Неверный синтаксис ЛИНИЯ 11 Неверный синтаксис

1 Ответ

0 голосов
/ 25 апреля 2018

Примерно так, предполагая базовый 68000 (а не 68020 или лучше).

Возможно, вам придется решить такие вопросы, как X слово или длинное слово, и заниматься такими вопросами, как расширение знака, так как это было давно с тех пор, как я создал 68k-ассемблер.X определяется как константа слова в конце.

ORG    $1000
START:                  ; first instruction of program
    CLR.L  D7        ; Clear D0 - alternatively MOVEQ #0,D0
    MOVE.W X,D7      ; Read X

    ; Output initial value...
    LEA    S1,A1
    MOVE.W #255,D1
    MOVE.L D7,D1
    MOVEQ  #17,D0
    TRAP   #15

    LEA    SNUL,A1
    MOVEQ  #13,D0
    TRAP   #15

    MOVE.L D7,D6     ; copy of X
    ASL.L  #2,D6     ; Multiply by 4
    ADD.L  D7,D6     ; 4X plus another X = 5X
    MULU.W D7,D7     ; X^2  
    SUB.L  D6,D7     ; Subtract 5X from X^2
    ADDQ.L #6,D7     ; plus 6

    ; Output answer...
    LEA    S2,A1
    MOVE.L D7,D1
    MOVEQ  #17,D0
    TRAP   #15

    SIMHALT             ; halt simulator

* Put variables and constants here
S1:   DC.B 'Initial :',0
S2:   DC.B 'Answer  :',0
SNUL: DC.B 0
X:     DC.W 1234    ; Initial (fixed) value of X

END    START        ; last line of source
...