I have problem mixing assembly and C. Please advice me if anyone know the solution! Thanks in advance!
In the assembly code, the two parts I'd like to use in C are: (code are typed in italics)
PART 1:
temp_diag:
jsr diag_disp_sub
rts
PART 2:
xdef diag_disp_sub
diag_disp_sub equ $
brset _diag_t_flg,80h,d_cnt_chk
jsr diag_disp_csw
rts
As you can see, both of them do the same thing.
PART 1 has a jump directives which jump to the PART 2.
I use these function in C code as below:
if( flg != 0 ){
temp_diag();
}
else{
diag_disp_sub();
}
As you can see, PART 1 is executed if flg22_flg11 is not equal zero and PART 2 is executed if flg22_flg11 is equal zero.
Of course, in the header file, I declare both the functions as below
void temp_diag(void);
void diag_disp_sub(void);
When I run the program, i.e., I set the flg so the PART 1 is executed then I cleared the flg so the PART 2 is executed., the PART 1 executed successfully but PART 2 not!
if the routine run into PART 2, the CPU reset itself!
or if CW(debugger) and CPU is connecting, the debugger immediately disconnect from CPU!
WHY???