zoukankan      html  css  js  c++  java
  • 王爽汇编实验(八)

    分析下面的程序,在运行前思考:这个程序可以正确返回吗?

    运行后再思考:为什么时这种结果?

    通过这个程序加深对相关内容的额理解。

    assume cs:codesg

    codesg segment

    mov ax,4c00h

    int 21h

    start:mov ax,0

    s:nop

    nop

    mov di,offset s

    mov si,offset s2

    mov ax,cs:[si]

    mov cs:[di],ax

    s0:jmp short s

    s1:mov ax,0

    int 21h

    mov ax,0

    s2:jmp short s1

    nop

    codesg ends

    end start

    初看时到s1,然后是返回中止?

    不多说,运行分析

    是从start开始的指令,与想法没错,end start告诉了masm那里是入口

    JMP 0008是S的标号地址,后来JMP 0000 这样一来发现了原本的IP是0005,是前面两个返回语句,是直接略过的

    jmp 0008下一条是jmp0000,nop执行后分配90H机器码空间,跳转到codesg 结束

    总的来说,就是在s:那里,cs:si传到cs:di,但是是传送机器码,也即传送s2到s1的偏移地址F6表示-10,然后用s2的内容覆盖s中前2个nop的位置,后来转到s,就结束了。

  • 相关阅读:
    VS Code设置同步
    ASP.NET Core 发布
    CMD命令
    通过注册表为文件(夹)添加右键菜单
    win+r 以管理员身份运行
    .NET Core部署Windows服务
    .NET Core的打包到一个exe程序
    C#枚举
    C#生成Guid
    使用Visual Studio的单元测试
  • 原文地址:https://www.cnblogs.com/otakus/p/wsassembly08.html
Copyright © 2011-2022 走看看