私はこのコードをしばらくおびえてきました。私が間違っていることを見つけることができません。私はユーザーの入力に基づいて印刷する2つの異なる三角形を取得しようとしていますが、今までは、最初の三角形だけが正しく印刷されています。例えばアセンブリで望ましくないループがあります
、ユーザが4を入力した場合、出力はそうのようにすべきである:
*
* *
* * *
* * * *
* * * *
* * *
* *
*
マイコードが正しく最初の三角形を生成するが、第二のためには、一本
* * * * *
* * * *
* * *
* *
ような出力を加算
私の質問は、私が最初に三角形、BX後正しい出力
org 100h
.data
Input db "Enter size of the triangle between 2 to 9: $" ;String to prompt the user
Size dw ? ; variable to hold size of triangle
.code
Main proc
Start:
Mov ah, 09h
Mov dx, offset input ;prompts user for input
int 21h
mov ah, 01h
int 21h; takes user input
sub al, '0'
mov ah, 0 ;blank top half of ax reigster
mov size, ax ; we use ax instead of al because we used dw instead of db
mov cx, ax ; copy size into variable size and cx reigster
mov bx, 1
call newline
lines: ; outer loop for number of lines
push cx
mov cx,bx
stars: ; inner loop to print stars
mov ah, 02h
mov dl, '*'
int 21h
loop stars
inc bx
call newline
pop cx
loop lines
call newline
; second triangle
mov cx, size
lines2:
push cx
mov cx,bx
stars2:
mov ah, 02h
mov dl, '*'
int 21h
loop stars2
dec bx
call newline
pop cx
loop lines2
;end
call newline
mov cx, size
; third triangle
mov cx, size
lines3:
push cx
mov cx,bx
main endp
proc newline
mov ah, 02h ; go to a new line after input
mov dl, 13
int 21h
mov dl, 10
int 21h
ret ;returns back
newline endp
end main
だから、 'dec bx'を';で追加しようとしましたか?二番目の三角形 '? – Michael