• 【汇编】第一个汇编程序(学习笔记)


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

    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

  • 相关阅读:
    每个程序员都应该知道的Swoole知识-定时器
    PostgreSQL PG15 新功能 PG_WALINSPECT
    前端开发:export 和 export default的区别
    Python 潮流周刊#54:ChatTTS 强大的文本生成语音模型
    Android 13.0 锁屏页面禁止下拉状态栏
    初识Java 17-4 反射
    【JS函数】JS函数之防抖、节流函数
    windows cmd设置代理
    Java基础面试题精选:深入探讨哈希表、链表和接口等
    网易Airtest全新推出:小型便携式集群解决方案!
  • 原文地址:https://blog.csdn.net/wmh1024/article/details/133898228