Helpful Information
 
 
Category: Other Programming Languages
Mathematical Assembly Language Program (Help).

Hey,

I'm writing assembly language code to run this pseudocode:

***************************************************
* This program will run the structure: *
* *
* while (a <= 10) *
* { *
* if ((a +b) >= c) *
* { *
* a = a - b *
* c = c - 1 *
* } *
* else *
* { *
* a = a + b *
* c = c + 1 *
* } *
* c = c + 10 *
* } *
* with starting values of a = -2, b = 4, c = 0 *
***************************************************

Here is what I have written so far:




* This program will run the if structure:


*data location starts at $8000
ORG $8000
AVAL FCB -2
BVAL FCB 4
CVAL FCB 0
CINC FCB 10

*main program starts at $9000
ORG $9000
LDS #$01FF ; initialize SP
LDAA AVAL ; load the A register with the value of A
LDAB CVAL ; load B with the value of C
ADDA BVAL ; add B to A and store the result in A

WHILE CMPA #10 ; subtract 10 from value of A (running total)
BLT IF ; branch to IF if A is less than 10

IF CMPA CVAL ; compare (A + B) to C
BLT ELSE ; branch to the else part if (a + b) < c
SUBA BVAL ; a = (a + b)-b
SUBA BVAL ; a = a - b
STAA AVAL ; save the A value
DECB ; c = c - 1
BRA NEXT ; skip the else code

ELSE STAA AVAL ; a = a + b
INCB ; c = c + 1
NEXT ADDB CINC ; c= c + 10
ENDWHL BRA WHILE ;loop back up

DONE BRA DONE ; stupid, but necessary
END ; pseudo-op, tells the assembler that we're done

However, when I put it through the assembler, it doesn't run correctly.

Can anybody offer some suggestions to help me along?

Thanks

I've never seen that language before, so I'm having to assume some things. I think I see some errors already:

- The "BLT IF" seems to be a no-op: if true, it goes to IF (the next instruction), and if false, it just goes to the next statement (which happens to be IF), right? I think what you really want to do is branch to DONE if A > 10.
- After the first pass through the "if", register A no longer contains A + B, but you continue to use it as such.
- I don't understand "DONE BRA DONE". Isn't that a one-instruction infinite loop?










privacy (GDPR)