首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

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

2012-02-15 
输出时出现乱码!我需要输出的是我输入的字符和字符数量和byebye但是输出时总有一堆乱码怎么回事啊!dataseg

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

热点排行