鱼C论坛

 找回密码
 立即注册
查看: 2276|回复: 1

[已解决]设置cx传输长度是用offset ipend-offset ip

[复制链接]
发表于 2019-3-21 22:27:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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,求详解
最佳答案
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 结束)总的字节数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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 结束)总的字节数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 07:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表