《汇编语言》- 读书笔记 - 实验2 用机器指令和汇编指令编程
- 1. 预备知识: Debug 的使用
- 2 .实验任务
1. 预备知识: Debug 的使用
统一完善到:实验 1 查看 CPU 和内存,用机器指令和汇编指令编程。不在这拆开写了。
2 .实验任务
- 使用 Debug,将下面的程序段写入内存,逐条执行,根据指令执行后的实际运行情况填空。
上面这张截图显示了代码执行前内存中的数据。
mov ax, ffff
mov ds, ax
mov ax, 2200
mov ss, ax
mov sp, 0100
mov ax, [0] ;ax=C0EA
add ax, [2] ;ax=C0FC
mov bx, [4] ;bx=30F0
add bx, [6] ;bx=6021
push ax ;sp=00FE ;修改的内存单元的地址是 2200:00FE~00FF 内容为 FCC0
push bx ;sp=00FC ;修改的内存单元的地址是 2200:00FC~00FD 内容为 2160
pop ax ;sp=00FE ;ax=6021
pop bx ;sp=0100 ;bx=C0FC
push [4] ;sp=00FE ;修改的内存单元的地址是 2200:00FE~00FF 内容为 F030
push [6] ;sp=00FC ;修改的内存单元的地址是 2200:00FC~00FD 内容为 2F31
- 这题主要检测入栈出栈的知识点。
①. 寄存器ax、bx
先push
,再pop
,就实现了倒叙。(颠倒了ax与bx的内容)
②.push[4]
要明白的是从数据段
向栈
压入数据。(DS保存默认的数据段地址、SS保存默认的栈段地址)
- 仔细观察图 3.19 中的实验过程,然后分析: 为什么
2000:0~2000:f
中的内容会发生改变?
可能要再做些实验才能发现其中的规律。如果你在这里就正确回答了这个问题,那么要恭喜你,因为你有很好的悟性。大多数的学习者对这个问题还是比较迷惑的,不过不要紧,因为随着课程的进行,这个问题的答案将逐渐变得显而易见。
在修改了SS
栈对应的内存区域出现了数据。这是DOS系统用栈
来暂存寄存器数据了。