汇编网首页登录博客注册
kakaxi3dai的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2008-04-20 20:35] 求助:为什么我编写的中断例程7ch出入栈后CX的数值自动减一??

安装 中断例程 7ch
===================
assume cs:code
code segment
   start: 
        mov ax,code
        mov ds,ax  
        mov si,offset do0
        mov ax,0 
        mov es,ax
        mov di,200h
        mov cx,offset do0end-offset do0
        cld
        rep movsb

       mov ax,0
       mov es,ax
       mov word ptr es:[7ch*4],200h
       mov word ptr es:[7ch*4+2],0
      mov ax,4c00h
       int 21h
 do0:push es
     push di
     push dx
     push cx  
     push ds
     push si
     mov ax,0ah
       mul dh
    add ax,0b800h
     mov es,ax
    mov ax,2
      mul dl
    mov di,ax
 s :push cx             此出入栈 CX的数值自动减1,为什么啊。
      mov ch,0
      mov cl,[si]
     jcxz s0
      pop cx   
   mov ah,cl
   mov al,[si]
   mov es:[di],ax
    inc si
   add di,2
    inc cl               为了程序正常运行每次都要 inc cl 
  loop s
s0  :pop cx
     pop si
     pop ds
     pop cx
     pop dx
     pop di
     pop es 
      iret             
do0end:nop
   code ends
   end start
 ====================================
课本上的程序    
assume cs:code
 data segment
db "welcone to masm",0
data ends
code segment 
start: mov dh,10
   mov dl,10
   mov cl,11001010b
  mov ax,data
    mov ds,ax
    mov si,0
   int 7ch
 mov ax,4c00h
  int 21h
     
code ends 
end start
评论次数(4)  |  浏览次数(903)  |  类型(分享) |  收藏此文  | 

[  kakaxi3dai   发表于  2008-04-20 20:49  ]

真是的,自己马虎写错了
==============================
s :push cx              
     mov ch,0 
      mov cl,[si] 
     jcxz s0 
      pop cx    
   mov ah,cl 
   mov al,[si] 
   mov es:[di],ax 
    inc si 
   add di,2 
    inc cl   
  loop s    应该改成 jmp s
==============================
就是 loop s指令把CX的数值减一.马虎害死人啊,白白浪费我一个小时的宝贵时间.

[  wdm   发表于  2008-04-21 09:54  ]

楼主真是有意思。
loop本来就是要将cx减1的啊。呵呵
以后写程序的时候不要走私啊。咯咯~~

[  sysnap   发表于  2008-04-21 10:09  ]

博主很用心啊,要是我肯定懒于用debug调试了,也不会发现cx少一这个问题~

[  kakaxi3dai   发表于  2008-04-22 11:51  ]

其实我也是在看显示结果的时候发现字母的颜色不同,所以用debug查看CL 保存的颜色数据,发现了上述问题.

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码