如果我打印换行符,那么我的循环不会停止
If I print newline then My loop doesn't stop
我想打印与用户输入值一样多的星标,但是当我打印一个换行符时,我的循环将无法工作,否则如果不打印换行符,我的代码可以正常工作。
为什么会这样我不明白。
.model small
.stack 100h
.data
msg1 db "How many star do you want to print: $"
newline db 10,13,"$"
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
lea dx,msg1
int 21h
mov ah,1 ;taking input number
int 21h
mov bl,al
sub al,48
;if i add newline code here then my loop doesn't stop
; mov ah,9
; mov ah,newline
; int 21h
loop:
mov cx,0
mov cl,al
mov ah,2
mov dl,'*'
Top:
int 21h
loop Top
Exit:
endp
end main
指令loop
使用寄存器cx
计数并重复这个过程,所以你可以把星号的个数从al
移动到cl
:
mov ah,1 ;taking input number
int 21h
xor cx,cx ;◄■■ CLEAR CX.
mov cl,al ;◄■■ CX NOW HOLDS THE NUMBER OF ASTERISKS.
sub cl,48
;if i add newline code here then my loop doesn't stop
mov ah,9
lea dx,newline ;◄■■ UNCOMMENT LINE BREAK.
int 21h
loop:
;mov cx,0 ;◄■■ HERE WE CANNOT CHANGE CX BECAUSE
;mov cl,al ;◄■■ IT IS THE COUNTER FOR THE LOOP.
mov ah,2
mov dl,'*'
Top:
int 21h
loop Top ;◄■■ CX--. IF CX>0 JUMP.
我想打印与用户输入值一样多的星标,但是当我打印一个换行符时,我的循环将无法工作,否则如果不打印换行符,我的代码可以正常工作。 为什么会这样我不明白。
.model small
.stack 100h
.data
msg1 db "How many star do you want to print: $"
newline db 10,13,"$"
.code
main proc
mov ax,@data
mov ds,ax
mov ah,9
lea dx,msg1
int 21h
mov ah,1 ;taking input number
int 21h
mov bl,al
sub al,48
;if i add newline code here then my loop doesn't stop
; mov ah,9
; mov ah,newline
; int 21h
loop:
mov cx,0
mov cl,al
mov ah,2
mov dl,'*'
Top:
int 21h
loop Top
Exit:
endp
end main
指令loop
使用寄存器cx
计数并重复这个过程,所以你可以把星号的个数从al
移动到cl
:
mov ah,1 ;taking input number
int 21h
xor cx,cx ;◄■■ CLEAR CX.
mov cl,al ;◄■■ CX NOW HOLDS THE NUMBER OF ASTERISKS.
sub cl,48
;if i add newline code here then my loop doesn't stop
mov ah,9
lea dx,newline ;◄■■ UNCOMMENT LINE BREAK.
int 21h
loop:
;mov cx,0 ;◄■■ HERE WE CANNOT CHANGE CX BECAUSE
;mov cl,al ;◄■■ IT IS THE COUNTER FOR THE LOOP.
mov ah,2
mov dl,'*'
Top:
int 21h
loop Top ;◄■■ CX--. IF CX>0 JUMP.