码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 【汇编】第一个汇编程序(学习笔记)


    一、程序从编写到执行的过程

    1、编写

    Notepad++ / UltraEdit + 汇编语言

    2、编译、连接

    MASM.EXE:编译产生目标文件

    LINK.EXE:连接,产生可执行文件

    连接作用:源程序分为多个子程序编译后,连接在一起。或程序调用其他库的子程序

    可执行文件

    1、程序:汇编语言的机器码

    2、数据:源程序中定义的数据

    3、相关描述信息

    3、执行

    将程序和数据加载到内存中,并初始化

    二、源程序

    assume cs:codesg
    codesg segment
    start:	mov ax,0123H
    		mov bx,0456H
    		add ax,bx
    		add ax,ax
    		
    		mov ax,4c00h
    		int 21h
    codesg ends
    end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    1、汇编指令:有对应机器码,被执行

    2、伪指令:(除了汇编的部分)不被CPU执行,是由编译器执行的命令,编译器根据伪指令进行编译工作

    3、段:段名 segment 和 段名 ends 是成对使用的伪指令。一个汇编程序是由多个段组成

    4、段的作用:存代码、存数据、作栈空间

    5、end是汇编的结束标记(伪指令)

    6、assume:关联假设。假设某一段寄存器和程序中的某一个用segmert…ends定义的段相关联,编译程序可以将段寄存器和其一个具体的段相联系

    7、标号:代替了一个地址

    8、程序返回:DOS是单任务操作系统,程序执行结束后,将CPU的控制权还给DOS

    ;中断机制
    mov ax,4c00h
    int 21h
    
    • 1
    • 2
    • 3

    三、编写程序

    源文件:*.asm

    编译:masm 1.asm

    连接:link 1.obj

    执行:1.exe

    编译连接也可以用:ml 1.exe

    四、exe执行原理

    1、CMD运行

    2、cmd将1.exe加载进内存

    3、cmd把cpu的CS:IP指向1.exe入口

    4、运行结束,把CS:IP指回cmd

    五、操作系统的外壳

    操作系统提供一个Shell(外壳)程序,用户使用shell操作操作系统

    DOS中有一个cmd.exe,是DOS中的命令解释器,也就是DOS的Shell

    六、Debug

    Debug将1.exe加载入内存,没置入口,但Debug利用中断指令,不放弃CPU的控制

    debug 1.exe
    
    • 1

    t:执行下一条代码

    R:查看寄存器地址

    P:执行int 21

  • 相关阅读:
    Mysql--索引分类
    【WebService】C#搭建的标准WebService接口,在使ESB模版作为参数无法获取参数数据
    C++初阶 List的模拟实现
    仿射变换案例
    FastAPI 学习之路(十二)接口几个额外信息和额外数据类型
    深入理解Java消息中间件-RabbitMQ
    java毕业设计病人追踪治疗信息系统mybatis+源码+调试部署+系统+数据库+lw
    【FreeRTOS】【STM32】06 FreeRTOS的使用-动态创建多任务 FreeRTOS 的启动流程
    故障009:改写多表关联同时更新且互换列值
    [附源码]java毕业设计儿童资源教育网站
  • 原文地址:https://blog.csdn.net/wmh1024/article/details/133898228
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号