-1

我正在尝试根据 N 的值打印一个星号三角形。我在这里的代码将只打印一整行 N *。我正在寻找的最终结果是:

*
**
***
****
If N = 4

我现在拥有的代码

       .ORIG x3000

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

        AND     R2, R2, #0  ; R2 = 0
LOOP    ADD R3, R2, R1  ; while (R2 < N)
        BRzp     
        LD   R0, STAR   ; R0 = *
        OUT             ; Write *
        LEA  R0, NEWLN  ; R2 = R2 + 1
        PUTS
        ADD  R2, R2, #1 ; 
        BRnzp    LOOP
ELOOP
        LEA  R0, NEWLN
        PUTS

STOP    HALT        

N       .FILL    4
STAR    .FILL    x2A
NEWLN   .STRINGZ "\n"

谁能帮我完成这个?

4

3 回答 3

-1

make_COM

; COM 文件在 CS:0100h ORG 100h 加载

MOV AH,0EH 呼叫 A4 呼叫 A3 呼叫 A2 呼叫 A1 JMP 停止

A4: 移动 AL,41H

INT 10H

A3: MOV AL,41H INT 10H A2: MOV AL,41H INT 10H A1: MOV AL,41H INT 10H MOV AL,0DH INT 10H MOV AL,0AH INT 10H RET 停止: .EXIT

;只需将 41h(A) 更改为 *(十六进制)

于 2017-02-11T07:29:57.377 回答
-1
;; Author: Chris Wickell


.ORIG x3000

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

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

    LOOP    LEA  R0, NEWLN

    PUTS    

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

    BRzp ELOOP

    ADD  R5, R5, #1 ;

    ADD  R4, R4, #1

    FLOOP   LD   R0, STAR   ; R0 = *

    OUT             ; Write *
    ADD R5, R5, #-1

    BRp FLOOP

    ADD R5, R4, #0

    ADD  R2, R2, #1 ;

    BRnzp    LOOP
    ELOOP
    LEA  R0, NEWLN

    PUTS

    STOP    HALT        

N       .FILL    6

STAR    .FILL    x2A

NEWLN   .STRINGZ "\n"
于 2015-10-29T03:47:39.903 回答
-2

make_COM

; COM 文件在 CS:0100h ORG 100h 加载

MOV AH,0EH 呼叫 A4 呼叫 A3 呼叫 A2 呼叫 A1 JMP 停止

A4: 移动 AL,41H

INT 10H

A3: MOV AL,41H INT 10H A2: MOV AL,41H INT 10H A1: MOV AL,41H INT 10H MOV AL,0DH INT 10H MOV AL,0AH INT 10H RET 停止: .EXIT

于 2017-02-11T07:24:16.123 回答