主题:[讨论]怎么不让我输入啊
要求输入一个字母字符串以回车结束同时保存到BUF开始的缓冲区当中,并将其中每一个字母(A—Z,忽略大小写)的个数分别存放到CUNT开始的26个字节单元当中(最好以BCD码形式存储)。
我编程如下:
DATA SEGMENT
MSG DB 'Please input an alphabet string,CR to finish:',0AH,0DH,'$'
BUF DB 255 DUP(?)
COUNT DB 26 DUP(0)
biao db 40h
shu db 27
DATA ENDS
code segment
assume cs:code,ds:data
main proc far
start: mov ax,0
mov si,0
mov di,0
mov ax,data
mov ds,ax
mov ah,09h
mov dx,offset msg
int 21h
mov dx,offset buf;调用输入,怎么就不执行呢?
mov ah,0ah
int 21h
sub di,di
xiayige: dec shu
mov si,0
mov bl,0
inc di
inc biao
mov cx,buf+1
mov si,1
mov al,biao
next: inc si
cmp al,buf+si
loopne next
inc bl
add al,20h
mov si,1
nextda: inc si
cmp al,buf+si
loopne nextda
inc bl
mov count[di],bl
jmp shuchu
hui: cmp shu,0
jne xiayige
jmp over
shuchu: mov dl,biao
mov ah,02h
int 21h
mov dl,3ah
mov ah,02h
int 21h
mov dl,bl
mov ah,02h
int 21h
mov dl,' '
mov ah,02h
int 21h
jmp hui
over: ret
main endp
code ends
end start
最后运行时,调用中断21,并没有 让我输入字符就输出了
我编程如下:
DATA SEGMENT
MSG DB 'Please input an alphabet string,CR to finish:',0AH,0DH,'$'
BUF DB 255 DUP(?)
COUNT DB 26 DUP(0)
biao db 40h
shu db 27
DATA ENDS
code segment
assume cs:code,ds:data
main proc far
start: mov ax,0
mov si,0
mov di,0
mov ax,data
mov ds,ax
mov ah,09h
mov dx,offset msg
int 21h
mov dx,offset buf;调用输入,怎么就不执行呢?
mov ah,0ah
int 21h
sub di,di
xiayige: dec shu
mov si,0
mov bl,0
inc di
inc biao
mov cx,buf+1
mov si,1
mov al,biao
next: inc si
cmp al,buf+si
loopne next
inc bl
add al,20h
mov si,1
nextda: inc si
cmp al,buf+si
loopne nextda
inc bl
mov count[di],bl
jmp shuchu
hui: cmp shu,0
jne xiayige
jmp over
shuchu: mov dl,biao
mov ah,02h
int 21h
mov dl,3ah
mov ah,02h
int 21h
mov dl,bl
mov ah,02h
int 21h
mov dl,' '
mov ah,02h
int 21h
jmp hui
over: ret
main endp
code ends
end start
最后运行时,调用中断21,并没有 让我输入字符就输出了