Assembly x86程序集中的嵌套循环?
也许这很愚蠢,但我对汇编程序还很陌生,所以请容忍我 有没有办法在汇编程序中实现嵌套循环? 请举个例子 我根据一个示例创建了这个简单的代码,它输出字母:WVUTSR我对它进行了一些修改,以便如下输出:Assembly x86程序集中的嵌套循环?,assembly,x86,tasm,Assembly,X86,Tasm,也许这很愚蠢,但我对汇编程序还很陌生,所以请容忍我 有没有办法在汇编程序中实现嵌套循环? 请举个例子 我根据一个示例创建了这个简单的代码,它输出字母:WVUTSR我对它进行了一些修改,以便如下输出: W VW UVW TUVW STUVW RSTUVW 但我得到的却是: WW VV UU TT SS RR 代码如下: .model small .stack 100h .data M DB 'W' .CODE MAIN PROC FAR MOV AX, @DATA MOV DS, AX
W
VW
UVW
TUVW
STUVW
RSTUVW
但我得到的却是:
WW
VV
UU
TT
SS
RR
代码如下:
.model small
.stack 100h
.data
M DB 'W'
.CODE
MAIN PROC FAR
MOV AX, @DATA
MOV DS, AX
MOV AX, 003H
INT 10H
; for (CX = 6; CX != 0; CX--) { // PSEUDO CODE
; for (BL = 0; BL != 7-CX; BL++) {
; putchar(M+BL);
; }
; M--;
; putchar(10);
; putchar(13);
; }
MOV CX, 6
OUTER:
INNER:
MOV AL, 7
SUB AL, CL
CMP BL, AL
JE INNEREQUAL
MOV AH, 02
MOV DL, M
INT 21H
MOV DL, AL
INT 21H
INC BL
JNE INNER
INNEREQUAL:
DEC M
MOV AH, 2
MOV DL, 10
INT 21H
MOV DL, 13
INT 21H
LOOP OUTER
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
如果有帮助的话,我正在使用tasm。我现在也要发牢骚了。让人们发现代码中的错误并不是特别有效。您应该使用调试器来隔离问题,方法是跟踪程序的进度,并将其与预期发生的情况进行比较。一旦这两个问题出现分歧,你就发现了问题所在。(然后,如果有必要,您应该构造一个。)遵循奥利的建议:调试器将允许您一次一条指令地执行程序。特别注意每一步内存和寄存器的变化;检查指令定义。如果你这样做,你的问题就会变得明显。