# Can someone check this please

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.

tst d0

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).
example

TST or tst direct against zero instruction.

This is really the same as compare with zero

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.
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.