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,就结束了。

  • 相关阅读:
    java Servlet小结
    Java 自定义客户端与服务器
    JAVA IO流总结
    java udp与tcp
    tomcat作为服务器的配置
    Linux
    Git -- 如何删除本地仓库
    ASP.NET Core 基础 Startup 类
    ASP.NET Core解说之Middleware(中间件)
    一、Redis安装 Redis学习记录
  • 原文地址:https://www.cnblogs.com/otakus/p/wsassembly08.html
Copyright © 2011-2022 走看看