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

这篇具有很好参考价值的文章主要介绍了【proteus】8086 写一个汇编程序并调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

参考程序是p70,例4-1

在上一篇的基础上: 

创建项目和汇编文件

写一个汇编程序并编译

 双击8086的元件图:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

可以修改size 

比如这里修改成:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

在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

编译:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

 编译通过:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

 调试:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

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

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus F11单步调试:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

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

 【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

停止调试,把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

进入 调试:【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

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

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

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

 【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

 观察到内存发现数据段的首地址是0020,而AX被赋值为0002。(因为地址=段首址*10H+偏移地址,偏移地址由于是从0000开始,所以是正确的)【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

 继续单击:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus 

 【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

 此时执行到这条语句:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

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

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

 

继续调试:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus可看出:低字节送入低地址,高字节送入高地址

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

设置断点

双击某一行左侧:【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

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

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus

 程序在断点处停止:

【proteus】8086 写一个汇编程序并调试,微机原理8086/Proteus,1024程序员节,汇编,proteus文章来源地址https://www.toymoban.com/news/detail-720856.html

到了这里,关于【proteus】8086 写一个汇编程序并调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【微机原理课设protues-汇编】基于8086四种波形发生器仿真设计-基于8086数码管矩阵键盘控制设计-基于8086微机原理直流电机控制系统-基于单片机PWM直流电机控制系统设计汇编

    文章转自电设屋,资料百度网盘下载地址  https://www.aiesst.cn/share.html 目录 1207基于8086四种波形发生器仿真设计-微机原理汇编仿真资料 1202基于8086数码管矩阵键盘控制设计-全套资料 1218基于8086智能汽车控制系统设计-微机原理课设 1209基于8086微机原理直流电机控制系统-设计资料

    2024年02月12日
    浏览(65)
  • MacOs 下调试 8086 汇编

    x86 DOS 模拟器:dosbox DOS 上运行调试工具:DEBUG.EXE 汇编器(链接器):DOS 上运行的 MASM.EXE、LINK.EXE 或者直接使用 MacOs 自带的 nasm exe 下载地址:链接: https://pan.baidu.com/s/1Lf7O9R-8A52cvQhtJtHJxw 提取码: rjne 去 https://www.dosbox.com/download.php?main=1  (opens new window) 下载对应 dmg 文件 点击,

    2024年02月08日
    浏览(35)
  • ARM汇编 : 汇编指令,伪指令,汇编程序格式

    计算机的指令集一般可分为4种: 复杂指令集(CISC) 精简指令集(RISC) 显式并行指令集(EPIC) 超长指令字指令集(VLIW) ARM指令集属于RISC,RISC相对于CISC指令集,主要有以下特点: ●Load/Store架构,CPU不能直接处理内存中的数据,要先将内存中的数据Load(加载)到寄存器中

    2024年02月12日
    浏览(34)
  • C/C++源程序到可执行程序exe的全过程(及汇编和反汇编的区别)

    1.C/C++源程序到可执行程序exe的全过程(及汇编和反汇编的区别) 一个现代编译器的主要工作流程如下: 源程序(source code)→预处理器(preprocessor)→编译器(compiler)→汇编程序(assembler)→目标程序(object code)→连接器(链接器,Linker)→可执行程序(executables)。 简

    2024年02月10日
    浏览(41)
  • 【汇编】实验11 编写子程序

    综合一下学过的指令就行了,比较简单。

    2024年01月16日
    浏览(48)
  • 南京邮电大学汇编语言程序设计实验一(汇编语言语法练习与代码转换)

    排除语法错误:给出的是一个通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序,但有很多语法错误。要求实验者按照原样对源程序进行编辑,汇编后,根据TASM给出的信息对源程序进行修改,知道没有语法错误为止。然后进行链接,并执行相应可

    2024年02月08日
    浏览(62)
  • 单片机汇编延时程序算法详解

    在单片机编程中,延时程序是一项常见的任务。它用于控制程序在执行期间暂停一段时间,以实现特定的时间延迟。延时程序在许多应用中都非常有用,例如控制LED的闪烁频率、定时器的计时等。本文将详细介绍单片机汇编语言中延时程序的算法,并提供相应的源代码。 延时

    2024年02月04日
    浏览(56)
  • 实时数据库测试-汇编小程序

    实时数据库测试-汇编小程序。 hd.asm

    2024年04月28日
    浏览(43)
  • X86_64函数调用汇编程序分析

    %rdi, %rsi, %rdx, %rcx, %r8, %r9分别用于函数调用过程中的前6个参数,对于6的参数存放在栈中传递 %rsp用做栈指针寄存器,指向栈顶 %rbp用作栈框寄存器,指向栈底 %rax用做函数返回值的第一个寄存器 2.1.1 main的C代码实现 2.1.2 main函数对应汇编及其分析 这段汇编代码实现了一个简单的

    2024年02月09日
    浏览(42)
  • [ARM 汇编]高级部分—ARM汇编编程实战—3.3.3 嵌入式应用程序设计实例

    在本章节中,我们将学习如何使用ARM汇编编写一个简单的嵌入式应用程序。我们将以STM32F103微控制器为例,编写一个程序,实现按下按钮时点亮LED的功能。 硬件连接 首先,我们需要将STM32F103微控制器的一个GPIO引脚连接到LED(通过一个合适的电阻),另一个GPIO引脚连接到按钮

    2024年02月10日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包