汇编语言 王爽 实验2 用机器指令和汇编指令编程

文章详细描述了一次使用Debug工具对程序段进行内存操作的实验,涉及指令执行、栈的变化,以及特定内存区域内容为何发生变化的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

实验任务

(1)使用Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
实验所用设备的内存地址FFFFH:0000H ~ FFFFH:000FH的内容如下图所示:
在这里插入图片描述

mov ax,ffff
mov ds,ax

mov ax,2200
mov ss,ax

mov sp,0100

mov ax,[0]	; ax=C0EAH
add ax,[2]	; ax=C0FCH
mov bx,[4]	; bx=30F0H
add bx,[6]	; bx=6021H

push ax	; sp=00FEH, 修改的内存单元的地址是220FEH, 内容为C0FCH
push bx	; sp=00FCH, 修改的内存单元的地址是220FCH, 内容为6021H
pop ax	; sp=00FEH, ax=6021H
pop bx	; sp=0100H, bx=C0FCH

push [4]	; sp=00FEH, 修改的内存单元的地址是220FEH, 内容为30F0H
push [6]	; sp=00FCH, 修改的内存单元的地址是220FCH, 内容为2F31H

(2)仔细观察图3.19中的实验过程,然后分析:为什么2000:0 ~ 2000:f中的内容会发生改变?

在这里插入图片描述

图3.19 用Debug进行的实验

首先由上图可以看出,内存地址2000H:0000H ~ 2000H:000FH所存储的内容均被置为0。
mov ax,2000
mov ss,ax
mov sp,10
以上三条指令执行后,将会使SS:SP指向2000H:0010H,即栈的大小为16B。
mov ax,3123
push ax
以上两条指令执行后,将会使寄存器AX中的内容被压入栈中,即内存地址2000H:000EH处。
所以内存地址2000H:000EH ~ 2000H:000FH的内容会被置为3123H。
mov ax,3366
push ax
以上两条指令同理。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值