注册 登录
编程论坛 汇编论坛

分别在屏幕的第2,4,6,8行显示4句英文诗

e0a 发布于 2014-03-24 15:37, 700 次点击
程序运行成无限循环  调试2天 不知道怎么改
求指点错误
程序代码:


 assume cs:code
data segment
db 16 dup (0)
data ends
code segment
  s1:    db 'Good,better,best,','$'
  s2:    db 'Never let it rest,','$'
  s3:    db 'Till good is better,','$'
  s4:    db 'And better,best.','$'
  s:      dw offset s1,offset s2,offset s3,offset s4
  row:  db 2,4,6,8
start:             mov    ax,data
                   mov    ss,ax
                   mov    sp,16
                   mov    si,offset s1
                   mov    dx,offset s  
                   mov    bx,offset row
                   mov    ax,cs
            mov    ds,ax
            mov    ax,0b800h
            mov    es,ax

          mov    cx,4
          mov    ah,0
          mov    al,160

so:                   ;数据段行循环      
          push    ax
          push    cx
          push    dx
          push    bx                ;保存当前寄存器参数
          mul byte ptr [bx]
          mov bx,dx
          mov     di,ax                 ;di  显存 初始位置
so1:      mov     si,[bx]
          cmp byte ptr [si],'$'
          jcxz     ok
          mov     al,[si]
          mov     ah,02h
          mov     es:[di],ax
          add      di,2
          inc       si
          jmp      short so1

ok:                     pop     bx
                        pop     dx
                        pop     cx
                        pop     ax
                        inc      bx
                        add     dx,2
                        loop    so
                        mov    ax,4c00h
                        int      21h
code ends
end start



[ 本帖最后由 e0a 于 2014-3-24 15:39 编辑 ]
3 回复
#2
wp2319572014-03-25 16:08
我都有些忘了  LOOP循环好像检查cx的值  得有类似c里面 cx--的语句
#3
海无边2014-03-26 22:42
还没看懂,帮顶!!!
#4
Alar302014-04-14 21:19
英文诗?
还真没写过。。。
1