• 早期as86汇编指令rep movw解释


    研读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! 是复制过去,原来的代码还在。

  • 相关阅读:
    本地存储 localStorage
    正则对象
    面向对象
    事件
    日期对象
    网易适配与淘宝适配
    自动把网页px单位转换成rem
    湖南省web应用软件(中慧杯)
    百度图片审核功能
    百度ai语音识别
  • 原文地址:https://www.cnblogs.com/unsigned-error/p/8456542.html
Copyright © 2020-2023  润新知