zoukankan      html  css  js  c++  java
  • 实验五(自闭的第五天)

    实验五

    (1)

    1.CPU执行程序,程序返回前,data段的数据为
    23 01 56 04 89 07 BC 0A EF 0D ED 0F BA 0C 87 09
    exe5_1.png
    2.CPU执行程序,程序返回前,cs=0772h, ss=0771h,ds=0770h
    3.设程序加载后,code段地址为X, 则data段地址为X-2h,stack段地址为X-1h

    (2)

    1.CPU执行程序,程序返回前,data段的数据为23 01 56 04
    exe5_2.png
    2.CPU执行程序,程序返回前,cs=0772h, ss=0771h,ds=0770h
    3.设程序加载后,code段地址为x, 则data段地址为x-2h,stack段地址为x-1h
    4.如果段中数据占N个字节,该段实际占有的空间为[(N+15)/16].([x]是取整函数)

    (3)

    1.CPU执行程序,程序返回前,data段的数据为23 01 56 04
    2.CPU执行程序,程序返回前,cs=0770h, ss=0774h,ds=0773h
    3.设程序加载后,code段地址为X, 则data段地址为X+3h,stack段地址为X+4h

    (4)

    第一和第二个程序不能运行,因为把end start 改为end,程序就不会从start开始执行了,所以IP的初值为0,所以会从第一个段开始执行。而只有第三个程序的机器码在前面,所以仅第三个仍然可以执行。

    (5)

    编写code段中的代码,将a段和b段中的数据依次相加,将结果存到c段中
    代码如下:
    5_2.jpg
    数据相加前,逻辑段c中的8个字节:
    5_1_2.png
    数据相加后,逻辑段c中的8歌字节:
    5_1.png

    (6)

    编写代码,用push指令将a段中的前8个字型数据,逆序存储到b段中
    代码如下:
    6_2.jpg
    push操作执行前,查看逻辑段b的前8个字单元
    6_3.png
    push操作执行后,查看逻辑段b的前8个字单元
    6_1.png

    总结与体会

    实验3中我是用u命令查看代码段一共有34个字节,即22h个字节。可知即使它没有达到30h个字节,内存也会给它分配30h字节的空间。所以第二空是X+3。因为第二部分数据段有4个字节,可知即使它没有达到10h个字节,内存也会给它分配10h字节的空间。所以第三空是X+4。
    所以我想在实验1,2,3中不运行程序是否可以判断出是X+1,X+2或是X+3,X+4。

  • 相关阅读:
    假期第六周总结
    假期第五周周总结
    navicat 链接oracle时出现的各种问题
    oracle 12如何解锁账户锁定状态及修改忘记的密码
    假期第四周周总结
    假期第三周周总结
    idea中使用git【推送,拉取,分支合并,解决冲突】
    Git分支,合并,切换分支的使用
    Git使用
    SpringCloud服务降级案列
  • 原文地址:https://www.cnblogs.com/nilicon/p/9994808.html
Copyright © 2011-2022 走看看