I am a beginner when it comes to assembly language. I am using "easy 68k editor/assembler" to write 68k assembly code that asks the user for 2 values, then sum them up together and display it. The problem is that my code keeps getting halted and I am not sure how to troubleshoot/debug this problem.

Can anyone help me figure out how to track down the error? I will be grateful. Thank you in advance.

*-----------------------------------------------------------
* Program    : Sum of Two Numbers
* Written by : Me
* Date       : July 15, 2012
* Description: This program will read in 2 numbers the user
*inputs and find the sum.
*-----------------------------------------------------------

    org     $8000

    START       movea.l #MSG1, A3
                trap    #3
                clr.w   D2
                JSR     Loop
                trap    #2
                move.w  d2, d4
                movea.l #msg2, a3
                trap    #3
                clr.w   d2
                jsr     loop
                trap    #2
                movea.l #msg3, A3
                trap    #3
                add.w   d4, d2
                JSR     DISP
                trap    #2
                trap    #9
    LOOP        trap    #0
                trap    #1
                cmp.b   #$0D, D1
                BEQ     BREAK
                and.b   #$0F, d1
                mulu    #10, d2
                add.w   d1, d2
                jmp     loop
    Break       rts
    DISP        clr.b   d3
    DISDIV      divu    #10, D2
                move.b  #16, d5
                ror.l   d5, d2
                or.b    #$30, d2
                move.b  d2, -(A7)
                addq    #1, d3
                clr.w   d2
                ror.l   d5, d2
                bne     DISDIV
    DISDIG      move.b  (a7)+, D1
                trap    #1
                subq.b  #1, D3
                bne     DISDIG
                rts
                org     $8100
    MSG1        DC.B    'Please enter the first of two numbers (two digits) ', 0
    MSG2        DC.B    'Please enter the second of two numbers (two digits) ', 0
    MSG3        DC.B    'The sum of the two 2 digit numbers you entered is ', 0
                end     start
有帮助吗?

解决方案

Most likely the traps you are using are not those used by Easy68K. Look here for the traps used by Easy68K.

The function of the trap instructions is not defined by the 68K assembly language, but rather assigned by the operation system (if the OS makes use of the traps at all, some just ignore them). If you execute a trap instruction the 68000 just executes the code the trap vector points to. There is no "buildin" function assigned to any trap.

其他提示

Your code should start with:

LEA    MSG1, A1
MOVE.B #14, D0
TRAP   #15

This will display the first message to the user. Check out the EASy68K home page for more information on invoking I/O traps.

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top