首页 > 编程语言 >汇编_第一个可执行程序

汇编_第一个可执行程序

时间:2023-04-12 20:27:13浏览次数:47  
标签:汇编 exe 第一个 mov codesg ax 可执行程序

第一个可执行程序代码

assume cs:codesg		;假设某一段寄存器和某一个程序段相联系
codesg segment			;定义一个段
	mov ax,0123H
	mov bx,0456H
	add ax,bx
	add ax,ax

	mov ax,4c00H
	int 21H				;程序返回
codesg ends
end 					;标识程序结束

搭建汇编编译、链接和运行环境

下载masm软件,http://www.downcc.com/soft/523960.html
将这些可执行文件放在前文debug.exe同目录,同时汇编程序保存为1.asm
dosbox下,顺序执行masm.exe和link.exe,得到可执行文件1.exe

执行分析

  1. 此时shell将1.exe加载进内存中,ds=075a,cs=076a。书中介绍加载进内存时,存在256字节的程序段前缀(PSP),用于dos和被加载程序通信;在这之后则是代码段

  2. 单步调试,可以看到执行过程的ax值变化

总结

这节最大的收获是知道汇编代码至可执行程序是如何生成的。尽管并不是在控制台或窗口显示字符,但是通过debug程序,还是可以看到程序的执行。

标签:汇编,exe,第一个,mov,codesg,ax,可执行程序
From: https://www.cnblogs.com/snowsteps/p/17311089.html

相关文章

  • 第一天打卡的第一个问题
    问题描述:编写一个程序计算两个整数之间所有整数(包含这两个整数)的和。假设先输入较小的整数,假设整数都是不超过int。解决思路:1.先定义两个变量,存储输入的上限和下限。2.循环从下限到上限加和3.输出。代码:#include<iostream>usingnamespacestd;intmain(){intmin,m......
  • UEFI 基础教程 - 运行第一个APP HelloWorld
    一、代码编写1.在Kunlun/KunlunBdsPkg/Application下新建HelloWorld文件夹命令:mkdir HelloWorld2.新建.c文件命令:vimHelloworld.c 3.新建.inf文件命令:vimHelloworld.infBASE_NAME=  这里为编译后生成efi文件的文件名 4、将写好的inf文件放到编译的dsc文件中......
  • C语言矩阵顺时针旋转90度和力扣34. 在排序数组中查找元素的第一个和最后一个位置
    #include<iostream>usingnamespacestd;#defineM5#include<stdlib.h>//原矩阵,某元素第n行第m列,;顺时针旋转90度后,位置变成倒数第n列,第m行//即先转置再水平翻转intn=0;voidrotation_90(intmatrix[][M],intn){ for(inti=0;i<n;i++) { for(intj=i;j<M;j++)......
  • 汇编_段的综述
    私以为原书中的这段综述,解决了初学者关于CPU如何识别代码or数据的困惑,原文摘录。段的综述我们可以将一段内存定义为一个段,用一个段地址指示段,用偏移地址访问段内的单元。这完全是我们自己的安排。我们可以用一个段存放数据,将它定义为“数据段”;我们可以用一个段存放代码,将它......
  • 在2023年的第一个100天之际,幡然醒悟(随笔)
      我可能确实对编程有一定的兴趣,也确实对互联网的高薪有着极强的向往。  但我确实不太适合干程序员了。  所有的一切都是自己摸索是无法成为合格的程序员的。也实在向往更自由一点的人生了。  一开始我会抱怨实验室,抱怨导师,没能给我技术性的指导(我的导师给了我遥感方面......
  • 【Spring MVC】第一个程序
    添加Maven依赖:<!--spring核心类--><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>5.2.8.RELEASE</version></dependency>&......
  • 缺失的第一个正数
    缺失的第一个正数对于一个长度为N的数组,其中没有出现的最小正整数只能在[1,N+1]中。这是因为如果[1,N]都出现了,那么答案是N+1,否则答案是[1,N]中没有出现的最小正整数。这样一来,我们将所有在[1,N]范围内的数放入哈希表,也可以得到最终的答案。而给定的数组恰好长度为N。这让我......
  • 0-C语言与汇编语言的转换
    汇编语言入门四:打通C和汇编语言-知乎Win10下C语言转8086汇编-博客园:https://www.cnblogs.com/VxerLee/p/15264290.htmlLinux执行汇编程序在Linux下运行你的第一个汇编程序_linux怎么执行汇编代码_冷色调的夏天的博客-CSDN博客在线网站:CompilerExplorer强烈推荐一个在线网......
  • LeetCode习题——在排序数组中查找元素的第一个和最后一个位置(二分查找)
    在排序数组中查找元素的第一个和最后一个位置力扣链接:在排序数组中查找元素的第一个和最后一个位置题目给你一个按照非递减顺序排列的整数数组nums,和一个目标值target。请你找出给定目标值在数组中的开始位置和结束位置。如果数组中不存在目标值target,返回[-1,-1]。你......
  • 第一个C语言项目
    VS2022怎么写呢?1.创建一个项目——新建--空项目2.创建一个源文件——xxxx.c--源文件 xxxx.h--头文件   添加源文件,文件名后缀.c3.写代码——写出主函数(main函数)c语言是从主函数的第一行开始执行的4.编译代码——编译+链接+运行代码快捷键ctrl+f5......