. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  谁知道这个程序哪里错了?  [待解决] 回复[ 2次 ]   点击[ 370次 ]  
grasshat
[帖 主]   [ 发表时间:2008-11-05 11:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-03 20:56
;看看吧,这个程序非常有意思啊(我写的)!注意:这个程序是错的!
;目的是考考大家!
assume cs:code
        data segment
                db 'i love you',0
        data ends
        code segment
                start:        mov ax,cs                   ;installation program
                                mov ds,ax
                                mov si,offset int_start
                                mov ax,0
                                mov es,ax
                                mov di,200h
                                mov cx,offset int_end-offset int_start
                                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,0b800h
                                mov es,ax
                                mov dh,5
                                mov dl,12
                                mov cl,11001010b
                                mov ax,data
                                mov ds,ax
                                mov si,0
                                int 7ch
     int_start: mov al,160
                mov ah,0
                              mul dh
                              mov dh,0
                              add ax,dx
                              mov bx,ax
                              ;mov bx,5*160+40
                              mov di,0
          cyc:  mov al,ds:[si]
                cmp al,0
                je ok
                mov es:[bx+di],al
                mov es:[bx+di+1],cl
                inc si
                add di,2
                jmp short cyc
                    ok:        mov ax,4c00h
                                  int 21h                  
       int_end: nop                        
        code ends
end start
grasshat
[第1楼]   [ 回复时间:2008-11-05 11:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2008-11-03 20:56
当你把dl的值换成奇数显示就不正确,而换成偶数就显示正确结果。  
当你把add ax,dx换成adc ax,dx那么当换成奇数就能正确显示,而换成偶数就不能正确显示了!
tomato
[第2楼]   [ 回复时间:2008-11-05 13:05 ]   [引用]   [回复]   [ top ] 
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
看看你的博客中的留言吧。一个小地方,但不能不注意。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved