|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
</p>此程序在执行内层循环时是没有问题的,当循环到执行外层循环时,不是又进入了死循环了么?pop cx 此时cx是4,回到s0位置,把cx又入栈,之后cx再次改写为3,执行二维数组第二行的循环,之后执行第三行,之后应该永远执行下去,怎么可能会退出呢? 无论是用栈来存储cx的值,还是用寄存器来存储cx的值都应该是这样,原因就应该是cx不够用。。。是我哪里想错了么?</p>
求解答~~~~
因为在C语言中,
for(i= ; ; i++)
{
for(m= ; ; m++)
{
}
}
用while也是一样,可是双层的循环就是需要两个变量或更多的变量来同步进行移动。。。。
问题:将datasg段中的每个单词字母改为大写字母
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start: mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: push cx
mov si,0
mov cx,3
s: mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s
add bx,16
pop cx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start |
|