What Do These Assembly Instructions Do with $30 in Register d0?

  • Thread starter Thread starter chelsea9947
  • Start date Start date
AI Thread Summary
The discussion revolves around understanding the behavior of specific assembly instructions in the Motorola 68000 architecture when the D0 register contains the value $30. The instructions include conditional branches such as bne (branch if not equal), beq (branch if equal), bpl (branch if positive), and bmi (branch if negative), which depend on the results of the tst instruction that checks the value in D0. The participants clarify that bne will branch if D0 is not zero, beq will branch if D0 is zero, bpl will branch if D0 is positive, and bmi will branch if D0 is negative. Additionally, there are comparisons using cmpi and other instructions, with discussions on how they affect branching based on the values being compared. The overall focus is on accurately interpreting the assembly code's logic and the implications of the D0 register's value.
chelsea9947
Messages
7
Reaction score
0

Homework Statement



If the content of d0 is $30 state in words what each of the following numbered instructions will do when placed immediately after the test instruction below
tst d0

Homework Equations



a) bne fred
b) beq fred
c) bpl fred
d) bmi fred

The Attempt at a Solution



a) bne fred = [go to label fred] [if d0] [not equal to $30]
b) beq fred = [go to label fred] [if d0] [equal to $30]
c) bpl fred = [go to label fred] [if d0] [ plus $30]
d) bmi fred = [go to label fred] [if d0] [minus $30]

example

TST or tst direct against zero instruction.

This is really the same as compare with zero

tst <effective address>

it subtracts 0 from a copy of the location specified and sets the condition flags accordingly.
If the value to be tested is positive then +N –0 = +N or if negative –N –0= -N or if 0 then 0-0 =0

tst d0 is d0 equal to 0, greater than zero or less than zero

beq joe = [go to label joe] [if d0] [equal to 0]
bgt dan= [go to label dan] [if d0] [greater than 0]
blt ben= [go to label ben] [if d0] [less than 0]iam confused can someone help

If the content of d0 is $30 state in words what each of the following numbered instruction pairs will do.

a. cmpi #$30,d0
beq dan

b. cmp.l unknown,d0
bne dan

c. cmp.w d1,d0
bgt dan
 
Physics news on Phys.org
chelsea9947 said:

Homework Statement



If the content of d0 is $30 state in words what each of the following numbered instructions will do when placed immediately after the test instruction below
tst d0


Homework Equations



a) bne fred
b) beq fred
c) bpl fred
d) bmi fred


The Attempt at a Solution



a) bne fred = [go to label fred] [if d0] [not equal to $30]
b) beq fred = [go to label fred] [if d0] [equal to $30]
c) bpl fred = [go to label fred] [if d0] [ plus $30]
d) bmi fred = [go to label fred] [if d0] [minus $30]
These are not right. I'm a little rusty on Motorola 68000 assembly (which is what I think you are using), so I assume these instructions are inspecting the contents of the D0 register.
bne <label> - means branch to <label> if d0 is not equal to zero.
beq <label> - means branch to <label> if d0 is equal to zero.
bpl <label> - means branch to <label> if d0 is positive (plus).
bmi <label> - means branch to <label> if d0 is negative (minus).
chelsea9947 said:
example

TST or tst direct against zero instruction.

This is really the same as compare with zero

tst <effective address>

it subtracts 0 from a copy of the location specified and sets the condition flags accordingly.
If the value to be tested is positive then +N –0 = +N or if negative –N –0= -N or if 0 then 0-0 =0

tst d0 is d0 equal to 0, greater than zero or less than zero

beq joe = [go to label joe] [if d0] [equal to 0]
bgt dan= [go to label dan] [if d0] [greater than 0]
blt ben= [go to label ben] [if d0] [less than 0]
These all look fine to me.
chelsea9947 said:
iam confused can someone help

If the content of d0 is $30 state in words what each of the following numbered instruction pairs will do.

a. cmpi #$30,d0
beq dan

b. cmp.l unknown,d0
bne dan

c. cmp.w d1,d0
bgt dan

These compare instructions subtract the first operand from the second and set the N and Z flags as appropriate. For a, D0 - #$30 = what? Does control branch to label dan?
For b, you don't know what value is in unknown, but whatever value is in this location, it is either >= $30 or < $30.
For c, you don't know what is in D1, but you can say what will happen depending on what value is in that register.
 

Similar threads

Replies
3
Views
2K
Replies
4
Views
6K
Replies
3
Views
4K
Replies
5
Views
3K
Replies
6
Views
4K
Replies
2
Views
2K
Replies
1
Views
3K
Back
Top