2016-04-25 12 views
2

MASM x86(8086)にアスタリスク ""で構築された一連の直角三角形を出力するプログラムを作成しようとしています。私は、三角形を印刷するためにループを使用しています。私は、三角形のそれぞれをアスタリスクを3から9まで高くし、同じ数を異なる構成で作ろうとしています。私は三角形だけを印刷するようにしました。私の最初の三角形が印刷された後は、アスタリスクのループを ""だけ無期限に保ちます。ここに私のコードの一部は次のとおりです。MASM x86(16ビット)に複数の三角形を印刷する

mov ah, 09h ;prints string 
    mov dx, offset input 
    int 21h 

    mov ah, 01h ;reads in character 
    int 21h 

    sub al, '0' ;is gunna read into lower half by default 
    mov ah, 0 ;blanking higher half of register so that way it doesnt throw off program 
    mov size, ax 
    mov cx, ax 
    mov bx, cx 
    push bx 

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


lines: 
    push cx 

    stars: 
    mov ah, 02h 
    mov dl, '*' 
    int 21h 


    loop stars 

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

    pop cx 

    loop lines 

    mov bx, size 

    mov ax, 4c00h 
    int 21h 

イム私は、変数を保持し、おそらく別のループを作成するために、別のレジスタを作成する必要があります推測します。
私の質問は、ユーザー入力を別のレジスタに渡す必要があるかどうかです。もしそうなら、私はそれをどのように渡すことができますか?

+0

あなたが質問をするのを忘れていました。 –

+0

私の質問は、ユーザー入力を別のレジスタに渡す必要があるかどうかです。もしそうなら、私はそれをどのように渡すことができますか? –

+0

あなたの投稿には依然として質問がありません。投稿を編集して必要な情報をすべて入力してください。 –

答えて

1

あなたはすでにSIZE変数にユーザー入力を入れていますので、問題ありません。第一三角形後
は、あなたが、バックCXレジスタで、この変数を置くビット(多かれ少なかれ)、それを変更して、三角形のためのコードを繰り返し描かれている:

; First user defined triangle 

    mov ah, 02h 
    mov dl, 13 
    int 21h 
    mov dl, 10 
    int 21h 
lines: 
    push cx 
stars: 
    mov ah, 02h 
    mov dl, '*' 
    int 21h 
    loop stars 
    mov ah, 02h 
    mov dl, 13 
    int 21h 
    mov dl, 10 
    int 21h 
    pop cx 
    loop lines 

; Take back the size and change it a bit 

    mov cx, size 
    add cx, 5 

; Second bigger triangle 

    mov ah, 02h 
    mov dl, 13 
    int 21h 
    mov dl, 10 
    int 21h 
lines: 
    push cx 
stars: 
    mov ah, 02h 
    mov dl, '*' 
    int 21h 
    loop stars 
    mov ah, 02h 
    mov dl, 13 
    int 21h 
    mov dl, 10 
    int 21h 
    pop cx 
    loop lines 
+0

だから私はそれを試して、それはほとんど動作します。例えば、私がユーザー入力のために3インチを置くと、私は1つの正しい三角形を得て、次に大きな三角形の無限ループを得ます。ありがとう、結構です!私は本当に助けに感謝し、私の目標に近づけました、私はここから試してデバッグできると思います。ありがとう! –