为啥 debug和普通运行的结果不一致

zzmzzma 2008-12-17 09:22:51
debug下结果没问题运行程序就出不了结果为啥
功能
从键盘输入一个字符串,显示出现次数最少的最晚输入的一个字符及个数。
e.g.>djtyddy(输入)
t:1(输出)
代码
MyStack segment stack
dw 128 dup(?)
MyStack ends


data segment
string db 100,?,100 dup(?);接受输入
count db ?;记录各个字符出现的次数
temp db 99;记录当前出现次数最少的字符数
result db ?;记录出现次数最少且最后出现的字符

data ends

code segment

assume cs:code,ds:data,ss:MyStack


start:
mov ax,data
mov ds,ax
;mov es,ax

;接受输入
Lea di,string
mov ah,10d
int 21h

call cr


xor cx,cx
mov CL,string+1
Lea bx,string
add bx,2

Lab:
mov dh,[bx]
call compare
mov DL,count

cmp temp,DL
jc run; temp-count<0
mov temp,DL
mov result,dh

run:
inc bx
mov DL,0
mov count,DL
cmp CX,0
jz Lab_over
loop Lab


Lab_over:
; call cr
mov ah,2
mov DL,result
int 21h

mov dL,':'
int 21h

mov ah,2
mov DL,temp
add DL,30h
int 21h


mov ah,4ch
int 21h

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;子程序;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;子程序1:实现回车换行
CR proc near
push ax
push dx

mov ah,2
mov DL,0ah
int 21h
mov DL,0dh
int 21h

pop dx
pop ax

ret
CR endp
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;子程序2:实现字符的比较统计相同字符数量
compare proc near
push bx
push cx

xor cx,cx
mov CL,string+1
Lea bx,string
add bx,2

next:
cmp dh,[bx]
jz same
jmp continue

same:
inc count

continue:
inc bx
cmp CX,0
jz Lab_1
loop next

Lab_1:
pop cx
pop bx

ret

compare endp


;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



code ends
end start
...全文
242 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
xtdumpling 2008-12-18
  • 打赏
  • 举报
回复
mov ah,0
int 16h
加上这两句试试

mov ah,4ch
int 21h
xiaopoy 2008-12-18
  • 打赏
  • 举报
回复
code完全一致?链接为com文件了?

21,453

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧