4

過去数日間、nasmide でアセンブリ言語を使用してアルファベットを印刷しながら新しい行を印刷しようとしてきましたが、取得できません。これまでに試したことは、何も印刷しないか、A だけを印刷するか、または多数のシンボル、Google は役に立たなかったので、ここに投稿することにしました。

これまでの私のコードは

CR equ 0DH
LF equ 0AH

main:
mov AH,02H
mov CX,26
mov DL, 'A'

while1:
cmp DL, 'A'
add DL, 01H
int 21H
mov DL, 0DH
mov DL, 0AH
int 21H
cmp DL, 'Z'
je Next
jmp while1

Next:
mov AH,4CH
int 21h
4

6 に答える 6

15

改行を印刷するコード

MOV dl, 10
MOV ah, 02h
INT 21h
MOV dl, 13
MOV ah, 02h
INT 21h

アスキー ---> 10 改行

ascii ---> 13 キャリッジ リターン

それは、新しい行のアセンブリのコードであり、コードは書き込み機でインスパイアされています。私たちの教授は私たちにその話をしてくれましたが、私は英語が苦手です。

乾杯 :)

于 2014-01-02T18:42:22.007 に答える
3

さて、まず最初に:

mov DL, 0DH
mov DL, 0AH
int 21H

あなたに何の役にも立ちません。0Dh を DL にロードし、最初の値を使用せずにすぐに 0Ah で上書きします...両方の文字で呼び出し (int 21h) を行う必要があります...

さらに、改行に DL を使用していると、文字の以前の使用が上書きされます...必要に応じてその値を保存して復元する必要があります。

于 2013-04-05T12:07:12.777 に答える
3

100% 動作します。

CR equ 0DH
LF equ 0AH

main: 
    mov DL, 'A'

while1:
    mov AH,02H      ;print character
    int 21H 

    mov BL, DL      ;store the value of DL before using DL for print new line

    mov DL, 10      ;printing new line
    mov AH, 02h
    int 21h
    mov DL, 13
    mov AH, 02h
    int 21h

    mov DL, BL      ;return the value to DL

    cmp DL, 'Z'
    je exit 
    add DL, 1       ;store in DL the next character
    jmp while1

exit:
    mov AH,4CH
    int 21h
于 2018-04-19T09:02:55.153 に答える
0

あなたはただ使うことができます

 mov ah, 02h
 mov dl, 13
 int 21h
 mov dl, 10
 int 21h 
 ret

ただし、「メインendp」の下部でprocとして宣言すると、その関数に改行という名前を付けて、改行が必要な場所で呼び出すことができます

于 2016-05-14T04:55:34.990 に答える
-3
mov dl, 0a
int 21h
int 0ah

これを試して

于 2016-03-08T17:38:19.900 に答える