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

有个程序未调试出,请高手帮忙!(多谢先)

2012-02-06 
有个程序未调试出,请高手帮忙!(谢谢先)这是小写转大写的程序assumecs:code--------数据部分------------

有个程序未调试出,请高手帮忙!(谢谢先)
;这是小写转大写的程序
assume   cs:code
;--------数据部分--------------
data   segment
db   'word ',0
db   'unix ',0
db   'wind ',0
db   'good ',0
data   ends
;------------------------------

code   segment
start:
mov   ax,data
mov   ds,ax
mov   bx,0
mov   cx,4
;-------循环转换每个字符串----
s:
mov   si,bx
call   capital
add   bx,5
loop   s
;-------------------------
mov   ax,4c00h
int   21h
;--------------------------------------------------
;小-> 大转换过程
capital:
mov   cl,[si]
mov   ch,0
jcxz   ok
and   byte   ptr   [si],11011111b     ;转换语句
inc   si
jmp   short   capital
ok:
ret
;--------------------------------------------------
code   ends
end   start

[解决办法]
看不太懂,中间的S循环能跳出来吗?会不会访问溢出啊
[解决办法]
我也菜,看不太懂。进入S循环前,si=-1;然后进去调用capital,执行mov cl,[si],就是mov cl,[-1].这给cl赋的是什么值啊?因为我不清楚这时候cl的值,所以也搞不清紧跟的jcxz ok到底会不会跳
[解决办法]
你的第一个程序没有保存CX的值

push cx ;加上

call capital

pop cx ;加上
[解决办法]
data segment
quit db "your put wrong num press any key to exit...... ",13,10, '$ '
data ends
extra segment
max db 'z '
min db 'a '
extra ends
code segment
assume cs:code,ds:data,es:extra
start:
input:
mov ax,data
mov ds,ax
mov ax,extra
mov es,ax
mov ah,01h
int 21h
;mov ax, 'd '
lea di,min
scas min
jb exit
ja judgez

exit:mov ah,9
lea dx,quit
int 21h

judgez:
lea di,max
scas max
ja exit
jb amend
amend:
sub al,20h
mov dx,ax
mov ah,2h
int 21h
mov ah,4ch
int 21h
code ends
end start

热点排行