实验三
栈及内存访问
一、Debug 功能新增知识 1. Debug 的以下功能都支持以段寄存器(CS,DS,SS,ES)内容作为段地址。
⚫ 用 Debug 的 D 命令查看内存中的内容;
⚫ 用 Debug 的 E 命令改写内存中的内容;
⚫ 用 Debug 的 U 命令将内存中的机器指令翻译成汇编指令(反汇编);
⚫ 用 Debug 的 A 命令以汇编语言的格式在内存中写入一条机器指令。
例如:-d ds:0 为用 d 命令查看从 ds:0 开始的内存单元中的内容 2. Debug 的 T 命令在设置 SS 的指令处不发生单步执行。具体而言,如果 T 命令执行时 IP 所指向的指令为设置 SS 的的指令,那么 CPU 会在执行完该设置 SS 的的指令后再执行多 一条指令
【其具体原因会在本课程之后的内容中介绍】。
二、实验任务
1.使用 Debug 将下面的程序段写入内存,用 T 命令逐条执行,根据指令执行后的实际运 行结果填空【注:debug 默认采用 16 进制,因此不需要输入 16 进制数的后缀 h;分号后面 的内容为注释,不需要输入 debug 中】。
mov ax,ffffh
mov ds,ax
mov ax,2200h
mov ss,ax
mov sp,0100h
mov ax,[0] ;ax = ________
add ax,[2] ;ax =_________
mov bx,[4] ;bx =_________
mov bx,[6] ;bx =_________
push ax ;sp =_________;修改的内存单元的地址是_____,内容为_______
push bx ;sp =_________;修改的内存单元的地址是_____,内容为_______
pop ax ;sp =_________;ax=________
pop bx ;sp =_________;bx=________
push [4] ;sp =_________;修改的内存单元的地址是_____,内容为_______
push [6] ;sp =_________;修改的内存单元的地址是_____,内容为_______
2.编写汇编语言程序,实现以下功能:将 073F:0100~073F:011f 这段空间当作栈,初始 状态栈为空,设置 CX=10H,DX=BCH,利用栈交换 CX 和 DX 中的数据,完成交换后将 CX、DX 中 的内容依次写入内存单元 20010H~20013H 中。
实验报告见小编主页~~