Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Loops 由*和#x27;汇编语言中的_Loops_Assembly_Machine Language - Fatal编程技术网

Loops 由*和#x27;汇编语言中的

Loops 由*和#x27;汇编语言中的,loops,assembly,machine-language,Loops,Assembly,Machine Language,输入栅格大小(1-9):3 以下是我目前掌握的代码: .ORIG x3000 LEA R0, PRINT LEA R1, MEMSPAC PUTS GETC PUTC M STR R0, R1, #0 N .FILL M LD R1, N NOT R1, R1 ADD R1, R1, #1 ; R1 = -

输入栅格大小(1-9):3

以下是我目前掌握的代码:

.ORIG x3000


        LEA  R0, PRINT

        LEA  R1, MEMSPAC
        PUTS
        GETC
        PUTC
M       STR  R0, R1, #0
N       .FILL M
        LD   R1, N       
        NOT  R1, R1

        ADD  R1, R1, #1   ; R1 = -N


        AND  R2, R2, #0   ; R2 = holds number of *'s to be printed



LOOPA   LEA  R0, NEWLN


        PUTS    


        ADD  R3, R2, R1   ; while (R2 < N)


        BRzp LOOPB      
        ADD  R5, R5, #1   ;


        ADD  R4, R4, #1


LOOPC   LD   R0, STAR     ; R0 = *


        OUT               ; Write *

        ADD  R5, R5, #-1
        BRp  LOOPC
        ADD  R5, R4, #0
        ADD  R2, R2, #1 ;

        BRnzp    LOOPA
LOOPB   
        LEA  R0, NEWLN


        PUTS            

        STOP    HALT        

STAR    .FILL    x2A

RIP     TRAP x25

PRINT   .STRINGZ "Enter grid size (1-9):"

NEWLN   .STRINGZ "\n"

MEMSPAC .blkw 100
        .END
.ORIG x3000
LEA R0,打印
LEA R1,MEMSPAC
放
GETC
普茨
M STR R0,R1,#0
填充
LD R1,N
不是R1,R1
加上R1,R1,#1;R1=-N
R2,R2,#0;R2=保存要打印的*的数量
LOOPA LEA R0,NEWLN
放
添加R3、R2、R1;而(R2

这段代码可以工作并打印三角形。但是,它会进入一个无限循环,而不是打印网格大小3。如果我将代码“N.FILL M”更改为“N.FILL 3”,它将打印出3的网格大小。任何帮助都将不胜感激。谢谢

您的体系结构和汇编程序是什么?这真的是一个无限循环,不是一个大约x3000次的循环吗?对不起,我使用的是LC3汇编程序,在你看来,
N.FILL m
应该做什么?
.ORIG x3000


        LEA  R0, PRINT

        LEA  R1, MEMSPAC
        PUTS
        GETC
        PUTC
M       STR  R0, R1, #0
N       .FILL M
        LD   R1, N       
        NOT  R1, R1

        ADD  R1, R1, #1   ; R1 = -N


        AND  R2, R2, #0   ; R2 = holds number of *'s to be printed



LOOPA   LEA  R0, NEWLN


        PUTS    


        ADD  R3, R2, R1   ; while (R2 < N)


        BRzp LOOPB      
        ADD  R5, R5, #1   ;


        ADD  R4, R4, #1


LOOPC   LD   R0, STAR     ; R0 = *


        OUT               ; Write *

        ADD  R5, R5, #-1
        BRp  LOOPC
        ADD  R5, R4, #0
        ADD  R2, R2, #1 ;

        BRnzp    LOOPA
LOOPB   
        LEA  R0, NEWLN


        PUTS            

        STOP    HALT        

STAR    .FILL    x2A

RIP     TRAP x25

PRINT   .STRINGZ "Enter grid size (1-9):"

NEWLN   .STRINGZ "\n"

MEMSPAC .blkw 100
        .END