首页 > 其他 > 详细

早期as86汇编指令rep movw解释

时间:2018-02-21 14:05:11      阅读:468      评论:0      收藏:0      [点我收藏+]

研读linux内核早期源代码,发现这样一段:

 

45 entry start ! 告知连接程序,程序从start 标号开始执行。
46 start:
47 mov ax,#BOOTSEG ! 将ds 段寄存器置为0×7C0;
48 mov ds,ax
49 mov ax,#INITSEG ! 将es 段寄存器置为0×9000;
50 mov es,ax
51 mov cx,#256 ! 移动计数值=256 字;
52 sub si,si ! 源地址 ds:si = 0×07C0:0×0000
53 sub di,di ! 目的地址 es:di = 0×9000:0×0000
54 rep ! 重复执行,直到cx = 0
55 movw ! 移动1 个字;
56 jmpi go,INITSEG ! 间接跳转。这里INITSEG 指出跳转到的段地址。
57 go: mov ax,cs ! 将ds、es 和ss 都置成移动后代码所在的段处(0×9000)。

 

查了很多资料,才完全弄清楚,这种汇编语法和AT&T以及现代intel汇编有不少区别的样子:(,看来还是有不少要继续学习的

rep: 重复执行该语句直至寄存器cx为0

movw: 将DS:SI的内容送至ES:DI,note! 是复制过去,原来的代码还在。

早期as86汇编指令rep movw解释

原文:https://www.cnblogs.com/unsigned-error/p/8456542.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!