无限输出的问题
本帖最后由 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
刚开始学,忘轻喷 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]