LLCK910 发表于 2012-7-18 14:38:06

汇编代码陷入了死循环

本帖最后由 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:
       and al,11011111b
       mov ds:,al;转换成大写字母
       inc si
       mov al,ds:
       or al,00100000b
       mov ds:,al ;转换成小写字母
       inc si
       loop s1             ;返回到内循环的起始地址
       add bx,8h          ;外循环循环一次内循环循环8次 进入下一次循环
       pop cx             ;外循环的循环次数 出栈
       loop s            ;返回到外循环起始地址
       mov ax,4c00h
       int 21h             ;程序运行结束后,返回系统的领空
code ends
end start
      

LLCK910 发表于 2012-7-18 14:38:55

{:5_107:}我表示卡在这里好几天了

丿夏夜灬彬刂 发表于 2012-7-18 15:07:29

表示看不懂{:5_107:}

LLCK910 发表于 2012-7-18 21:39:37

今天自己找到错误的原因了 ,很粗心的低级错误


丝瓜丶 发表于 2012-7-18 22:22:07

我还什么都不懂
页: [1]
查看完整版本: 汇编代码陷入了死循环