以汇编语言(LC-3)打印*的三角形
问题描述:
我正在尝试打印基于N值的星号三角形。我在此处的代码将只打印N *行的整行。最终的结果我期待的是:以汇编语言(LC-3)打印*的三角形
*
**
***
****
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"
谁能帮助我完成这个?
答
;; 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"
答
make_COM
; COM文件被加载在CS:0100H ORG 100H
MOV AH,0EH CALL A4 CALL A3 CALL A2 CALL A1 JMP STOP
A4:MOV 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 STOP: .EXIT
答
make_COM
; COM文件被加载在CS:0100H ORG 100H
MOV AH,0EH CALL A4 CALL A3 CALL A2 CALL A1 JMP STOP
A4:MOV 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 STOP: .EXIT
;只是改变41H(A)为*(以十六进制)
该代码如何做(或不做)你想要什么? – usr2564301 2014-10-30 23:55:45
此处的代码将在单行中打印N * – 2014-10-31 00:00:36
因此,您对'NEWLN'的调用不起作用,或者可能在错误的时间调用?你是否使用调试器完成代码? – usr2564301 2014-10-31 00:04:37