汇编语言程序设计实验二

  • 实验目的和要求
  1. 继续学习使用DEBUG程序的各种命令。
  2. 利用DEBUG学习了解计算机取指令、执行指令的工作过程。

掌握8086/8088基本指令的使用方法和功能。

  • 实验环境

DOSBox 0.74

  • 实验内容与过程

1. 按照下列给定步骤完成求累加和程序:

程序:

MOV BX,1000

MOV CX,10

MOV AL,0

LOP: ADD   AL,[BX]

INC BX

J:  LOOP   LOP

INT3

步骤:

1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替。

2)用命令N AA将此程序命名为文件AA(文件名可任取)。

3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址) ,用R命令把BX设为:0000H,CX 设为文件长度。

4)用命令W 100将此程序存到AA命名的磁盘文件中。

5)用命令Q退出DEBUG。

6)用命令DEBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序。

若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入。

7)用E命令在内存地址1000H处键入16个数字

8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查

AX,BX的值是否符合你的预计值。

符合预期值

9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样, 若不一样,检查程序是否有错。

没有错

10)重复G J与T,再检查AX是否正确。 (J为断点地址)

正确

11)用G命令使程序运行到结束,检查AX值是否正确。

正确

2.用命令A汇编下列指令,判断指令正误并说明原因

  1. LEA DI,[AX]

错误, 因为能够作为偏移地址的寄存器只有BX,BP,SI,DI没有AX。
     LEA DI,[BX]

  1. MOV DS,2010

错误,不能将立即数直接送入段寄存器。

Mov ax,2010

Mov ds,ax

  1. PUSH AL

错误,应是16位的寄存器

     Push ax

  1. OUT 900,AL

错误,外设端口地址超过255时,应该用DX

     MOV DX,900

     OUT DX,AL

  1. MOV [BX],0

错误,不能将立即数直接送入内存 X  正确为:没有指明字操作还是字节操作改为: mov word ptr[bx],0

3.利用T,P,G命令,执行下列指令段,注意它们的不同之处

MOV DI,300

MOV SI,400

MOV CX,3

CLD

REP MOVSB

INT 3

P:可以看到其直接结束,没有多次循环进入。

G:若没有设置断点直接运行程序结束

MOV AH,2

MOV DL,41

INT 21

INT 3

P:没有进入21号中断

G:可以看到直接执行完毕

总结:T命令一步一步全部执行

P命令不会进入子程序,适合主程序的调试。

G命令适合查看一段命令的执行结果是否有误。

4程序:    

MOV    DI,1000

MOV  CX,8

MOV  SI,2000

CLC

LOP:     MOV AL,[SI]

ADC  [DI],AL

INC  SI

INC  DI

LOOP LOP

INT  20

步骤:

1)A命令键入此程序

2)E命令在1000H开始处键入一个8字节被加数,2000H开始处键入一个8字节加数,均为低字节在前面。

3)用G命令运行此程序,并用D命令检查其结果(存放在哪里?),是否正确?

正确

4)将INT 20H指令改为INT 3,有何区别?若这条指令不加,行不行?试

试。

改为INT 3命令程序会停止到此处,若不加,会超出此程序的执行范围,直到遇到中断或者死机。

5)请说明这个程序完成的功能是什么?

完成两个8字节的数相加。

  • 实验结果与分析

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

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

相关文章

MBR10200FCT-ASEMI适配开关电源MBR10200FCT

编辑:ll MBR10200FCT-ASEMI适配开关电源MBR10200FCT 型号:MBR10200FCT 品牌:ASEMI 封装:ITO-220AB 最大平均正向电流(IF):10A 最大循环峰值反向电压(VRRM)&#xf…

BUUCTF---[极客大挑战 2019]Upload1

1.题目描述 2.点开链接&#xff0c;需要上传文件&#xff0c;要求是image&#xff0c;上传文件后缀为jpg的一句话木马&#xff0c;发现被检测到了 3.换另一个木马试试 GIF89a? <script language"php">eval($_REQUEST[1])</script> 发现可以上传成功 4…

(C语言)sizeof和strlen的对比(详解)

sizeof和strlen的对⽐&#xff08;详解&#xff09; 1. sizeof sizeof是用来计算变量所占内存空间大小的&#xff0c; 单位是字节&#xff0c;如果操作数是类型的话&#xff0c;计算的是用类型创建的变量所占空间的大小。 sizeof 只关注占用内存空间的大小 &#xff0c;不在乎内…

GitLab EE 企业版破解

在当今数字化时代&#xff0c;软件开发与团队协作已经成为现代企业不可或缺的一部分。而在这个过程中&#xff0c;版本控制、协作和持续集成等工具的运用变得至关重要。GitLab作为一个领先的、完整的DevOps平台&#xff0c;为团队提供了一个集成的解决方案&#xff0c;使得软件…

【Leetcode每日一题】DP35 二维前缀和(难度⭐⭐)(26)

1. 题目解析 题目链接&#xff1a;DP35 【模板】二维前缀和 这个问题的理解其实相当简单&#xff0c;只需看一下示例&#xff0c;基本就能明白其含义了。 核心在于计算题目所给二维区间数组元素和返回即可。 2. 算法原理 和上题了类似的方法&#xff0c;使用dp数组来保存[1…

科普【1】:web3.0初探,不懂技术也能看懂。

Hi&#xff0c;我是贝格前端工场&#xff0c;本期来科普一下web3这个概念&#xff0c;力争讲的浅显易懂。 一、什么是web3及其特征 Web3是指第三代互联网&#xff0c;也被称为分布式互联网或区块链互联网。它是对传统互联网的一种进化和扩展&#xff0c;旨在提供更加去中心化、…

为什么中小APP开发者要选择聚合SDK广告变现服务?

广告变现听起来容易&#xff0c;但要在不影响用户体验的情况下&#xff0c;把变现收益做到最大化&#xff0c;其实非常复杂。 对于处于行业腰部和尾部的中小APP来说&#xff0c;团队资源有限&#xff0c;要将所有的资源集中在投入到核心业务竞争力上——扩大用户规模和活跃度上…

如何测试代理IP是否可用?

目录 一、了解代理IP基础知识 二、为什么需要测试代理IP的可用性&#xff1f; 三、测试代理IP的可用性方法 使用Ping命令测试代理IP的连通性 使用curl或wget测试代理IP的可用性 编写代码测试代理IP的可用性 四、案例分析 五、总结与建议 在数字时代的今天&#xff0c;代…

.net 日志

一、Log4net 1、log4net写入文本 1、nuget引入log4net、Microsoft.Extensions.Logging.Log4Net.AspNetCore这2个 2、引入配置文件,可以直接去官网(log4net官网配置文件)复制下来,放到项目目录下面,设置成始终复制,因为这个文件最终要到我们项目运行目录下面去 3、要在pr…

3月4日工作记录

周末总结 周末花6.5k的4060ti主机到家了&#xff0c;配好了和女朋友一起玩了两天帕鲁&#xff0c;真好玩&#xff01; 玩完开始上班&#xff01; 今天&#xff0c;上午先看三篇paper&#xff0c;然后下午继续1日计划的工作 文章阅读 文章一&#xff1a;SciGLM: Training Sc…

STL——stack

目录 stack stack都有哪些接口 模拟实现一个stack stack 1. stack是一种容器适配器&#xff0c;专门用在具有后进先出操作的上下文环境中&#xff0c;其删除只能从容器的一端进行元素的插入与提取操作。 2. stack是作为容器适配器被实现的&#xff0c;容器适配器即…

【一起学习Arcade】(5):属性规则实例_计算规则

属性规则可改善地理数据库数据集的编辑体验并提高数据完整性。 这些规则均为用户定义的规则&#xff0c;可用于自动填充属性、在编辑操作期间限制无效编辑&#xff0c;以及对现有要素执行质量保证检查。 属性规则分为3类&#xff1a;计算、约束和验证。 这一篇介绍计算规则&…

HOOPS Communicator对3D大模型轻量化加载与渲染的4种解决方案

今天给大家介绍一些关于3D Web轻量化引擎HOOPS Commuicator的关键概念&#xff0c;这些概念可以帮您在HOOPS Communicator流缓存服务器之上更好地构建您自己的模型流服务器。如果您是有大型数据集&#xff0c;那么&#xff0c;使用流缓存服务器可以极大地帮助您最大限度地减少内…

PostgreSQL10.21与PostGIS3.2.3安装文档

背景&#xff1a; 公司需要在一个服务器上装一个pg数据库&#xff0c;要求和其余服务器版本尽量保持一致&#xff0c;临时拉我装一下 特别注意&#xff1a; 需要注意的地方就是因为postgresql数据库是一个空间库&#xff0c;gis行业很多都会使用这个数据库&#xff0c;我们安…

深入Kafka client

分区分配策略 客户端可以自定义分区分配策略, 当然也需要考虑分区消费之后的offset提交, 是否有冲突。 消费者协调器和组协调器 a. 消费者的不同分区策略, 消费者之间的负载均衡(新消费者加入或者存量消费者退出), 需要broker做必要的协调。 b. Kafka按照消费组管理消费者, …

HttpClient—详解、代码演示

简介&#xff1a;HttpClient 是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包&#xff0c;并且它支持 HTTP 协议最新的版本和建议&#xff0c;即可以通过HttpClient可以再Java中构建和发送Http请求。 …

将jar包打包为docker镜像

此记录一下将springboot项目的jar打包成docker镜像记录错误点。 1.将springboot项目打包成jar包 参考博客 : springboot项目打包成jar_springboot打包成jar-CSDN博客 具体打包步骤参考他的如何打包: 使用IDEA进行打包。但是我需要在我的springboot的pom.xml文件里面配置如下插…

javascript实现的星座查询

今天在这个网站http://xzxys.wiicha.com/看到查询星座幸运色的效果&#xff0c;想研究一下代码&#xff0c;结果右键禁用。后来参考了一下别人的代码&#xff0c;琢磨着先实现了一下星座查询的功能&#xff0c;输入月份和日期四位数后&#xff0c;可以查询属于哪个星座&#xf…

如何做代币分析:以 INJ 币为例

如何做代币分析&#xff1a;以 INJ 币为例 作者&#xff1a; lesleyfootprint.network 编译&#xff1a;cicifootprint.network 数据源&#xff1a;INJ 代币仪表板 &#xff08;仅包括以太坊数据&#xff09; 在加密货币和数字资产领域&#xff0c;代币分析起着至关重要的作…

网络学习:MPLS技术基础知识

目录 一、MPLS技术产生背景 二、MPLS网络组成&#xff08;基本概念&#xff09; 1、MPLS技术简介&#xff1a;Multiprotocol Lable Switching&#xff0c;多协议标签交换技术 2、MPLS网络组成 三、MPLS的优势 四、MPLS的实际应用 一、MPLS技术产生背景 1、IP采用最长掩码…