我是如何学习Java的~dosbox下装载运行汇编程序

在前面的章节中不仅搭建了dosbox汇编环境,同时还介绍了mov、add、sub、push、pop等汇编指令,也了解了CPU是怎么操控数据和运行指令的。但对于一个功能来说,是需要不同的指令组合才能实现的,同时对于汇编源程序的运行,还需要对其编译生成包含机器码的目标文件,之后通过连接功能最终生成可执行文件。

对于最终生成的可执行文件,可以通过dosbox把可执行文件中的机器指令装载到内存中,同时运用R和T指令来查看相应寄存器和执行程序。

dosbox装载过程如下:

  1. 找到一段起始地址为 段地址(SA):0000H 的容量足够的空闲空间
  2. 在该内存空间的前256个字节中创建一个程序段前缀(PSP)的数据区,dos需要利用该数据区来和被加载的程序进行通信
  3. PSP后的内存空间用来装载指令。此时指令的段地址为SA+10H,偏移地址依旧为0,按照前面章节介绍的寻址方式,10H*16 即为256个字节
  4. 将该内存的段地址存入寄存器DS中,同时设置CS:IP指向程序指令的开始地址

该分配的内存地址如下图所示:
dos装载内存结构
现有以下功能:
计算寄存器AX和BX的和,结果存放AX中,并交换AX和BX的值:

assume cs:codesg

codesg segment

	mov ax, 1000H
	mov bx, 2000H
	add ax, bx
	mov ss, bx
	mov sp, 0
	push ax
	push bx
	pop
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值