输出时出现乱码!
我需要输出的是我输入的字符和字符数量和bye bye
但是输出时总有一堆乱码怎么回事啊!
data segment
buffer db 15 dup(?)
exit1 db 'bye bye ',13,10, '$ '
count db '0 '
container db 10 dup(?)
data ends
extra segment
numsign0 db '0 '
numsign9 db '9 '
extra ends
code segment
;main proc far
assume cs:code,ds:data,es:extra
start:
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
mov ax,extra
mov es,ax
lea bx,buffer
input:
mov ah,01h
int 21h
cmp al, '$ '
jz exit
jnz judge_0
judge_0:
;lea di,numsign0
cmp al,39h
jl addsign
jnl judge_9
judge_9:
;lea di,numsign9
cmp al,30h
jnl addsign
jl input
addsign:
add count,1
mov container,al
mov [bx],al
inc bx
jmp input
exit:
lea dx,[bx]
mov ah,9
int 21h
lea dx,container
mov ah,9
int 21h
lea dx,exit1
mov ah,9
int 21h
lea dx,count
mov ah,9
int 21h
mov ah,4ch
int 21h
;ret
;main endp
code ends
end start
[解决办法]
乱码是由于 int21h 的 09h 功能进行字符串输出时, 字符串要求以 '$ ' 字符结尾. 所以, 输入的字符串以及 container 区都需要添加 '$ ' 到结尾. 对 container 中数据处理也不对吧? 对输入字符数也没有检查, 输入多了会覆盖 'bye bye ' 字符串的