【proteus】8086 写一个汇编程序并调试

参考书籍:微机原理与接口技术——基于8086和Proteus仿真(第3版)p103-105,p119-122.

参考程序是p70,例4-1

在上一篇的基础上: 

创建项目和汇编文件

写一个汇编程序并编译

 双击8086的元件图:

可以修改size 

比如这里修改成:

在asm中写一个简单的汇编程序:

DATA  SEGMENT		;定义数据段
    X  DW  2010H     	;定义被加数
    Y  DW  2011H	;定义加数
    RESULT  DW   ? ;分配和数存放单元;数据段定义结束
DATA  ENDS       
CODE  SEGMENT
ASSUME      CS:CODE,DS:DATA  
    START:
            MOV   AX,DATA 
            MOV   DS,AX
            MOV  AX,X
            ADD  AX,Y
            MOV  RESULT,AX
	    JMP $
CODE  ENDS
    END  START

编译:

 编译通过:

 调试:

选中内存和寄存器窗口(第一个和第二个):

 F11单步调试:

发现上述代码进入调试状态后会变成这样:

 

停止调试,把CODE段写在前面(注意end start仍然写在最后):

CODE  SEGMENT
ASSUME      CS:CODE,DS:DATA  
    START:
            MOV   AX,DATA 
            MOV   DS,AX
            MOV  AX,X
            ADD  AX,Y
            MOV  RESULT,AX
	    JMP $
CODE  ENDS
DATA  SEGMENT		;定义数据段
    X  DW  2010H     	;定义被加数
    Y  DW  2011H	;定义加数
    RESULT  DW   ? ;分配和数存放单元;数据段定义结束
DATA  ENDS  
    END  START

进入 调试:

 第二个按钮也可以实现单步调试:

单击一次该按钮后观察寄存器和内存:

 

 观察到内存发现数据段的首地址是0020,而AX被赋值为0002。(因为地址=段首址*10H+偏移地址,偏移地址由于是从0000开始,所以是正确的)

 继续单击:

 

 

 此时执行到这条语句:

先看一下result的内存内容(图的右侧),发现我们用?预留的空间并不是我们预料的是个随机数,而是00 00

 

继续调试:

可看出:低字节送入低地址,高字节送入高地址

jmp $ 构成无条件循环,可以保证仿真持续进行。$表示当前地址。

设置断点

双击某一行左侧:

重新进入调试状态点击第一个按钮:

 程序在断点处停止:

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

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

相关文章

挑战没有免费的午餐定理?南洋理工提出扩散模型增强方法FreeU

论文名称:FreeU: Free Lunch in Diffusion U-Net 文章链接:https://arxiv.org/abs/2309.11497 代码仓库:https://github.com/ChenyangSi/FreeU 项目主页:https://chenyangsi.top/FreeU 机器学习领域中一个著名的基本原理就是“没…

01-初识VUE3

01.初识VUE3 1.创建VUE3项目 1).使用 vue-cli 创建 ## 查看vue/cli版本,确保vue/cli版本在4.5.0以上 vue --version ## 安装或者升级你的vue/cli npm install -g vue/cli ## 创建 vue create vue_test ## 启动 cd vue_test npm run serve2).使用 vite 创建 ## 创…

C# Winform编程(9)网络编程

网络编程 HTTP网络编程IPAddress IP地址类WebClient类WebRequest类和WebResponse类 WebBrowser网页浏览器控件TCP网络编程TcpClient类TcpListener类NetworkStream类Socket类 HTTP网络编程 IPAddress IP地址类 IPAddress类代表IP地址,可在十进制表示法和实际的整数…

国产开发板上打造开源ThingsBoard工业网关--基于米尔芯驰MYD-JD9X开发板

本篇测评由面包板论坛的优秀测评者“JerryZhen”提供。 本文将介绍基于米尔电子MYD-JD9X开发板打造成开源的Thingsboard网关。 Thingsboard网关是一个开源的软件网关,采用python作为开发语言,可以部署在任何支持 python 运行环境的主机上,灵…

Java IDEA controller导出CSV,excel

Java IDEA controller导出CSV,excel 导出excel/csv,亲测可共用一个方法,代码逻辑里判断设置不同的表头及contentType;导出excel导出csv 优化:有数据时才可以导出参考 导出excel/csv,亲测可共用一个方法&…

Rust所有权

文章目录 什么是所有权Stack vs Heap所有权规则变量作用域String类型内存与分配所有权与函数 引用与借用可变引用悬垂引用引用的规则 切片字符串切片其他类型的切片 什么是所有权 什么是所有权 所有程序在运行时都必须管理其使用计算机内存的方式: 一些语言中具有垃…

Go 包操作之如何拉取私有的Go Module

Go 包操作之如何拉取私有的Go Module 在前面,我们已经了解了GO 项目依赖包管理与Go Module常规操作,Go Module 构建模式已经成为了 Go 语言的依赖管理与构建的标准。 在平时使用Go Module 时候,可能会遇到以下问题: 在某 modul…

如何使用 PostgreSQL 进行数据迁移和整合?

​ PostgreSQL 是一个强大的开源关系型数据库管理系统,它提供了丰富的功能和灵活性,使其成为许多企业和开发者的首选数据库之一。在开发过程中,经常会遇到需要将数据从一个数据库迁移到另一个数据库,或者整合多个数据源的情况。…

webGL编程指南 第四章 旋转+平移.TanslatedRotatdTriangle

我会持续更新关于wegl的编程指南中的代码。 当前的代码不会使用书中的缩写,每一步都是会展开写。希望能给后来学习的一些帮助 git代码地址 :git 本篇文章将把旋转和平位移结合起来,因为矩阵的不存在交换法则 文章中设计的矩阵地址在这里​…

Go 实现插入排序算法及优化

插入排序 插入排序是一种简单的排序算法,以数组为例,我们可以把数组看成是多个数组组成。插入排序的基本思想是往前面已排好序的数组中插入一个元素,组成一个新的数组,此数组依然有序。光看文字可能不理解,让我们看看…

【vue3】状态过渡-GSAP插件实现

效果图&#xff1a; 实现代码 安装库&#xff1a;npm install --save-dev gsap 引入&#xff1a;import gsap from gsap <template><div><el-input v-model"num.currNum" type"number" step"20" style"width: 120px;"…

算法训练 第四周

一、二分查找 本题给我们提供了一个有n个元素的升序整形数组nums和一个目标值target&#xff0c;要求我们找到target在nums数组中的位置&#xff0c;并返回下标&#xff0c;如果不存在目标值则返回-1。nums中的所有元素不重复&#xff0c;n将在[1&#xff0c;10000]之间&#x…

基于C/C++的UG二次开发流程

文章目录 基于C/C的UG二次开发流程1 环境搭建1.1 新建工程1.2 项目属性设置1.3 添加入口函数并生成dll文件1.4 执行程序1.5 ufsta入口1.5.1 创建程序部署目录结构1.5.2 创建菜单文件1.5.3 设置系统环境变量1.5.4 制作对话框1.5.5 创建代码1.5.6 部署和执行 基于C/C的UG二次开发…

基于MIMO+16QAM系统的VBLAST译码算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 ........................................................................ for SNR_dBSNRS…

火山引擎 LAS Spark 升级:揭秘 Bucket 优化技术

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 文章介绍了 Bucket 优化技术及其在实际业务中的应用&#xff0c;包括 Spark Bucket 的基本原理&#xff0c;重点阐述了火山引擎湖仓一体分析服务 LAS&#xff08;下…

vue3 elementPlus 表格实现行列拖拽及列检索功能

1、安装vuedraggable npm i -S vuedraggablenext 2、完整代码 <template> <div classcontainer><div class"dragbox"><el-table row-key"id" :data"tableData" :border"true"><el-table-columnv-for"…

8.2 矢量图层点要素单一符号使用一

文章目录 前言单一符号&#xff08;Single symbol&#xff09;渲染简单标记(Simple Marker)QGis代码实现 SVG标记&#xff08;SVG marker&#xff09;QGis代码实现 总结 前言 上一篇教程对矢量图层符号化做了一个整体介绍&#xff0c;并以点图层为例介绍了可以使用的渲染器&am…

【SwiftUI模块】0060、SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建TabBar

SwiftUI模块系列 - 已更新60篇 SwiftUI项目 - 已更新5个项目 往期Demo源码下载 技术:SwiftUI、SwiftUI4.0、Instagram、Firebase 运行环境: SwiftUI4.0 Xcode14 MacOS12.6 iPhone Simulator iPhone 14 Pro Max SwiftUI基于Firebase搭建一个类似InstagramApp 3/7部分-搭建Tab…

ubuntu安装golang

看版本&#xff1a;https://go.dev/dl/ 下载&#xff1a; wget https://go.dev/dl/go1.21.3.linux-amd64.tar.gz卸载已有的go&#xff0c;可以apt remove go&#xff0c;也可以which go之后删除那个go文件&#xff0c;然后&#xff1a; rm -rf /usr/local/go && tar…

在 Python 中使用 Pillow 进行图像处理【3/4】

第三部分 一、腐蚀和膨胀 您可以查看名为 的图像文件dot_and_hole.jpg&#xff0c;您可以从本教程链接的存储库中下载该文件&#xff1a; 该二值图像的左侧显示黑色背景上的白点&#xff0c;而右侧显示纯白色部分中的黑洞。 侵蚀是从图像边界去除白色像素的过程。您可以通过使用…