|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 LLCK910 于 2012-7-18 15:23 编辑
最近学习汇编卡在这里好几天了....汇编里面的多重循环,书上是说为了不让CX寄存器被混淆,可以将CX寄存器保存到内存或者寄存器和栈空间中.但是我调试书上的例题后自己修改了一点,就发现程序功能虽然正常的实现了,但是程序陷入了死循环.....
求鱼油们帮我分析下
assume cs:code,ds:data
data segment
db '....computer....'
db '....nobadaby...'
db '....supersta.......'
db '....continue.....'
data ends
code segment
start:mov ax,data
mov ds,ax ;内存中定义的数据和数据段进行关联
mov si,0
mov bx,0
mov cx,4 ;外循环循环次数为4次
s:mov dx,0 ;空操作外循环的返回地址
mov cx,4 ;内循环循环次数为8次
push cx ;内循环次数压栈保存
s1:mov al,ds:[bx+si+4]
and al,11011111b
mov ds:[bx+si+4],al ;转换成大写字母
inc si
mov al,ds:[bx+si+4]
or al,00100000b
mov ds:[bx+si+4],al ;转换成小写字母
inc si
loop s1 ;返回到内循环的起始地址
add bx,8h ;外循环循环一次内循环循环8次 进入下一次循环
pop cx ;外循环的循环次数 出栈
loop s ;返回到外循环起始地址
mov ax,4c00h
int 21h ;程序运行结束后,返回系统的领空
code ends
end start
|
|