Ich brauche Programm zu schreiben, dass der Benutzer eine Zahl ohne Vorzeichen und die Anzeige erscheint eintritt, wenn diese Zahl ungerade ist, selbst oder gleich NullWenn else-Anweisung in 68k
Das Problem, das ich zu jeder Nummer bekam sie angezeigt werden Z in 7Segment, das ist nicht korrekt Also, ich nicht wo ist das Problem. Kann mir jemand helfen, das Problem zu beheben?
LEDS EQU $E00010 ;LEDS adress
SW EQU $E00012 ;switch address
BU EQU $E00014 ;button address
one EQU $E00000 ;7 segment display address 1
two EQU $E00002
three EQU $E00004
four EQU $E00006
five EQU $E00008
six EQU $E0000A
seven EQU $E0000C
eight EQU $E0000E
ORG $400 ;start of program area
START
Loop
MOVE.B D0,LEDS
MOVE.B SW,D1
MOVE.B BU,D2
MOVE.B #0,D3
MOVE.B #0,D0 ; LEDS is off
MOVE.B #0,one ;7 segment is off
MOVE.B #0,two
MOVE.B #0,three
MOVE.B #0,four
MOVE.B #0,five
MOVE.B #0,six
MOVE.B #0,seven
MOVE.B #0,eight
MOVE.B #%1101101,one ;display S on 7 segment
NOT.B D2 ; flip value of button
CMP.B #%00000001,D2 ;if the right button is clicked
BNE Loop
MOVE.B D1,D0 ;THEN MOVE SWICH VALUES ON LEDS
MOVE.B D0,LEDS
MOVE.B #0,one
CMP.B D1,D3
BEQ ZERO
DIVS.W #2,D1
CMP.B D1,D3 ;IF D1=D3 WHICH ZERO, THEN
BEQ EVEN ; NUMBER IS ODD
BRA ODD ; ELSE DISPLAY EVEM
EVEN MOVE.B #%1111001,one
ODD MOVE.B #%0111111,one
ZERO MOVE.B #%1011001,one
END START
Nach verzweigen Sie selbst, Sie durch auf NULL dann auf ODD fallen, so dass Sie auch immer vielleicht bekam ZERO sofort. – stark
@stark: danke, aber ich habe nicht verstanden, was meinst du bitte erklären könnte mehr? meinst du in EVEN habe ich eine andere Zeile gesetzt, die {BRA Loop} ist? – nas2016
BTW, du musst nicht nach "DIV" auf ungerade/gerade prüfen. Wenn Sie einen numerischen Wert in eine binäre Formatierung aufteilen, hat jedes Bit den Wert 2^i. Für (1 <= i) bedeutet das, dass der Wert durch 2 teilbar ist, weil 2^i = 2 * 2^(i-1). Die einzige Ausnahme ist 2^0 = 1, diese ist nicht durch 2 teilbar. Das bedeutet, dass der ganze Wert aus allen durch Zwei teilbaren Zweierpotenzen besteht (1 <= i), mit Ausnahme des am wenigsten signifikanten Bits, welches hat den Wert 1. Jede Zahl, die in eine binäre Form umgewandelt wird, ist dann ungerade, wenn das niedrigstwertige Bit gesetzt ist. Um das niedrigstwertige Bit in der Reg. Sie können 'BTST # 0, D1' 'BEQ D1_is_even' verwenden. – Ped7g