简体   繁体   English

如果我打印换行符,那么我的循环不会停止

[英]If I print newline then My loop doesn't stop

I wand to print star as many as user's input value but when I print a newline then my loop doesn't work otherwise without printing newline my code works fine. 我想打印与用户输入值一样多的星号,但是当我打印换行符时,如果不打印换行符,我的循环将不起作用,否则我的代码将无法正常工作。 Why it's happening i don't understand. 我不明白为什么会这样。

.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

The instruction loop uses register cx to count and repeat the process, so you can move the number of asterisk from al into cl : 指令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.

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM