【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 构成无条件循环,可以保证仿真持续进行。表示当前地址。

设置断点

双击某一行左侧:

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

程序在断点处停止:

相关推荐
开开心心就好1 天前
近200个工具的电脑故障修复合集
安全·智能手机·pdf·电脑·consul·memcache·1024程序员节
浩浩测试一下1 天前
抬栈 恢复上下文 (逆向分析)
汇编·逆向·堆栈·windows核心编程
zhouwy1131 天前
ARM汇编指令集详解
汇编·arm开发
iCxhust1 天前
微机原理实践教程(汇编篇)---A002流水灯
汇编·单片机·嵌入式硬件·51单片机·微机原理
浩浩测试一下1 天前
栈帧 抬栈与平栈 (逆向分析)
汇编·windows api·堆栈·windows编程·windows 开发
陈eaten1 天前
win11下nasm编写汇编及链接方案
汇编·链接·nasm·gcc·golink
iCxhust1 天前
【无标题】8086/8088裸机对于学习微机原理的重要意义
汇编·单片机·嵌入式硬件·嵌入式·微机原理
数据皮皮侠AI3 天前
中国城市可再生能源数据集(2005-2021)|顶刊 Sci Data 11 种能源面板
大数据·人工智能·笔记·能源·1024程序员节
鸽芷咕4 天前
DOSBox 汇编环境搭建完整教程:安装配置 + MASM/LINK/DEBUG 工具链配置详解
汇编
Gofarlic_OMS4 天前
UG/NX许可证管理高频技术问题解答汇编
java·大数据·运维·服务器·汇编·人工智能