zoukankan      html  css  js  c++  java
  • Lab 1 : Part 1 exercise 2

    Lab 1 : Part 1 - exercise 2

    这部分是使用 gdb 的 si 命令去追踪几条指令,试着分析一下指令的实现

    8088 处理器介绍

    8088处理器的地址线是 20 ,可访问的地址空间为 (2^{20} B);而8088处理器的寄存器的大小仅为 (16 bit),故寻找下一个需要执行的指令的地址时,需要进行计算。

    计算方法为:CS << 4 + IP

    指令分析

    [f000:fff0]    0xffff0:	ljmp   $0xf000,$0xe05b
    [f000:e05b]    0xfe05b:	cmpl   $0x0,%cs:0x6ac8
    [f000:e062]    0xfe062:	jne    0xfd2e1
    [f000:e066]    0xfe066:	xor    %dx,%dx
    

    ljmp 是跳转指令,指令后面的两个地址分别是段地址和偏移地址,即该指令执行后应跳转到 0xf000 << 4 + 0xe05b = 0xfe05b

    第二条指令 cmpl 的地址为 0xfe05b 证实了上述分析,该指令将立即数0x0cs:0x6ac8里的内容进行比较,并对处理器的标志寄存器(PSW)进行相应的设置(具体怎么设置我也不太清楚了,汇编忘得差不多了)

    jne (应该是叫做 jump not equal)若 ZF 位为 0 则跳转,该指令结合了上一条指令配合使用(说明上条指令若相等则 ZF 置 0)

    xor 是异或,这条指令是把 dx 寄存器清零,至于为啥这么做我也不太晓得了。

    后面的指令大概看了一下,理解起来有些困难,就不往下看了。大家有兴趣的话可以继续往下读。

  • 相关阅读:
    vue--组件基础
    vue中的一些知识点--多看文档
    关于组件--React
    数组方法-->map()
    正则表达式使用
    border-image 和 border-color 不能同时使用问题
    gulp
    oninput 中文输入
    linux文档权限
    为什么使用 use strict
  • 原文地址:https://www.cnblogs.com/joe-w/p/12551684.html
Copyright © 2011-2022 走看看