WantWhatBicycle 发表于 2018-6-12 20:34:49

无限输出的问题

本帖最后由 WantWhatBicycle 于 2018-6-12 20:41 编辑

本来是要输入一个数,然后循环,但是无论输入什么都是无限输出*

assume ds:data
data segment
   string db '*','$'
   char db ?
data ends
assume cs:code
code segment
start:
   mov bx,data
       mov ds,bx
       mov dx,offset string
       mov ah,1
       int 21h
       mov bl,al
       mov bh,0
       mov bx,1
       mov cx,bp
       s0:
           mov bp,cx
           mov cx,bx
           s1:
          mov ah,9
                int 21h
           loop s1      
                              ;本来在这里加一个 MOV AH,2    MOV DL,0AH   INT 21H的换行,却会从第二行开始就乱码,不知道怎么解决
           inc bx
           mov cx,bp
        loop s0
        mov ah,4ch
        int 21h
        code ends
        end start

刚开始学,忘轻喷

57158597@qq.com 发表于 2018-6-13 09:46:35

assume ds:data,cs:code
data segment
   string db '*','$'
   char db ?
data ends
code segment
start:   mov bx,data
         mov ds,bx
         mov dx,offset string
         mov ah,1
         int 21h                   ;这里返回的AL为ASCII码,需转换
               mov ah,0               
               sub al,48               ;把数字的ASCII码转换成对应的数字,保存到ax中
         mov cx,ax
   s1: mov ah,9
         int 21h
         loop s1      
                              
         mov ax,4c00h
         int 21h
code ends
end start

;改这样就行了,输入的数是多少就显示多少个*号,因为程序没有对小于48的ASCII码进行处理,所以最好输入的数是0-9,或ASCII码大于48的数,否则可能出现FFFFH次循环
页: [1]
查看完整版本: 无限输出的问题