分享

DOSBox配置8086CPU汇编语言开发环境(Window11更新无法启动debug.exe解决方案)

 山峰云绕 2023-02-09 发布于贵州


汇编语言开发环境

学习8086CPU汇编语言需要在32位系统DOS环境中进行调试,目前的操作系统一般都是64位且升级到Windows10,最近我也在无数次系统提醒之下按下了Window11更新,这些都无法启动debug.exe。

因此,我们可以使用DOSBox工具,可以在多种操作系统中支持DOS环境,首先下载好DOSBox和debug.exe,我将这两个可执行文件放到桌面文件夹asm中。

双击DOSBox安装包,一路下一步流畅无脑安装。然后双击启动:

挂载目录:

然而,每次启动都要执行命令,比较麻烦,可以直接找到下面文件:

文件位置(需要设置显示隐藏文件):C:\Users\Cat\AppData\Local\DOSBox\C:\Users\Cat\AppData\Local\DOSBox
在最后面加上指令:[autoexec]# Lines in this section will be run at startup.# You can put your MOUNT lines here.mount c: c:/Users/Cat/Desktop/asmc:

调整界面大小:

# windowresolution=original# output=surfacewindowresolution=1080x800output=opengl

入栈出栈

编程:

  1. 将1000H~1000FH这段空间当作栈,初始状态栈是空的;
  2. 设置AX=001AH,BX=001BH;
  3. 将AX、BX中的数据入栈;
  4. 然后将AX、BX清零;
  5. 从栈中恢复AX、BX原来内容。

栈交换数据

编程:

  1. 将1000H~1000FH这段空间当作栈,初始状态栈是空的;
  2. 设置AX=001AH,BX=001BH;
  3. 利用栈,交换AX和BX中的数据。
……pop axpop bx

栈写入数据

在10000H处写入字型数据2266H,可以使用如下程序实现:

下面,要求不使用mov 内存单元,寄存器指令实现此功能。

思考,利用入栈操作,设置栈段和栈顶指针再将数据入栈。

DOSBox运行asm文件

将masm.exe和link.exe放入asm文件夹,并创建t.asm文件,写入程序:

如果觉得编译链接过程比较繁琐,可以在配置文件中直接写好,每次执行文件重启DOSBox就可以,可以把DOSBox固定到桌面下方任务栏,文件名指定,比如t.asm,需要测试其他文件就要将新的程序复制过来。

内存数据累加

计算ffff:0~ffff:b单元中的数据的和,结果存储在dx中。

注意:

1.单元中数据为8位,不能直接累加到16位寄存器中;

2.可以使用一个16位寄存器做中介,将内存单元中的8位数据赋值到一个16位寄存器ax中,再累加到dx上。

assume cs:codesgcodesg segmentstart:mov ax,0ffffH mov ds,ax mov bx,0 mov dx,0 mov cx,12 s:mov al,[bx] mov ah,0 add dx,ax inc bx loop s mov ax,4c00H int 21Hcodesg endsend start

测试时使用4个单元数据累加,用计算器进行验证,最终DX寄存器中的数值也是1BCH。

相关推荐

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多