读书人

输出时出现乱码!解决办法

发布时间: 2012-02-15 12:09:43 作者: rapoo

输出时出现乱码!
我需要输出的是我输入的字符和字符数量和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 ' 字符串的

读书人网 >汇编语言

热点推荐