第4章 第一个程序

第4章 第一个程序

4.1 一个源程序从写出到执行的过程

  • 第一步:编写汇编程序
  • 第二步:对源程序进行编译连接
  • 第三步:执行可执行文件中的程序

4.2.源程序

汇编语言中包含两种指令:汇编指令伪指令

  • 汇编指令:有对应机器码的指令,最终被 CPU 执行
  • 伪指令:由编译器进行执行,进行相关的编译动作

伪指令:

在这里插入图片描述

源程序中的程序

将源程序文件中所有内容称之为源程序,然后通过编译连接后转变为机器码,存储在可执行文件中

image

mov ax,4c00H
int 21H

在程序末尾使用这两条指令就可以实现程序返回

标号

一个标号指代了一个地址,例如:codesg 在 segment 的前面,作为一个段的名称,这个段的名称最终会编译一个段的段地址。

在这里插入图片描述

任务:编程运算 2*3。源程序应该怎样来写?

assume cs:abc
abc segment
	mov ax,2
	mov ax,ax
	mov ax,ax
	
	mov ax,4c00H
	int 21H
abc ends
end

在这里插入图片描述

4.3 谁将可执行文件中的程序装载入内存并使它运行?

在 DOS 中,可执行文件中的程序 P1 若要运行,必须有一个正在运行的程序 P2 ,将 P1 从可执行文件中加载入内存,将 CPU 的控制权交给它,P1 才能得以运行;当 P1 运行完毕后,会将 CPU 的控制权交还给使它得以运行的程序 P2。

这个 P2 程序就是 command.com(命令解释器),也就是 DOS 系统的 shell。具体可看下图。

image

在这里插入图片描述

4.4 程序执行过程的追踪

在 DOS 中运行一个程序时,command 将程序从可执行文件中加载入内存并使其运行,之后就放弃了 CPU 的控制权,并不能对程序的执行过程进行跟踪分析,所以这时需要使用到 Debug。Debug 也可以将程序加载如内存,设置 CS : IP 指向程序的入口,但 Debug 并不放弃对 CPU 的控制,这样就可以使用 Debug 相关的命令来单步执行程序,查看每一条指令的执行结果。但最后还是会把 CPU 控制权交还给 command。

  • 使用 Debug 命令
    • 程序加载的顺序:command 加载 Debug,Debug 加载 1.exe 。
    • 返回的顺序是:1.exe 返回到Debug,从 Debug 返回到 command。

图4.20解释在 DOS 系统中的程序的加载过程。

在这里插入图片描述

调试命令:(不区分大小写)

  • 输入R:查看各个寄存器的设置情况
  • 输入U:查看此程序其他指令
  • 输入T:单步执行程序中的每一条指令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/767099.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

中国国产AI芯片的崛起

一、CUDA的垄断 当讨论半导体行业面临的挑战时,你首先想到的是什么?光刻机?3纳米或者5纳米技术?我们无法生产的完美方形芯片?是的,但也不完全是。 人们经常把半导体芯片归类为硬件产业,但实际上…

C语言----文件操作

1.为什么使用文件? 如果没有⽂件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运⾏程序,是看不到上次程序的数据的,如果要将数据进⾏持久化…

递归(二)—— 初识暴力递归

如何理解暴力递归? 字面意思就是——“暴力的递归”,就是——“别纠结细节,开整(递归)!” 暴力递归就是尝试。即:只要满足递归条件就不断的递归下去,直到达到base case&#xff0c…

力扣习题--哈沙德数

一、前言 本系列主要讲解和分析力扣习题,所以的习题均来自于力扣官网题库 - 力扣 (LeetCode) 全球极客挚爱的技术成长平台 二、哈沙德数 1. 哈沙德数 如果一个整数能够被其各个数位上的数字之和整除,则称之为 哈沙德数(Harshad number&…

LeetCode刷题之HOT100之除自身以外数组的乘积

2024 7/3 今天天气依旧很好,想起来做一题。 1、题目描述 2、算法分析 给定一个数组,要返回初自身以外数组的乘积。咋做呢?是的,我只能想到暴力解法,这不符合时间复杂度O(n)的要求,所以我只能看一下题解了…

零一万物: Yi Model API的使用

一、获取API Key 通过官方网址注册账号并且认证: 零一万物大模型开放平台 创建API Key 二、安装及调用 安装OpenAI SDK ​ 零一万物API 接口兼容 OpenAI 的 Python SDK,只需要简单配置即可使用。 安装 OpenAI SDK。请确保使用的 Python 版本至少为 3.7.1&a…

检索生成(RAG) vs 长文本大模型:实际应用中如何选择?

编者按:大模型的上下文理解能力直接影响到 LLMs 在复杂任务和长对话中的表现。本期内容聚焦于两种主流技术:长上下文(Large Context Windows)和检索增强生成(RAG)。这两种技术各有何优势?在实际应用中,我们又该如何权衡选择&#…

数据质量管理-可访问性管理

前情提要 根据GB/T 36344-2018《信息技术 数据质量评价指标》的标准文档,当前数据质量评价指标框架中包含6评价指标,在实际的数据治理过程中,存在一个关联性指标。7个指标中存在4个定性指标,3个定量指标; 定性指标&am…

【Windows】draw.io(免费的开源跨平台绘图软件)软件介绍

软件介绍 draw.io 是一款免费且易于使用的在线流程图绘图软件,后来更名为 diagrams.net。它最初作为一个基于 Web 的应用程序提供,支持用户创建各种类型的图表、流程图、网络图、组织结构图、UML 图等。它是完全免费的、强大的、专业的、易于使用的和高…

C++使用Poco库封装一个HTTP客户端类--Query参数

0x00 概述 我们使用Poco库的 Poco::Net::HTMLForm 类可以轻松实现表单数据的提交。 0x01 ApiPost提交表单数据 0x02 HttpClient类 #ifndef HTTPCLIENT_H #define HTTPCLIENT_H#include <string> #include <map> #include <Poco/URI.h> #include <Poco/N…

引领视觉基础模型新纪元! | 微软宣布开源Florence-2

01 模型介绍 &#x1f389;重大突破&#xff01;微软宣布开源Florence-2视觉基础模型&#xff0c;引领AI新纪元&#xff01;&#x1f680; Florence-2这一创新力作&#xff0c;以统一的提示为基础&#xff0c;跨越式地解决了计算机视觉与视觉语言领域的多样任务难题。从字幕生…

Hyper-V虚拟机固定IP地址(手把手教设置)

链接虚拟机修改网络配置文件 输入指令 sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0 然后 输入 按 i 键 再按回车 (enter) 进入编辑模式 修改配置(这几项)其中 IPADDR 就是你想给虚拟机固定的 IP 地址 多台的话只需要修改这个IP 就行其他不变 BOOTPROTO=static…

半导体划片研磨废水的处理效果

半导体划片研磨废水处理是一个复杂而关键的过程&#xff0c;因为这类废水中含有大量颗粒物、有机物、重金属等有害物质&#xff0c;具有浓度高、毒性大、难以处理等特点。以下是对半导体划片研磨废水处理过程的详细阐述&#xff0c;结合相关数字和信息进行归纳&#xff1a; 一、…

【Java集合类】ArrayList

方法 subList(int fromIndex, int toIndex) 可以看一下subList源码片段 public List<E> subList(int fromIndex, int toIndex) {subListRangeCheck(fromIndex, toIndex, size);return new SubList<>(this, fromIndex, toIndex);} private static class SubList…

nginx的vim nginx.conf配置文件内容详解及实验,nginx的优化和防盗链

一、nginx网络服务器&#xff1a; 1. nginx是开源的&#xff0c;是一款高性能&#xff0c;轻量级的web服务软件&#xff1b;稳定性高&#xff0c;而且版本迭代比较快&#xff1b;修复bug速度比较快&#xff0c;安全性高&#xff1b;消耗资源低&#xff0c;http的请求并发连接&…

My sql 安装,环境搭建

以下以MySQL 8.0.36为例。 一、下载软件 1.下载地址官网&#xff1a;https://www.mysql.com 2. 打开官网&#xff0c;点击DOWNLOADS 然后&#xff0c;点击 MySQL Community(GPL) Downloads 3. 点击 MySQL Community Server 4.点击Archives选择合适版本 5.选择后下载第二个…

bWAPP靶场安装

bWAPP安装 下载 git地址&#xff1a;https://github.com/raesene/bWAPP 百度网盘地址&#xff1a;链接&#xff1a;https://pan.baidu.com/s/1Y-LvHxyW7SozGFtHoc9PKA 提取码&#xff1a;4tt8 –来自百度网盘超级会员V5的分享 phpstudy中打开根目录&#xff0c;并将下载的文…

【C++知识点总结全系列 (06)】:STL六大组件详细总结与分析- 配置器、容器、迭代器、适配器、算法和仿函数

STL六大组件目录 前言1、配置器(1)What(2)Why(3)HowA.调用new和delete实现内存分配与销毁B.STL Allocator (4)allocator类A.WhatB.HowC.allocator的算法 2、容器(1)What(2)Which&#xff08;有哪些容器&#xff09;(3)序列容器&#xff08;顺序容器&#xff09;A.WhichB.array&…

Unity编辑器工具---版本控制与自动化打包工具

Unity - 特殊文件夹【作用与是否会被打包到build中】 Unity编辑器工具—版本控制与自动化打包工具&#xff1a; 面板显示&#xff1a;工具包含一个面板&#xff0c;用于展示软件的不同版本信息。版本信息&#xff1a;面板上显示主版本号、当前版本号和子版本号。版本控制功能…

音视频开发35 FFmpeg 编码- 将YUV 和 pcm合成一个mp4文件

一 程序的目的 /*** *该程序的目的是: * 将 一个pcm文件 和 一个 yuv文件&#xff0c;合成为一个 0804_out.mp4文件 * pcm文件和yuv文件是从哪里来的呢&#xff1f;是从 sound_in_sync_test.mp4 文件中&#xff0c;使用ffmpeg命令 抽取出来的。 * 这样做的目的是为了对比前…