LC-3电机程序(奇怪输出)

时间:2016-04-24 06:23:02

标签: assembly lc3

所以LC-3程序的输出给了我非常奇怪的字符/符号。该程序的目的是要求用户输入0或1.如果用户输入1,则电机顺时针旋转120度,然后逆时针旋转90度。如果用户输入0,则电机逆时针旋转50度。 360度= 36步。什么是一步?一步是10度。输出打印出每一步。例如,用户输入0然后输出应该说:

The motor moved 10 degrees CCW
The motor moved 10 degrees CCW
The motor moved 10 degrees CCW
The motor moved 10 degrees CCW
The motor moved 10 degrees CCW

这是一个非常有趣的任务,但我实际上无法正常工作。附上我的代码和输出的截图。谢谢你的时间!

无法嵌入图片,因为此帐户是新的,但我的输出屏幕截图的链接如下: http://tinypic.com/r/9roghf/9

似乎代码没有正确嵌入,但请将下面的所有内容视为代码的一部分(因为它是!):

.ORIG x4000

    ;Constants
Prompt  .STRINGZ "Enter '1' to move moter 120 degrees clockwise then 90 degrees counter clockwise or Enter '0' to move motor 50 degree counter clockwise"

CW  .STRINGZ "The motor rotated 10 degrees clockwise"
CCW .STRINGZ "The motor rotated 10 degrees counterclockwise"

RL  ;Clear and Load Register 2
    AND R2, R2, #0
    ADD R2, R2, #12

    ;Clear and Load Register 3
    AND R3, R3, #0
    ADD R3, R3, #3

    ;Clear and Load Register 4
    AND R4, R4, #0
    ADD R4, R4, #2

    ;Clear And Load Register 5
    AND R5, R5, #0
    ADD R5, R5, #1

LL0 ;user input
    LEA R0, Prompt
    PUTS    ;Print String

    GETC    ;Receive user input
    OUT ;Prints out user input
    BRz LL3 ;If user input 0
    BRp LL1 ;If user input 1

    ;beginning of '1' loop
     ;120 degree clockwise rotation
LL1 LEA R0, CW

    ADD R2, R2, #-6 ;1 Bit Shift (Right) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R2, R2, #-3 ;1 Bit Shift (Right) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R2, R2, #6 ;1 Bit Shift (Right) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R2, R2, #3 ;1 Bit Shift (Right) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R3, R3, #-1 ;Decrement Loop (3x)
    BRp LL1

     ;90 degree counter clockwise rotation
LL2 LEA R0, CCW

    ADD R2, R2, #-3 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    BRz Stop ;After 90 degree turn

    ADD R2, R2, #-6 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R2, R2, #3 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R2, R2, #6 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R4, R4, #-1 ;Decrement Loop (2x)
    BRzp LL2

    ;beginning of '0' loop
     ;50 degree counter clockwise
LL3 LEA R0, CCW

    ADD R2, R2, #-3 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    BRz Stop ;After 50 degree turn

    ADD R2, R2, #-6 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R2, R2, #3 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R2, R2, #6 ;1 Bit Shift (Left) - 10 degree turn
    PUTS
    AND R0, R0, #0
    ADD R0, R0, #10
    OUT

    ADD R5, R5, #-1 ;Decrement Loop (1x)
    BRz LL3

Stop    HALT

    .END

0 个答案:

没有答案