RGUN 发表于 2015-6-29 22:47:50

234页实验11的子程序进入死循环

本帖最后由 RGUN 于 2015-6-29 22:49 编辑

新人,在论坛和书上都没找到答案,就来这里问了。
程序编译时没报错,用debug单步调试也没有发现大问题,到int 21h为止还一切正常。
但是在此之后就一直重复着一个指令。代码如下:
assume cs:code,ds:data

data segment
      db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends

code segment
start:cld
      mov ax,data
      mov ds,ax
      mov si,0
      mov cx,49
      call letterc

letterc:dec cx
      mov dl,
      push dx
      mov dh,61h
      cmp dl,dh
      jnb lettersm
      jmp next

lettersm:   pop dx
            mov dh,7ah
            cmp dl,dh
            ja next
            sub dl,20h
            mov ,dl

next:   movsb
      jcxz final
      jmp letterc

final:mov ax,4c00h
      int 21h
code ends

end start


兰陵啸天 发表于 2015-7-2 12:42:59

到了int 21H后,不是要按P停止吗?你按T之后,程序就是随机跳转了,而不是正常终止了。所以我估计这就是出现上述问题的原因。

fast 发表于 2015-7-27 03:32:00

到了int 21H要输入p才能正常退出,不然就随机跳转了
页: [1]
查看完整版本: 234页实验11的子程序进入死循环