梦想飞翔的蜗牛 发表于 2019-3-21 22:27:35

设置cx传输长度是用offset ipend-offset ip

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:,200h
      mov word ptr es:,0
       mov ax,4c00h
       int 21h
      
   ip:push bp
      mov bp,sp
      dec cx
      jcxz ipset
      add ,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 22:39:30

本帖最后由 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 结束)总的字节数
页: [1]
查看完整版本: 设置cx传输长度是用offset ipend-offset ip