• 汇编实验报告四


    (1)
    源代码:

    Debug调试:

    运行:

    修改后:

    (2)
    源代码:

    Debug调试:


    g 命令和 d 命令,确实将0~63传送此段内存区域

    (3)
    源代码:

    g 命令和d 命令,结果是对的(内存中的和上面反汇编出来的一样)







    (t命令调试 只截图了部分,太多了……)

    分析:
    1.每一条指令都有对应的编码来实现,他们在内存中存入的是这条指令对应的编码。
    正是因为编码不同,所以导致了每一条指令对应的IP不同,我以前对IP变化的问题,在这里也可以体现。比如 mov ax, 0123h 在内存中是 B8 23 01 , 而 mov ax, bx 对应的是89 D8, 所以,复制指令,也就是复制指令对应的编码。
    2.指令是在CS:IP中的,而我们处理的往往是DS以及他对应的偏移地址,这里也要注意, 这题就需要CS,因为正好要复制指令,我们需要的是CS也就是指令所在的内存位置,将CS给AX 从而给DS(不能直接赋值DS)以便于后面的处理,所以 第一处填CS。
    3. 和第一点结合来看,第二处需要的是循环次数,而循环体中每次只存入一个字节,所以要计算所有指令的字节数,如果不会计算,可以先随便填一个在反汇编,通过反汇编观察指令对应的字节数即可。两种我都试过,结果都是23.。所以第二处填23。

  • 相关阅读:
    20121025
    活到老学到老
    VS2012 正式版BUG太多
    JSP页面basePath路径问题
    这样的日子
    正确用JQ的AJAX加载XML并解析
    JSP中的5中转发方式
    C#编码规范
    jsp判断用户是否在线
    beging
  • 原文地址:https://www.cnblogs.com/zxy666/p/10123587.html
Copyright © 2020-2023  润新知