2

これはばかげているかもしれませんが、私はアセンブラーにかなり慣れていないので、ご容赦ください。

アセンブラでネストされたループを実装する方法はありますか? 例をいただければ幸いです

例からこの単純なコードを作成しました。それは文字を出力します: 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を使用しています。私もこれから髪を引っ張る予定です。

4

0 に答える 0