鱼C论坛

 找回密码
 立即注册
查看: 2387|回复: 2

无限输出的问题

[复制链接]
发表于 2018-6-12 20:34:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 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

刚开始学,忘轻喷
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.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次循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 13:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表