. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->INT指令
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  检测点2,取代码段长度,百思不得其解  [已解决] 回复[ 4次 ]   点击[ 385次 ]  
aaaabbbb12345
[帖 主]   [ 发表时间:2009-10-01 13:27 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09
s:cmp byte ptr [si],0
       je ok
       mov al,[si]
       mov es:[di],al
       mov byte ptr es:[di+1],2
       inc si
       add di,2 
       mov bx,offset s-offset ok  (问题在这,OK-S才是代码长度才对,但用OK-S程序就不正确)  
                                   怎么是会是S-OK呢?
       int 7ch
 
    ok:
       mov ax,4c00h
       int 21h
aaaabbbb12345
[第1楼]   [ 回复时间:2009-10-01 13:30 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09
有兴趣的请复制以下完整代码调试:
assume cs:code
  data segment
       db 'converstation',0
  data ends

code segment
start: 
        mov ax,cs
       mov ds,ax
       mov si,offset j

       mov ax,0
       mov es,ax
       mov di,200h

       mov cx,offset j_ok-offset j
       cld
   
       rep movsb  

       mov word ptr es:[7ch*4],200h
       mov word ptr es:[7ch*4+2],0
       
  
       mov ax,data
       mov ds,ax
       mov si,0
    
       mov ax,0b800h
       mov es,ax
       mov di,12*160

     s:cmp byte ptr [si],0
       je ok
       mov al,[si]
       mov es:[di],al
       mov byte ptr es:[di+1],2
       inc si
       add di,2 
       mov bx,offset ok-offset s  ;用OK减S,出现错误,换回来显示正确
       int 7ch
    
    ok:
       mov ax,4c00h
       int 21h

    j: push bp
       mov bp,sp
       add [bp+2],bx
       pop bp
       iret
      
    
    j_ok:nop

code ends
end start
aaaabbbb12345
[第2楼]   [ 回复时间:2009-10-01 13:47 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09
困扰了半天,原来ADD [BP],BX,是要减
aaaabbbb12345
[第3楼]   [ 回复时间:2009-10-01 13:47 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09
自已解决:)
aaaabbbb12345
[第4楼]   [ 回复时间:2009-10-01 13:47 ]   [引用]   [回复]   [ top ] 
荣誉值:4
信誉值:9
注册日期:2009-09-16 17:09
此贴由 贴主 于 [ 2009-10-01 13:47 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved