求助:8086CPU字节数

countrygril 2010-01-08 11:44:26
下面的代码是将自己的mov ax,4c00H之前的代码复制到20:0处,但是我到底如何知道mov ax,4c00H之前自己的程序到底有多少个字节?江湖求助!
assume cs:egg
egg segment
mov ax,cs
mov ds,ax ;将段地址设置为当前程序地址
mov ax,0020H
mov es,ax ;设置es段地址在20H处
mov bx,0
mov cx,20 ;疑问啊 多少次呢?mov ax,4c00H之前到底有多少字节啊??这里的20到底应该是什么?
s: mov al,ds:[bx] ;循环从当前程序地址复制字节到es段处
mov es:[bx],al
inc bx
loop s

mov ax,4c00H
int 21H
egg ends
end
...全文
90 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
用户 昵称 2010-01-08
  • 打赏
  • 举报
回复
楼主这个问题俺也回复过,只针对这个问题,可以

mov cx, offset s
sub cx, offset egg ;段标号


如果你做上机题,自己添加一个标号可能是不符合题意的。
countrygril 2010-01-08
  • 打赏
  • 举报
回复

看来正规做法就是 加两个标签,然后做-

谢谢楼上了!
cnzdgs 2010-01-08
  • 打赏
  • 举报
回复
在要复制代码的前面和后面各定义一个标号,取两个标号的偏移量相减就是字节数。
另外提一下,20:0是中断向量表的地址范围,不要随便修改,书上的内容有些是不该学的。

21,458

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧