我创建了一个程序,它将输出以下字母:
W
V
U
T
S
R
这是我正在使用的代码:
.model small
.stack 100h
.data
M DB 'W'
.CODE
MAIN PROC FAR
MOV AX, @DATA
MOV DS, AX
MOV AX, 003H
INT 10H
MOV CX, 6
X:
MOV AH, 02
MOV DL, M
INT 21H
DEC M
MOV AH, 2
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
LOOP X
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
我希望输出看起来像这样:
W
VW
UVW
TUVW
STUVW
RSTUVW
我是这种编程语言的新手,我真的很难学习它。
更新: 请参阅下面的代码。
.model small
.stack 100h
.data
.CODE
; mov I, 0
; WhileLp: cmp I, 100
; jge WhileDone
; inc I
; jmp WhileLp
; for (CX = 6; CX != 0; CX--) {
; for (BL = 0; BL != 7-CX; BL++) {
; putchar(M+BL);
; }
; M--;
; putchar(10);
; putchar(13);
; }
M DB 'W'
MAIN PROC FAR
MOV AX, @DATA
MOV DS, AX
MOV AX, 003H
INT 10H
MOV CX, 6
WHILECX:
MOV AL, 7
WHILEBL:
SUB CL, AL
CMP BL, CL
JGE WHILEDONE
MOV AH, 02
MOV DL, M
INT 21H
MOV DL, BL
INT 21H
INC BL
JNE WHILEBL
DEC M
WHILEDONE:
MOV AH, 2
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
LOOP WHILECX
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
答案 0 :(得分:0)
在你的当前循环中放入另一个循环(你不一定要使用LOOP
指令)打印以M.开头的7-CX
个字符。所以在第一次迭代外循环你将做内循环7-6 == 1次,它将打印'W'。下次你将进行内循环7-5 == 2次,M的初始值为'V',因此你将打印“VW”。等等。
整个事物的伪代码:
for (CX = 6; CX != 0; CX--) {
for (BL = 0; BL != 7-CX; BL++) {
putchar(M+BL);
}
M--;
putchar(10);
putchar(13);
}