实验2 指令格式与寻址方式报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验2 指令格式与寻址方式
实验目的:熟悉汇编语言指令格式,掌握常用数据定义伪指令,理解各种寻址方式的应用。掌握调试工具Windbg.exe的使用。
实验要求:(1)通过调试程序理解常用数据定义伪指令的作用。
(2)通过调试程序理解各种寻址方式的应用。
(3)熟练掌握调试工具Windbg的使用方法。
实验内容:
1、上机汇编连接例4-1
.386
.model flat,stdcall
.stack 4096
.data
cr equ 13
var word 20 dup(?)
.code
start:
mov al,0
mov ax,190
mov eax,-1
mov eax,0ffffffffh
mov eax,offset var
mov eax,sizeof var
mov eax,length var
mov eax,type var
mov eax,$
mov eax,cr
ret
end start
(1)用Windbg调试例4-1,用Disassembly窗口察看机器码。指出指令的中操作数。
(2)在Windbg下单步执行例4-1,观察eax寄存器的内容变化情况。
2、上机汇编连接例4-8
代码:.386
.model flat,stdcall
.stack
.code
start:
mov eax,0
jmp start
quit:ret
end start
(1)用Windbg调试例4-8,用Disassembly窗口察看机器码
(2)在Windbg下单步执行例4-8,观察EIP寄存器内容的变化情况。
(3)分析指令jmp start的机器码的含义。观察这条指令执行前后EIP寄存器内容的变化。
Jmp start 对应的机器码是EBF9H,两个字节,这条指令所在的地址是00401015H。紧接着的这条指令的下一条指令ret所在的地址是00401017H。所谓当前EIP寄存器的值应该是00401017H,目标地址start 的偏移地址是00401010H,所以位移量=00401010-00401017=-7,机器码EBF9中包含着位移量-7的补码F9,EB是操作吗
3、上机汇编连接例4-9
.386
.model flat,stdcall
.stack
.data
address dword quit
.code
start:
jmp address
quit:ret
end start
(1)用Windbg调试例4-9,用Disassembly窗口察看机器码
(2)在Windbg下单步执行例4-9,观察EIP寄存器内容的变化情况。
(3)察看内存address的内容,观察它与地址quit的关系。
(4)观察指令jmp address执行前后EIP寄存器内容的变化。