| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
assume cs:code 
 
code segment 
start:mov ax,cs 
      mov ds,ax 
      mov si,offset ip      ;设置ds:si指向源地址 
      
      mov ax,0 
      mov es,ax 
      mov di,200h 
      mov cx,offset ipend-offset ip    ;设置cx为传输长度 
      cld 
      movsb 
       
      mov ax,0 
      mov es,ax 
      mov word ptr es:[7ch*4],200h 
      mov word ptr es:[7ch*+2],0 
       mov ax,4c00h 
       int 21h 
       
   ip:push bp 
      mov bp,sp 
      dec cx 
      jcxz ipset 
      add [bp+2],bx 
 ipset:pop bp 
       iret 
       mov ax,4c00h 
       int 21h 
 ipend:nop 
   
code ends 
end start                 
 
这是7ch中断例程,请问为何设置cx传输长度是用offset ipend-offset ip,求详解
 本帖最后由 jackz007 于 2019-3-21 23:30 编辑 
-  ip:   push bp         ; offset ip 是本条指令在 code 段内的偏移
 
 - . . . . . .
 
 -        int 21h
 
 - ipend: nop            ; offset ipend  是本条指令(也是上一条指令的结束点) 在 code 段内的偏移
 
  
-                       ; offset ipend - offset ip = 中断处理程序代码从头到尾(从 ip 开始,到 ipend 结束)总的字节数
 
 
  复制代码 
 
 
 |   
 
 
 
 |