Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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
Assembly x86程序集中的嵌套循环?_Assembly_X86_Tasm - Fatal编程技术网

Assembly x86程序集中的嵌套循环?

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

也许这很愚蠢,但我对汇编程序还很陌生,所以请容忍我

有没有办法在汇编程序中实现嵌套循环? 请举个例子

我根据一个示例创建了这个简单的代码,它输出字母: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
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。我现在也要发牢骚了。

让人们发现代码中的错误并不是特别有效。您应该使用调试器来隔离问题,方法是跟踪程序的进度,并将其与预期发生的情况进行比较。一旦这两个问题出现分歧,你就发现了问题所在。(然后,如果有必要,您应该构造一个。)遵循奥利的建议:调试器将允许您一次一条指令地执行程序。特别注意每一步内存和寄存器的变化;检查指令定义。如果你这样做,你的问题就会变得明显。